Fórum témák
» Több friss téma |
Sziasztok!
Ezt a programot szeretném UPP628-as programozóval beégetni:
A program szépen lefordult, az égetés után azt írja "Konfig word hiba". Az ellenőrzésre pedig ezt: "Kód hiba itt:0x0000 Kiolvasva 0x3FFF, ellenőrizva: 0x2FF2" Mi lehet az oka? Köszönöm!
Nem ismerem ezt a programozót... Ha csinálsz egy törlést és utána visszaolvasod, akkor mi van a config word-ben?
Töröltem, majd visszaolvastattam és mindenhol 3FFF szerepel. 0x2007:3FFF.
Próbáld ki hogy a konfigokat végig kikommenteled, újrafordítod, akkor így besül-e...
Esetleg utána egyesével visszarakod a konfig sorokat és mindig próbálsz egyet sütni...
Minden verzióra ugyanez a hibaüzenet jön...
Másik programozóval meg kellene próbálni, akkor kiderül hogy a pic, vagy az égető/sw a rossz
Köszönöm. Egy 10 perces ki/bekapcsolással most hibátlanul lefutott.
Most próbapanelen próbálom, de teljesen másképp működik, mint a program. 3 db 1,5 V-os elemről táplálom, stabil 4,71 V. Lehet, hogy kevés?
Vagy lehet, hogy a próbapanel nem mindig érintkezik biztosan? Vagy kipurcant a PIC? Ha a kapcsolót be se kapcsolom, akkor is van a 9. kimeneten feszültség. Hol 3,8 V, hol 0 V, ingadozik.
Húzd fel a bemenetet 1 - 10 kΩ-os ellenállással. 4.71 V-nak bőven elégnek kell lennie.
És gondolod, hogy ezzel a zűrzavaros működés meg is oldodna?
Egyébként 4k7 ellenállással fel van húzva.
Ha a PIC rossz, akkor már az égetés ellenőrzésekor felmerül hiba, vagy előfordulhat olyan is, hogy hibátlanul beég a szoftver, de fizikailag mégis hibás a PIC?
Nem közöltél kapcsolási rajzot, az ilyen hibás működések egyik alapja általában az, hogy lebeg a bemenet.
Ha a programozáshoz használt lábak működnek, attól még a kontroller egyik-másik portja lehet hibás. Egyszerűsítsd le a programot a végletekig. Ha a bemenet magas, a kimenet is magas, ha a bemenet alacsony, a kimenet is. Ezzel ellenőrizhető egy ki- és bemenet páros.
Köszönöm! Ez önmagában is egyszerű volna, ha egy nyomógombot benyomunk, akkor meghúz egy relé tranzisztoron keresztül, majd 1 s után egy másik relé is meghúz. Utána kikapcsol a második relé, majd az első is. Ha hosszan nyomjuk a nyomógombot, akkor egy LED világít.
De nem működik, ezért leegyszerűsítettem egy nyomógombra és egy LED-es kimenetre, amit az első relé helyére tettem. De gombnyomás nélkül is világít a LED, hol erősebben, hol kevésbé. Ahogy a programban is látszik csak egy bemenetet hagytam bemenetnek, a többi kimenet. A nyomógombot bekötöttem a bemenetet (RA0) és + 5V-ra közé, és a földet összekötöttem a bemenettel 4k7 ellenálláson át. Valószínű kuka a kontroller?
Ettől sokkal egyszerűbb programot készíts, a feltöltött eléggé zavaros.
Sziasztok!
CRC32 -t próbálok ellenőrizni pic24 -el, de nem kapok jó eredményt. Az adatokat, és a CRC -t ellenőriztem egy webes crc generátorral, ott jó eredményt kapok. De a C kódom valahol hibás, nem találom hogy mi a baj vele.
A csatolt kép kijelölt sorában látszik, hogy kijön a helyes 0x697AA651 ellenőrző kód, de nekem nem sikerül ezt az eredményt kapnom.
Szia,
A tömböd nem 177 hanem 176 hosszú. A rekord CRC-t a 172-175 index-ekről olvasod. Ezt javítva meg, kicsit más algoritmust használva működik:
Köszönöm, működik!
Sziasztok!
Valaki próbálta már UART-nál Asynchronous Address Mode-t. Úgy olvastam, ha 9. bit be van állítva, akkor címet vár ellenőrzi is, hogy helyes-e a cím, ha pedig 0 a 9. bit akkor adatot vár. Viszont csak akkor fogadja az adatot, ha előtte a cím egyezett az előre beállított címmel. Én most egy raspberry-ről küldök neki adatot, de úgy veszem észre, bármi amit elküldök neki, azt ő beolvassa, akkor is ha rossz címmel küldöm ki. Esetleg van valakinek erre ötlete, mit ronthatok el? (PIC18F26K83, az rpi-nél meg a paritást bitet billentgetem,hogy éppen címet v adatot küldök.)
Jó lenne kicsit konkrétabbá tenni a kérdést.
Csatolj egy ábrát (szkóp / logikai analizátor), hogy mit küldött a Pi és azt minek értelmezte a PIC (nyilván ez utóbbiról nem kell ábra, elég ha leírod).
Egy számot(címet) és egy karakter sorozatot küldök a PI-ről és azt egy az egyben beolvasom UART-on és ki is küldöm UART-on, amit a PI beolvas és kiírja konzolon. A cím és minden karakter úgy ahogy van visszajön a PI-re, akkor is ha rossz címmel kezdem. Ugye ha rosszul értelmezne bármit is, akkor végképp nem kéne beolvasnia semmit.
A hozzászólás módosítva: Szept 21, 2021
Délutánra tudok csak csinálni szkóp képet. Viszont addig segítenél, az miben fog előre elvinni, mit kell majd keresnem rajta?
Az első kép az cím byte (0x01) a második az adat (0x06) és 115200 a baudrate.
Szerettem volna látni, hogy valóban megvan a 9 bit.
Szélesebb képen jobban lehetne látni, így eléggé találgatósba mondom, de én leginkább start bit + 8 adat bitet látok a képeken. Nem tudom mit gondolsz erről? (Csak az ábra miatt): http://esd.cs.ucr.edu/labs/serial/serial.html
Szia!
Próbáltam szélesebb képeket csinálni és kijelölni mettől-meddig tarthat a jel. Elővettem egy másik PIC-et, ahol ugyanúgy beállítottam a 9bit-es módot és kiküldtem először egy address-t aztán egy data-t ezek láthatók a képeken, őszintén szólva, én először analizálok így UART jelet, de ahogy számoltam szerintem itt már meg van a 11bit(9+start+stop). Közben elég érdekes dolgot tapasztaltam, ha nem küldök ki cím byte-ot csak adatot, akkor a vevő PIC nem fogadja az adatokat, viszont ha kiküldtek bármilyen cím byte-ot mindegy, hogy egyezik-e a beállított vevő címmel, utána elkezdi fogadni a bejövő adat byte-okat. A datasheet erre vonatkozó részéről nekem az jön le, hogy a cím byte ellenőrzése hardware-esen történik, szóval most ötletem sincs, hogy mit lehetne ezzel kezdeni
Nah nem szóltam, világos a datasheet csak én vagyok sötét. A 2 PIC között sikeresen működik, rossz címnél eldobja az adatot. Már csak az RPI-ből kell értelmes jelet kicsikarnom és akkor működnie kéne azzal is. Köszönöm a segítségedet.
Nem ismerem az RPI-nek a soros port kezelését, de C#-ban "nem" tudsz 9 bites átvitelt csinálni a soros porton.
Pontosabban, tudsz csak a controller-ektől eltérően, C#-ban úgy lehet megoldani, hogy nem cím bit van hanem paritás bit, mikor címet küldesz mark (mindig '1') paritást kell állítani, mikor adatot akkor space-t (mindig '0'). |
Bejelentkezés
Hirdetés |