Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Annyit meg hozza tennek ahhoz amit a tobbiek mar elmondtak, hogy en ezt shiftelessel csinalnam ciklusban... Merthogy igy elegge pazarlos a kod.
A többiek már leírták a lényeget, én csak annyit tennék hozzá, hogy használd a szimulátort, rögtön kiderülnek a turpisságok!
Ha a goto-kat rendbe is teszed, akkor sem fog helyesen működni, mert mindig a W bitjeit nézegeted, és a W-be töltöd be a számot is, amit majd a SZAM1-be kipakolsz. Így a tesztelendő W-t az első megtalált bitnél felül is írod. A "movwf SZAM1" sorok után kellene egy goto a sok összehasonlítás legvégére, vagy a tesztelendő adatot nem a W-ben kellene tartanod.
Ezekre a turpisságokra utaltam!
Attila! Van kérdésed a szimulátorral kapcsolatban?
sziasztok
valaki adjon útbaigaztást pic <---> max232<--- > pc ezt a kommuniációs sémát akarom megvalósítani a pic ről tudok küldeniadatot a pc re, de a pc ről fogadni nem tudok ez az alaphelyzet . miért nem? lehet, hogy valamit rosszul konfiguráltam fel? lehet,hogy a hiperterminálall nem is lehet adatot küldeni, mert én azon keresztűl szándékoztam . vagy mia fene a hiba?
18F4520 - RR3 manchester modemet kötöttem össze. A PIC beállitva. MikroC-ben hogy tudom egy LCD-re kiiratni hogy mit vett a vevő?
Aki konkrét infóval tudna szolgálni kérem válaszoljon!
PIC Microcontrollers - Programming in [Mikro] C
4.fejezet: EXAMPLE 10 - Using LCD display Bővebben: Link Idézet: „lehet,hogy a hiperterminállal nem is lehet adatot küldeni” Hogyne lehetne! Pont arra való, hogy küldjön is, meg fogadjon is.
Sziasztok!
Egy olyan kérdésem lenne, hogy hogyan tudom megtenni azt, hogy a PIC egyik lábán sorosan kiküldök egy 8 bites valamit amit egy másik lábon fogadok? Hogyan tudok egy bitre hivatkozni? És a beolvasás hogyan megy? A shift regiszter jónak tűnt de nem megy. A kódot mellékeltem, mert nagyon hosszú! A válaszokat előre is köszönöm!
Köszönöm a linket, nem az LCD kezeléssel van probléma hanem a vett adatok dekódolásával.
Akkor hogyan lehet a felvetett feladatot megoldani?
Mert a maszkolás nem nagyon jött össze.... Az assemblyhez még nem értek ilyen szinten, sajnos...
Esetleg keresel egy olyan PIC-et amiben 2 hardweres sorosport is van. Talán így a legegyszerübb.
A Telecontrolli RR3-as vevő moduljáról van szó? Az olyan adatokat vesz, amilyeneket egy adómodullal te küldesz neki. Ahogy az adó oldalon kódolod, a vevő oldalon úgy dekódolod. A manchaster kódolás egy módszer a kommunikáció során előforduló adatvesztés felderítésének. Olvastad Topi cikkét?Bővebben: Link
Ne viccelj!
Annyit szeretnék, hogy kiadom a jelet az egyik lábon és a másikon visszaolvasom. Azért mellékeltem a kódrészt is... Idézet: „hogyan tudom megtenni azt, hogy a PIC egyik lábán sorosan kiküldök egy 8 bites valamit amit egy másik lábon fogadok?” Úgy semmiképp sem, hogy az egyik lábon kiküldesz nyolc bitet, és utána kezded el olvasni! Addig szerinted hová lesz a jel? Ha a szoftveresen megvalósított I2C kommunikáció érdekel, akkor nézz szét a C18 fordító telepítési könyvtárában! (MCC18/src/pmc_common/SW_I2C mappa) Idézet: „Attila! Van kérdésed a szimulátorral kapcsolatban?” Nem, nincs! Egyenlőre elvagyok úgy, hogy hibakeresésként a programkódba olyan helyekre ahol feltételezem hogy elakadt a program, oda beillesztek egy goto START2-t. És ha futófényt látok a LED-eken akkor tudom hogy ott akadt el a program ahová beszúrtam a goto START-t.
Én inkább ezt a programot szoktam használni soros kommunikációra: Hercules
hát, így sem tudok adatot fogadni a pic el, de köszönöm, hogy segítnei próbáltál!
Utánaolvastam azoknak amiket írtatok. Ez alapján ét is írtam a programocskámat, de így is nyolcat ír mindig a SZAM1 regiszterbe.
Assemblerben, és minden kiadot bitnél viszgálni kell a bemenő bitet is.
Én ebben a részben nem látok hibát. Csatold a teljes forrást!
Milyen értékű kondikat használsz a MAX232 IC-hez?
Nálam 1µF -os kondikkal kapásból összejött a kommunikáció. Nah meg a polaritásra is figyelj!!
Szia!
Több probléma is van a programoddal: - Megszakítási rutin kezdeténél a W és a STATUS regiszter mentése hiányzik. Automatikus mentés használatánál valóban elhagyható. - Megszakítási rutin végénél a STATUS és a W regiszter visszaállítása hiányzik. Automatikus mentés használatánál valóban elhagyható. - A megszakítási rutinban előbb vizsgáld meg, mi okozta a megszakítást, aztán végezd el a kiszolgáló műveleteket:
- A megszakítási okot csak azért nem töröljük ki, mert a vételi regiszter olvasása ill. az adási regiszter írása törli azokat. - A megszakítási rutinból a retfie utasítással kell visszatérni. Ha nem végeztél mentést - rábíztad a kontroller automatikus mentésére, akkor retfie 1 - A megszakításos uart kezeléshez járna két buffer is, amiben átmenetileg tárolódnak a vett illetve az adásra váró karakterek. Szia
Mindenhol csereld ki a
Ugyszinten a forrasod tobbi reszeben mind csereld ki a
Lefuttattam a szimulátorban, és rögtön kiderült, hogy a btfss W,0 sorban a W-t a fordító nem a W regiszternek értelmezi. A W regiszterre a WREG címkével hivatkoz ott, ahogy a regiszterek nevét kell megadni.
A movf SZAM1,W nem ilyen, de a clwf WREG igen! Remélem érted mi a kettő közötti különbség! A szimulátort jó lenne megtanulnád, nem olyan bonyolult! Csatolok két képet...
Igen, hat ugye a W az egy egyszeru EQU-s deklaracio az INC file-ban, es ha az 0, akkor az a 0-s memoria cimet fogja megcimezni
Most nézem ,hogy a két kép 0bájt lett! ?
Próbálom újra: ... most jó...
Ezt a szimulátort kipróbálom a közeljövőben, mert nem tűnik túl bonyolultnak.
Ezt így jól gondolom hogy működik?
Közben rájöttem, hogy a programom sok más sebből is vérzik amit eddig nem mondtatok. Például eddig hogyha a nyomógombot lenyomva tartottam sokáig, akkor a program tovább futott és ugyan azt a számot gyorsan eltárolta a másik regiszterbe is. Bele kellett írnom, hogy csak akkor menjen tovább ha felengedtem a gombbot. Meg volt még benne pár hasonló hiba... Elég elvont, nem túl emberi gondolkodásmódot követel meg a PIC programozás. És basszus... ez tényleg inkább egy elektronikai alkatrész, s nem pedig egy számítógép. |
Bejelentkezés
Hirdetés |