Fórum témák
» Több friss téma |
Így van. Nem titok: nincs időm vele foglalkozni, van sok más fizetős/határidős melóm és ezért gondoltam hogy megoldatom mással.
16f628-ra van egy komaparátoros programom... Illetve volt. Komaparátorral csináltam egy ADC-t. De neked nem 628hoz kell.
Sziasztok!
Segítséget szeretnék kérni pic16F628A programozásával kapcsolatban. Konkrétan az asm nyelvről lenne szó. Aszinkron kommunikációval küzdök, a kérdésem az lenne: hogy tudom assembly-ben megállapítani hogy milyen adat érkezik? Amíg csak azt kell eldönteni hogy 'A' jött-e vagy nem addig rendben van, de nekem kb. 10 különböző karaktert kellene felismernem, és mindegyikre másként reagálni. Segítségetek előre is köszönöm! Üdv!
Goooogle a barátod segít: PIC assembly switch case
A hozzászólás módosítva: Máj 13, 2014
Szia!
Talán így:
Sziasztok!
Foxi63, Hp41C! Köszönöm a válaszokat, így már könnyebb, bár az angol nyelv tudásom nem tökéletes. A hiba oka az volt, hogy a vett adatot egyből beolvastam a W-regbe, majd kivontam belőle egy értéket és ellenőriztem a STATUSreg Z bit-et. Most úgy csinálom hogy a vett adatot kimentem egy Temp-be, és abból vonom ki az értékeket egymás után, minden alkalommal ellenőrzöm a Z bitet. Így már megy.
Mottó:
B xor B = 0 tehát A xor B xor B = A A xorlw művelet is állítja a Z bitet. Ha azt kell vizsgálni pl., hogy "A" vagy "Q" karakter jött és a W regiszterven van a vett karakter:
Sokkal rövidebb lehet egy sokfelé történő elágazásnál. Másik megoldás: Ha egy tartományban levő kódok jönnek pl. A..H közötti karakterek:
A hozzászólás módosítva: Máj 14, 2014
Uraim,
Timer0-val szeretnék egy 16bites megszakítást kérni, de valamiért nem megy. Mi lehet a gond?
Aztán egy függvényben indítanám el:
PIC18F4550-es kontrolleren kellene futnia. Ha átállítom 8bites módra a timer0-t akkor egyből megy, de az nekem nem jó sajna... 20MHz-es külső kristály van csatlakoztatva és így elvileg 1másodpercenként generálna megszakítást. Nem működik pedig elvileg kellene..
Sziasztok!
PIC32MX44F512H-s mikrokontrollert szeretnék életre kelteni, tud valaki segíteni, az alapbeállításoknál, hogy milyen h fájlokat kell includolni, és hogy milyen szintaktikát kell írni a program elejére, hogy működjön a fordító. Köszönöm szépen! A hozzászólás módosítva: Máj 14, 2014
A megszakításban feltöltöd a TMR0L és TMR0H-t?
Fontos, hogy először a TMR0H-t, aztán a TMR0L-nek adj értéket, az adatlapban a "TIMER0 BLOCK DIAGRAM (16-BIT MODE)" résznél az ábrán látható, hogy TMR0L regiszter írásra mozgatja be tulajdonképpen a TMR0H értékét a valódi TMR0H regiszterbe.
Üdv!
Kezdem Érteni, de még rágódnom kell rajt. Köszi
Én alapértelmezetten kétszintű megszakítást használtam a PICCOLO projektben, de akkor a INTCON2bits.TMR0IP=1; beállítás is kellett (a magas szintű megszakítás választásához).
Köszi, a segítsétek.
Most már megy. zenetom : természetesen megszakítás előtt töltöm fel. Most már megy. Köszi a szándékot. A hozzászólás módosítva: Máj 15, 2014
Idézet: Természetesen megszakításban is újra kel tölteni (erre vonatkozott Zenetom kérdése), különben nem 1000 hanem kb. 1400 ms lesz a periódusidő.„természetesen megszakítás előtt töltöm fel.” Mellesleg a Timerbe nem 18 661-et akartál írni?
Timer_period = 1 s, Fcy = 12 MHz és PS = 1:256 esetén az előtöltés értéke: Timer = 65536 - 12 000 000/256
20MHz a kristály.
Minden megszakítás elején újra kell tölteni a
regisztereket? Illetve még egy kérdésem lenne: Miért nincs a LATC port RC4 és RC5-ös lábak definiálva a gyári p18f4550.h állományban? Ezek valami speciális lábak melyeket nem lehet használni? Vagy nem ajánlott?
A hozzászólás módosítva: Máj 15, 2014
Idézet: „Minden megszakítás elején újra kell tölteni a TMR0H, TMR0L regisztereket?” Nem muszáj, de akkor 65536 utasításciklust számol le, ami 12 MHz FCY és 1:256 előosztó mellett kb 1400 ms. Az kevéssé érdekes, hogy mennyi a kvarc frekvenciája, az a lényeg, hogy végeredményben mennyi a CPU frekvenciája (48 MHz), illetve az utasításciklus-frekvencia (12 MHz). Idézet: „Miért nincs a LATC port RC4 és RC5-ös lábak definiálva a gyári p18f4550.h állományban?” Gondolom azért, mert ezek az USB D+ D- ki/bemenetek. Ez elvileg digitális bemenet lehet, de max. 3,6 V-ig adható rá feszültség (5 V-tal tönkre lehet tenni...). Ezek a lábak GPIO kimenetek nem lehetnek. Mellesleg RC3 sincs definiálva, mert annak a helyén van a VUSB kivezetés.
Igen közben én is rájöttem, hogy USB portok.
Akkor ezeket a biteket kihagyom. És köszi az infókat.
Sziasztok!
Kérlek segítsetek beüzemelni egy PIC12F683-ban a TIMER1-et! Szeretném, ha minden túlcsorduláskor megszakítást eredményezne. Egyelőre ezt egy led villogtatásával próbálgattam, de nem sikerült sajnos. A TIMER0-val sikerült, de a 16bit miatt kellene a Timer1. Köszönöm előre is! Jelenleg ez van, de nem csinál semmit:
A hozzászólás módosítva: Máj 15, 2014
Talan igy mukodni fog
Köszönöm, hogy megnézted!
Beletettem a periféria megszakítás engedélyezését, ahogy írtad, de sajnos nem változott semmi. Ha van még valami ötleted, vagy bárki másnak, annak nagyon örülnék!
MPLAB szimulatorban probald ki a mukodeset. Ott konnyu megtalalni a hibat.
A 21. es a 44. sorokat kommenteld ki. Nem szukseges a bankvaltas.
Teljesen igazad van és ktamas66-nak is! Nem mentségül, de ezeket már kínomban rontottam el.
Lényeg, hogy most remekül működik hála Nektek! Köszönöm!!!
De mi volt végül a hiba oka?
A hozzászólás módosítva: Máj 15, 2014
Szerintem az amit icserny írt neki, kellett a peripherial interrupt is.
De amit icserny írt, az csak a magas prioritás beállítására vonatkozott. A periperial interrupt pedig a kód alapján be van kapcsolva. Valami huncutság van itt a dologban.
Annyira nem néztem át, most épp a saját kódommal vagyok elfoglalva
És éppen min dolgozol, ha szabad kérdezni?
Egyébként nekem is programozni kéne, csakhát már megint este 8 van...
Az amit te is mondtál, hogy minden megszakításnál újra fel kell tölteni a számláló regisztereket és persze az is hibádzott amit icserny említett.
Magas megszakítást engedélyezni kellett |
Bejelentkezés
Hirdetés |