Fórum témák
» Több friss téma |
Félre értelmeztelek. Tehát semmit sem sikerül megtartani? Azaz vagy momentary vagy toggle módban megmarad?
Igen. Biztosan hardwares hibája lehet. Nem érezheti a PIC, hogy mi van a kimenetén? Vagy esetleg, hogy 38Khz es vevő helyett 36Khz-es van benne? De akkor szerintem nem is értené a jeleket.
Akkor mit is szeretnél? Nem hiszem a led megfelel a vivő sem hinném hogy annyira kritikus. De ha kapcsol nem értem mi a baj.
Csak akkor fog tovább lépni, ha érvényes (12 bites) kódot kap. A saját adójával próbálod?
Csak annyit, hogy mi miatt lehet az, hogy egyszerűen nem lehet "végig léptetni" a programozást. Mondjuk légszerelet állapotban van az egész össze dobálva, mert csak ki akartam próbálni, hogy jó lesz-e de nem tudom mi oka lehet, mert a távirányító 3 gombjára rá tudom tanítani. Le vannak írva a lépések angolul és a 6. lépésnél nem jut tovább.
Ja értem, nem egy Sony TV távirányítójával próbáltam. akkor ez lesz a probléma. Nem baj, meg építem az adóját, azt meg rá tanítom a távirányítómra.
Figyelj, mert jó lehet a sony-val is. Ha jól emlékszem 9 és 12bites rendszere van. Ha van otthon más távid, azzal is kipróbálhatod...
Egy univerzális silvecrest távirányítóm van még, ebben van 1x valahány különböző sony TV-hez végig nézegettem, el fogadja mindegyiknek a kódját, mert a led-ek ki alszanak, csak a kimenetet nem tudom beállítani. Viszont más távirányítóval nem is lép tovább. Ja és halványodik a kijelző háttér világítása, amikor jelet ad és a sony kódjával sokkal gyorsabban vibrál, mint a többi márkával. az 1. kimenetre tettem tranyát, meg relét rajz szerint ellenállással stb., de akkor nem is érzékelte a távirányítót, ebből gondoltam azt, hogy nem a távirányító hibája miatt van, még szenvedek vele egy kicsit, aztán össze rakom az adóját egyszer.
Hali!
Idézet: „Ha a soros portot nem akarod matatni a magasságos printf, vprinf stb függvényekkel, hanem beéred az _usart_putc(c) és _usart_getc() függvényekkel, akkor az ütközéseket egyszerűen meg lehet szünteni, ha az ...usart.h-ból kiirtod az alábbi sorokat:....” Sikerült összehozni, tanácsaid alapján egy projekten belül az USB és USART egyidejű működését. Az USART hurok teszt működik. PC-röl USB-n küldött adat a hurkolt USART-n (RX/TX) USB-n keresztül vissza érkezik a PC-re. A blokkoló típusú _usart_putc(c) függvényt átalakítottam, hogy üres input buffer esetén ne várakozzon. (fusson tovább a program). Remélem nem követtem el hibát, úgy tűnik működik rendesen. Az USARTDeviceTasks() hívását a főprogram alacsony prioritású megszakítás kiszolgálásába tettem. Még egyszer köszönöm a segítséget. Üdv.
Az elég gyanúsan szerintem a távirányító gond lehet. Gyorsabban azért villog mert a Sony sokkal töb bit-tel operál, vagy és nagyobb a vivő fekrevenciája. Én ezt adó vevő szinten építettem meg, teljesen jól működött, egy 100 forintos nagyságú panelen van mind2.
[Off]Szia. Ha valamit másolsz, aminek a működéséről gőzöd sincs, illik hűen követni a rajzot. Az utolsó ellenállásig bezárólag. De ennek úgy érzem, amúgy sem sok köze van a pic kezdőknek témához...
Segítség!
Még a PCLATH írása gondom. Hogyan lehetne a főprogramban címezni a nevezett regiszetert, hogy a PCL-hez adáskor ne omoljon össze a program? a tábla kezdőpontját a PCLTH regiszerbe kellene írni? Ha igen hogyan?
Értem! Köszönöm, akkor meg építem az adóját is!
Szia!
A táblázatodra remélem vigyáztál, nem nyúlik át a laphatáron vagy betartod a HP41C kolléga által leírtakat! A PCLATH kezelése:
Vigyázz, mert visszaugrás után a PCLATH tartalma marad, tehát az újabb ugró utasítás előtt módosítani kell! Még annyi, hogy mivel a RETURN a teljes címet használja, ezért a CALL utám mindig visszatalál! Steve
Elküldöm a programot, ha megnéznéd jó lenne. Nem tudom mennyire érthető vagy látszika gond.
Ebben a kódban és sok hasonlóban sem tudom mi a highCounTable amit a pclath-ba kellene tenni. a file gondolom az én saját értékem.?
Leírom mennyit értek. Ha 256 "sornál több van és úgy adok érteket a pcl-hez akkor változik a pch, amit nyomon lehet követni a pclathban, amit lehet írni és olvasni. Nem értem azt sem a Hp41C által használt táblátzat kezelésben a táblázat dt utáni 6 értéket, hogy azok mit adnak.Én csak a retlw -s visszatérésekkel foglalkoztam.
A dt direktíva retlw utasításokat fordít...
Az index az ugrás értéke? És a num?
Az is zavaros a példaprogramban, hogy az indexet végtelen ciklusban a főprogramban növelni kell? Aztán Xorolni a w-t? és ha 0 törölni az indexet?? jááj nagyon nagy a sötétség.
Szia!
Az index egy átmeneti változó, amibe a tábla indexét mentjük el ideiglenesen: Az indexet a W regiszterben kapja az eljárás, de a W kell a PCLATH beállításához. Ha ütközik a neve nyugodtan nevezd át. A addwf PCL,f nem kezeli a 7. és 8 bitek közötti átvitelt, így ezt programból kell megcsinálni. - Beállítjuk a táblázat kezdőcímének felső byte-ját a PCLATH -ba. Elvégezzük az összeadást, ha átvitel lenne a felső byteba, növeljük a PCLATH értékét, aztán lehet a táblázat indexedik elemére ugrani. A num egy címke, a táblázat 0. elemének címe. Sajnos a kapkodásban elírtam... Bocsánat.
Tehát ha ennyi a programom,azaz beteszem ezt a table címke elé.
Akkor mindig az 5. retlw-re ugrik? És az alsó és a felső byte az a programban elhelyezett táblázatom tartomonyának címe? Amit honnan látok, hogy mi az értéke. Bocsi, biztosan egyszerű lesz ha valamikor megértem.
Igen. A low() és a high() egy-egy beépített függvény, ami az argumentum alacsony ill. magas byte-ját adja vissza. Neked nem kell látnod a num értékét, a fordító számolja ki. Egyébként állítsd be a MpLab SIM -et debuggernek és lépésenként végrehajthatod a kódodat. Ha a megszakítási rutinban a PCLATH regiszter értékét meg kell változtatnod, ne felejtsd el kiszolgáló rutin elején menteni, kilépés előtt visszaállítani.
Szia!
Idézet: „És az alsó és a felső byte az a programban elhelyezett táblázatom tartomonyának címe? Amit honnan látok, hogy mi az értéke.” Ezzel a módszerrel a fordító behelyettesíti, erre szolgál a low és high direktíva, jól gondoltad. Ha Te is megakarod tudni, akkor az MPLAB View menüpontjában nézd meg a Program memóriát és ott láthatod, hogy melyik címen mi van letárolva, azaz megkeresheted a táblázatod címét is! Nagyon ajánlom Neked a szimulátor használatát, mert akkor soronként futtatva láthatod, hogy mit csinálnak az utasítások a PCLATH és PCL regiszterekkel ( szerintem ez a legjobb módja annak, hogy megértsd!) ! Ha kell még segítség, írj, úgy látom HP41C kolléga már adott jó támpontokat! Steve u.i. Most látom, hogy már kaptál választ!
El van a pclath mentve. A high és a low -ot az Mplab 8.84 nem értelmezi ezeket a beépítet fügvényeket. Missing argument(s)
Nem léteszik... Már ősidők óta használom. Ilyen formában kell használi: low(num) vagy high(num). Sőt 18F -ekhez van egy harmadik, az upper()...
pl. sublw low(cimke1) - low(cimke2) + high(address >> 2) Missing argument - hiányzó argumentum...
Oké! A numot nem írtam , most megy de láthatóan vibrál a kijelzés. Ha megszakítás is van, akkor meg mégjobban, szinte nem is látszik, pedig el van mentve a pclath.
Kedves hozzáértők...
Ha két PIC RX és TX lábait összekötöm keresztben MAX232 nélkül akkor kommunikálniuk kell egymással? Hardveresen működnie kell?
Azt vettem észre hogy bizonyos pontokon elhelyezett nop utasítás működőképessé teszi a programot. Van valami várakozási idő ebben a rutinban, amit jobb ha kivárok? a nop utasítások a table rutin előtt van..
Igen. Ha a két pic tápfeszültsége eltér vagy az egyik tápja kikapcsolható, akkor kell valami illesztés is.
|
Bejelentkezés
Hirdetés |