Fórum témák
» Több friss téma |
Esetleg 16F1614/15, vagy 16F1618/19? Math Accelerator van bennük.
Ebben HEF van. Azt ugyanúgy kell írni mint a sima FLASH-t nemde? Nem szimpatikus. Elmenteni a lapot, törölni aztán visszaírni a változott adatokkal.
Köszönöm, jó lett!
Kellemes ünnepeket Mindenkinek! Üdv: Máté
Igen, úgy néz ki. Sajna ezt nem is figyeltem.
Az előző oldalon kezdtem el kérdezősködni pic eeprom írása és olvasása problémája miatt, ami végre megoldódott.
Az a helyzet, hogy eléggé el nem ítélhető módon figyelmetlen és felületes vagyok. Működik a mikroc beépített eeprom írója és olvasója. Ott követtem el a hibát, hogy a // for PIC18 void EEPROM_Write(unsigned int address, unsigned short data); // for PIC18 unsigned short EEPROM_Read(unsigned int address); változók deklarálásánál nem vettem figyelembe a típusmódosítók használatának szükségességét. Kijavítva a hibát szuperűl működik. Még egyszer köszönöm mindenkinek a törődést és a segítséget.
Hali!
Biztos 8 bites kell? esetleg nézd meg a PIC24FV32KA sorozatot 17-Bit x 17-Bit Single-Cycle Hardware Fractional/Integer Multiplier , és van eepromja
Az PIC32MK-ban van eeprom de min 64 labas es hosszu az erata.
Ha megis a 32 bit fele huznal.
Igen köszönöm, azt én is néztem, de verébre lövök, felesleges az atom
Meg nem akarok szívni a mi működik mi nem az új MCU-ban című problémákkal
Sziasztok!
Már a szemem kiesik nem látom a hibát. Ha a TIMER sort kiveszem kapcsol a relé kimenet. Ha benne hagyom nem kapcsol. Mi a hiba? Segítsetek kérlek.
Szia!
Mit jelent a Timer sor kivétele? Csak a BSF GPIO,0-t ?
Csak ötletek: nem fut ki a Watchdog?
Másik ötlet: a program elég egyszerűnek tűnik. Szimulátorban lepróbáltad? Ott működik?
Miért kell a hardver osztó/szorzó? Sebességkritikus az alkalmazás? (Szoftverből végezve lassú lenne a számolás?)
Szia!
Ha a TIMER rutinból bár mindkát GPIO,0 kiveszem kapcsol a relé. Ha mindkét Delay-t kiveszem működik a relé. Ha bármelyikből csak egy is benne van nem megy. Viszont addig eljutottam hogy a Delay-ok 0x04 -el töltve még kapcsol a relé. 0X05-el már nem. Szimulátorban szépen fut.
Örülök ha így meg tudom csinálni. Egyébként elég pontosnak kell lennie.
Próbáld ki úgy, hogy a __config sorban a WDT_ON -t kicseréled WDT_OFF -ra.
Szia!
A CMCON0 a 0-s bankban van, tedd így :
Igazából lehet, hogy elég lenne szoftverből is, de nem volt időm az időzítéseket számolgatni, így egyszerűbb volt, a költségvetésbe meg belefért.
Sziasztok!
Kicseréltem a kontrollert és működik. Köszönöm szépen a segítséget. Azért még megkínzom a rossz pic-et...
Sziasztok!
Egy 4*20 karakteres LCD-re szeretnek késziteni egy kodot. Megy az inicializalas,es sikerult megcsinalni, hogy ellenorzi a karakterek szamat es sort novel, ha szukseges. Az a problemam, hogy eleg sok menupontom lenne, es nem akarok mindegyikre egy kulon kiiro rutint kesziteni, mert borzalmasan hosszu a kod. (assembly) A PIC 16F877A, a kijelzo 8 bites modban hd44780 kompatibilis. Most a szovegeim igy vannak letarolva:
A meghívása LCALL-al történik, mert szeretnem ha nem lenne gond ha lapok kozt lehetne hivni- Most a LCALL LCD_T1 -et kellene nekem, ugy atalakitani, hogy a LCD_T1 memóriacimet egy változóba betehessem, es arra hivatkozzak valahogy. Mert igy ha x számu szovegem van, akkor a valtozoba csak beteszem eppen melyiket szeretnem kiiratni igy eleg lenne egy kiirato resz. Nagyon szepen koszonom a segitsegeteket, üdv István
Szia!
Koszonom a valaszodat, ki fogom probalni! Boldog karacsonyt mindenkinek, udvozlettel István
Esetleg egy Nextion kijelző? Rengeteg menüpont, információ jeleníthető meg rajta, és még adatbevitelre is használható. Két lábat használ fel a PIC-ből (Rx - Tx ). És tán nem is sokkal drágább (kb. 12Euro 2,4"-os) mint egy 4*20-as LCD.
Sziasztok!
Abban szeretném kérni a segítségeteket, hogy az alábbi programrészletben miért "téveszt" a PIC? Típus: 18F26K22. Mert biztos vagyok abban, hogy nem téveszt, de én sajnos nem találom a hibát... Röviden... Van egy enkoder, ami POZICIO változót növeli vagy csökkenti 1-el, 0-100 között. POZICIO értékének megfelelően kiolvassa a 2 db táblázatból az ott megadott értékeket. 1. táblázat: ezresek és százasok 2. táblázat: tízesek és egyesek Ennek megfelelően beállítja az alapjelet. FCV_OW_CRC1=CRCTABLE1[FCV_POZICIO]; //ezres és százas FCV_OW_CRC2=CRCTABLE2[FCV_POZICIO]; //tízes és egyes OW_CRC = (OW_CRC1 * 100) + OW_CRC2 Alapjel = OW_CRC Példa: POZICIO=50, akkor OW_CRC1=8 és OW_CRC2=0 OW_CRC=(8*100)+0 Alapjel=800 Ami a hiba, hogy a kiolvasásnál téved. Nem sűrűn, de téved. Ilyenkor az adott pozíció értékéhez nem jó alapjelet társít (számol). Amit észrevettem, hogyha téveszt, akkor mindig ugyanazt az alapjelet téveszti! És nem összevissza... Példa: Pozíció értéke - rossz alapjel - jó alapjel 52 - 930 - 820 54 - 940 - 840 55 - 945 - 850 49 - 915 - 790 47 - 905 - 770 Pl. ha többször úgy téveszt, hogy pozíció értéke 55, akkor MINDIG a rossz alapjel 945! TÁBLÁZAT: //ezresek és százasok rom char* CRCTABLE1 = { 0,0,0,0,0,1,1,1,1,1, 2,2,2,2,2,3,3,3,3,3, 4,4,4,4,4,5,5,5,5,5, 6,6,6,6,6,6,6,6,6,6, 7,7,7,7,7,7,7,7,7,7, 8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,10, 10,10,10,10,10,10,10,10,10,10, 10 }; //tizesek és egyesek rom char* CRCTABLE2 = { 0,20,40,60,80,0,20,40,60,80, 0,20,40,60,80,0,20,40,60,80, 0,20,40,60,80,0,20,40,60,80, 0,10,20,30,40,50,60,70,80,90, 0,10,20,30,40,50,60,70,80,90, 0,10,20,30,40,50,60,70,80,90, 0,5,10,15,20,25,30,35,40,45, 50,55,60,65,70,72,74,76,78,80, 82,84,86,88,90,92,94,96,98,0, 2,4,6,8,10,12,14,16,18,20, 22 }; A hozzászólás módosítva: Dec 25, 2018
Sziasztok!
Segítségeteket szeretném kérni. Adott ez az egyszerű és program részlet ami működik is meg nem is, viszont nem jövök rá miért. Ha a kijelző RS vagy E lába közül az egyiket nem a PORTA lábára definiálom felül hanem pl. PORTB vagy C és természetesen kötöm is fizikailag, akkor működik a program és kiírja az adott szöveget. Ha viszont az E és RS is egy egy PORTA lábon van akkor semmi sem történik. Tesztelve élőben és szimulátorban is. Mi ennek az oka én nem jövök rá?
Köszönöm a segítségetek!
Szia!
Az ADCON1 register rosszul van megadva. Add meg úgy, hogy ADCON1=14; Vagy biteként: ADCON1.RB1=1;ADCON1.RB2=1;ADCON1.RB3=0; Akkor az minden RA láb digitális lesz.
Átnézve a programot megtaláltam a hibát.
A táblázat olvasással nem volt probléma. Elsősorban az volt gyanús, hogy a pozíció értéke ha hibás volt, akkor mindig 14-el volt több, mint a valós. Ebből kiindulva beugrott, hogy a pozíció számának kiküldése előtt (Nextion kijelzőre) hozzá adok +14-et, hogy a megfelelő kép száma kerüljön kiküldésre,majd kiküldés után rögtön -14-et ki is vonok belőle. Viszont, ha a művelet közben (+14-et hozzáadva) jön az újabb megszakítás, akkor a pozíció értéke már 14-el több, mint kellene... Szóval szívattam magam, de tanultam belőle. További Kellemes Ünnepeket Kívánok! Péter
Szia!
Köszönöm a segítséget ADCON1=14; el működik egyből. Viszont most szeretném megérteni a 14-es decimális szám miből jött ki (1110)? Csatoltam az ADCON1 regiszter képét. És egy újabb kérdés "ADCON1.RB1" hol található milyen dokumentációban, ez így megadható? Nagyon régen tanultam PIC-et programozni és akkor is assemblyben. C nyelven csak amit össze tudok szedni tudást innen onnan ezért is a kérdések. |
Bejelentkezés
Hirdetés |