Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A tokozás:
P - DIP ("hagyományos" dual in line) SO - SOIC, Small Outline IC Ha más különbség is van (pl. lábkiosztás) az az adatlapból derül ki.
Most már értem mire gondolsz, köszi!
Viszont ez nem jelenti azt, hogy az USB-n is ilyen kis sebességgel jönnének az adatok. Tehát megint oda jutunk, hogy a CDC driver nem foglakozik a beállításokkal az USB sebességére vonatkozóan. Ha interface-nek használjuk a soros emulátort, akkor is csak a kimenő baudot határozza meg. Valószínű, hogy csak a baud értéke kerül átküldésre és feldolgozásra, a többi nem változik a sima CDC driverhez képest.
Ezt nem tudom, de amiket én írok, azok biztosan beállítják a kívántat. Kivéve ennél a CDC drivernél.
Valódi soros portnál igen, hiszen az alkalmazástól függ, hogy mivel akar kommunikálni, és akkor úgy állítja be, hogy a sebesség az legyen, ami annak az eszköznek megfelel, amivel kommunikálni akar.
USB-s soros portnál viszont a(z így vagy úgy) kiválasztott sebesség lényegtelen, hiszen az csak egy virtuális soros port, a CDC driver átalakítja USB kommunikációvá, a túloldalon meg a kontroller kihámozza, hogy mit küldött a PC.
Kiegészítve azzal, hogy a PC és a PIC között van kommunikáció a CDC driverrel(PIC USART nem játszik, mint ahogy az eredeti felvetésemben sem! Az csak úgy keveredett bele a dologba, ezért nem is értettem, hogy miről van szó.)
Idézet: „Tehát megint oda jutunk, hogy a CDC driver nem foglakozik a beállításokkal az USB sebességére vonatkozóan. Ha interface-nek használjuk a soros emulátort, akkor is csak a kimenő baudot határozza meg.” Igen, pontosan ezt jelenti, amit tegnap írtam.
Igazad van, ezt írtad, és akkor nem értettem, mert nekem eszembe se jutott volna, hogy USB-ből soros portot csináljak újra, mikor már bent van a PIC-ben az adat.
De az igaz, hogy ez egy MAX232-vel valós USB<->RS232 átalakítóvá válik, elektromosan is teljesen szabványossá. Sok eszköz követelné meg, és sok átalakító nem teljesíti! (Szóban ez kb. 2 perc lett volna kikommunikálni, itt egy nap! Nem túl hatékony ez a platform! )
Ok, megnézem. Ha mclr-ről leveszem a 10k-t, akkor ?újraindulgat? folyamtosan(az egyik láb sűrűn villog). Ha ráteszem, akkor a led "lefagy", de a timer-es interrupt még lefut utána, majd annak a ledje is "lefagy".
Az MCLR-en ott kell lennie a felhúzónak. Arra gondoltam, hogy az áramkörnek akkor is illene jól működni, ha a PORTx biteket írod a LATx helyett.
Idézet: „Az MCLR-en ott kell lennie a felhúzónak. Arra gondoltam, hogy az áramkörnek akkor is illene jól működni, ha a PORTx biteket írod a LATx helyett.” Nyilvan ennek az az elofeltetele, hogy nem lep fel ettol RMW hiba...
Ok, köszi.
Este majd beteszem a kódot, ha nem jutok vele semmire, meg a kapcsolást is.
Üdv!
Most kezdtem el LCD-t programozni, csak egyelőre nem megy. Mindent bekötöttem rendesen. Tápot megkapja, kontraszt beállítva, vezérlő lábak bekötve. Tudna valaki felrakni egy egyszerű alap progit, ami mondjuk kirajzol egy A betűt az LCD-re, meg csinál egy vezérlőutasítást is, pl. képernyő törlése. Azért kérem ezt, mert habár van leírásom az LCD írásához, olvasásához, de nekem nem működik. Ha lenne egy működő mintapélda, akkor az alapján már el tudnék indulni. Az LCD egy ACM1601, 1 soros 16 karakeres kijelző. RS, R/W, E, D0-D8. Köszi! Idézet: „kontraszt beállítva” Biztos? Mert legutóbb én is azt hittem. Ez volt a második, amit megnéztem. Hogy állítod a kontrasztot(rajz?)? A másik, hogy nem írod milyen nyelven, nem írod milyen PIC-re. A kódodat is feltehetnéd, mert ha tényleg jó a kontraszt, akkor biztosan nem jól csinálsz valamit.
icserny!
Köszi a linkeket! watt! egy 8kOhm-os trimmerrel van beállítva. Az LCD-n 8 karakter "teliben" látszik. Mplab-ot használok 18F452-est.
Szerintem az a gond, hogy a 27. sorban hiányzik egy vessző a kódban!
Ha teliben látszik, akkor szinte biztosan rossz a kontraszt. Én úgy emlékszem,hogy nem látszik ott teliben semmi jól beállított kontrasztnál inicializálás előtt...
Ez a szimulátor nagyon jó, de elolvastam a másik leírást is. Valószínű, hogy ott rontottam el, amikor az Enable-t nem állítottam vissza 0 alaphelyzetbe beírás után.
Köszi az infókat!
Esküszöm nem tudlak követni. És nem írtad milyen nyelven programozol.
Mplab-ban assembly? nyelven.
Tehát amit betettél képet, az az egész kód? Mert akkor nem csoda, hogy nem megy. Próbáld becsatolni az egész forrást, hogy legyen valami kiindulási alap.
Bocsi hogy soká tartott. Próbáltam megfelelő formába rendezni, meg javítottam is rajta.
Egyelőre még nem működik az LCD. Lehet hogy tényleg a kontraszttal van baj. 10-20KOhmos potit javasolnak én meg 8kOhmost raktam bele (csak ilyen volt). A progival kapcsolatban csak remélem hogy jó.
Azért nem működik, mert nem csinálod végig az adatlapban leírt inicializációs lépéseket. Érdemes elolvasni részletesen és úgy felépíteni a programot.
Azt is gondold át, hogy amiket egy-egy sor mellé megjegyzésként írtál, fedheti-e a valóságot.
Az a baj hogy nincs benne ilyen. Kerestem. Van pin kiosztás, hőmérsékleti adatok, időzítési adatok. Van egy írási időzítések diagram, meg egy olvasási és kész. Van még egy táblázat a vezérlőutasításokhoz, meg egy karakterkészlet. De az már nincs leírva, hogy hogy lehet beüzemelni. Ezért akartam itt segítséget kérni.
(Gondoltam hogy kell egy Display on utasítás, utána egy képernyőtörlés, ami a címet 0-ra állítja, majd egy karakter kiírása.) Letöltöttem már néhány adatlapot hozzá. AMC1601C, AMC1601B, AMC1601D. Nagyjából ugyanaz van mindegyikben. Az időzítéseknél volt az, hogy először az RS, majd RW, majd E, végül DB0-7 értékeket kell megadni, ilyen sorrendben. Lehet hogy a ciklusidő miatt kell bele majd késleltetés.
Amit watt írt, azonkívül hozzátenném, hogy a
bcf INTCON,2 movf W_SAVE,0 és hasonló dolgokat nagyon nem szeretjük. Van azoknak a biteknek szép nevük, tessék azt írni oda! Az adatlapban is ezen neveket emlegetik, az egyes regiszterek leírásánál meg a header fájlokban is le vannak írva, ha nem tudnád, hogy a bitet pontosan hogy hívják.
Elég trehányak az LCD gyártók az adatlapok terén, de használd ezt: Link
Ez igen! Ez már adatlap.
Nagyjából átnéztem. Érdekes, hogy 3+1-szer kell kiadni a Funkció beállítást mielőtt még bármit is csinálhatnék vele. Illetve figyelni kell a Busy fleget. A konraszt beállítást azt még mindig nem tudom hogy hogy kell beállítani. Köszi a leírást! Idézet: „konraszt beállítást azt még mindig nem tudom hogy hogy kell beállítani.” Adatlap, 37. oldal.
Én még egy problémát felfedeztem a kódodban amellett, amire a többiek már utaltak (időzítések, init lépések): a definiált kifejezéseidet nem jól használod.
Ha így definiálsz egy kifejezést:
akkor azt így kell használni:
és nem úgy, ahogy a programodban látom (BCF PORTA,EN). Ahogy te használod, úgy "BCF PORTA,PORTA,2"-re fog kifejtődni, aminek korántsem az lesz a hatása, amire számítasz (mellesleg minimum warningokat kellene kapnod emiatt fordításkor).
Üdv!
Az oldalt én is megtaláltam, csak nekem más fajta van. Táprészről van egy GND, +5v, és egy LCD conrast adjust kivezetés. Erre kell egy potit rakni, meg tápfeszt. A kérdés az, hogy melyik irányba és mennyire csavarjam. Ezt majd próbálgatással megoldom. |
Bejelentkezés
Hirdetés |