Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Újra, mert valahogy a módosítást elböktem...
Szóval az adc önállóan jól működik. De mivel egy relatív komplex egységről van szó, egyben kell jól működnie, így önállóan az adc tesztnek már nincs létjogosultsága. A sok teszt - és felületes debug (mikroProg) után arra a következtetésre jutottam, hogy talán az interruptok környékén lehet a gond. Erről próbálok szélesebb gondolatokat tőletek meríteni, persze egészen más megközelítésben akár. A hozzászólás módosítva: Szept 1, 2014
Ezt még át kell gondolni
![]() Idézet: „For device frequencies above 1 MHz, the device must be in Sleep mode for the entire conversion or the A/D accuracy may be out of specification.”
Én is lemaradtam a módosításról
![]() Amit még hozzá akartam fűzni: ha a TAD RC módban 4us, akkor egy Get_... 14*4+22=78us. Ezt hívod 5-ször = 390us + az egyebek. Ezt hívod 1ms-onként ![]()
Köszönöm!
Szóval ilyennel fogom próbálni: ADCON2, ACQT = 001 (2TAD) ADCS = 110 (Fosc/64) Így egy konverzió: 20 usec alatt lezajlik. Előző írásomban rosszul írtam, 64 MHz-en megy a PIC.
Igen, de belefér a 1 msec-be, nem?
![]() Változtatom nem RC ad clockra.
Sziasztok! Pic + lcd-s áramkörhöz kapcsolódó kérdésem van. Építeni szándékozok egy pic alapú rádiofrekis műszert. Amibe 2 X 20 karakteres kijelzőt jelölnek meg. Nekem viszont ugyanilyen, ámde 4 X 20 karakteresem van. Ha ezt a "nagyobb kijelzőt kötöm az áramkörre mi történik? Köszönöm segítségeteket! Üdv mindenkinek! Tibi
az áramkör linkje: Bővebben: Link A hozzászólás módosítva: Szept 3, 2014
Ha szerencséd van akkor minden módosítás nélkül fog működni, csak annyi különbséggel, hogy a második sor szöveg nem a második sorban hanem a harmadikban fog megjelenni, mert a 4x20-asnál másképp van a címzés.
Viszont ha mégsem működne akkor módosítani kell a programot...
kicsit megcsúszva, mert most tudtam érdemi teszteket elvégezni.
no, a TAD=8, Fosc/64 beállítással most nem dobott hibát, az idő majd mindent eldönt! ![]() köszönöm! van meg tranziens esetben "tüske", de azt kiszűröm, feltételezve, fizikailag ilyen nem lehetséges.
Köszönöm a válaszokat, már halvány elképzelésem van, és nézegettem példa programokat is. Elkezdtem írni egy modbus slave programot pic-re, aminek az RB portjait használom bemenetnek, RD portjait kimenetnek. Ami megzavart, az, hogy a modbus dokumentációban memória regiszterekre hivatkoznak mint adatforrásokra. Nos az én memória regisztereim a PORTB, és a PORTD. Innen közvetlenül olvasom ki és állítom be az állapotokat. Jól gondolom a megoldást? Erre gondol a protokoll?
Szerintem igen. A memória fogalma elég tág.
Elöször a PIC kezdőknek rovatba tettem fel a kérdésem de nem kaptam választ. Adott egy TLV5628C DAC konverter amit egy PIChez illesztenék. A kommunikációban kellene egy kis segítség. Az adatlap szerint soros interfészt használ(spi), de nincsen chipselect lába, mivel az áramkörömben 3db-ot használok ezért felraktam őket külön lábakra, hogy majd software-es spi-vel hajtom meg őket, úgyis csak kiküldeni szeretném feléjük adatokat. A kérdés, hogy mit kellene nekem küldenem,hogy mondjuk a DACA kimenetnek értéket tudjak adni? a referenciám 5V tehát mondjuk a 2.5Vhoz a 127 tartozik. 12bites parancsszót ír az adatlap tehát akkor kellene küldenem mondjuk azt hogy 1 és 127 (utolsó 3bit a címe a beállítandó kimenetnek, a 127 meg a kimenet értéke lenne illetve a LDAC és LOAD-ra lefutó él) mondjuk ez így elküldve 16bit.
Vagy a soros interfészt itt ugy kell használni mint mondjuk a TPIC6C595 shift regiszternél?
Szia! Én azt próbálnám ki, hogy a LOAD-ot használnám CS-nek. Mindegyikbe befutna egy csomag, de csak azt tölteném be, amelyiknek szántam. Elvileg a következő sorozat kitolja a fel nem használt előzőt. Érdemes lenne kipróbálni úgy, hogy két csomagot elküldesz, de csak a másodikat töltöd be. Ha csak a második teljesül, akkor működik...
Én is ezt akartam írni, de ejj, megelőztél. Egyébként szerintem biztosan CS funkcióként működik a LOAD láb. Fogadni mernék rá.
![]()
Igen, de fura, mert egy normális SPI nem fogad biteket addig, amíg nincs a CS engedélyezve.
Ha megjön a nyák már próbálom is ki, addíg is köszönöm a segítséget. De az a rész akkor jó lehet hogy mivel az spi is 8 bitet küld akkor két byteot küldök ki neki? máshogy hogy tudok egy spivel 12 bitet küldeni?
Azt próbálnám ki, hogy 2x8 bitet kiküldök úgy, hogy a végére shiftelem a 12 bitet. Az első 4 bit bármi lehet, remélhetően kihullik. Ez a DAC egyébként nem SPI-s, csak soros illesztésű, de ettől még jó lehet...
A hozzászólás módosítva: Szept 16, 2014
Azt irja a TI honlapja hogy "serial SPI". TLV5628 TI
Az - Adatlapban - nem szerepel az SPI meghatározás.
Valóban nem, de sajnos semmi olyan sem ami támpontot adna.
Ha tényleg SPI lenne akkor a Daisy-Chan lenne a legjobb megoldás rá (Bővebben: Link), de mivel ez egy egyszerű soros kommunikáció amely a LOAD láb alacsony szintjére betölti az adatokat ezért nem biztos, hogy fog működni a dolog.
Csak akkor működhet a dolog ha új adat érkezésekor felülírja a régit ha nem volt LOAD jel, de erre nem találtam utalást az adatlapban ahogy átfutottam rajta ![]()
Próbáld ki, baja nem lesz, legfeljebb nem fog menni, akkor áttérsz szoftveresre.
Idézet: Az adatlap 3. és 4. ábrája szerint igen. „De az a rész akkor jó lehet hogy mivel az spi is 8 bitet küld akkor két byteot küldök ki neki?”
Sziasztok!
18F2550. Nagy menyiségű ASCII adatot hogyan lehet berakni a programmemóriába? A DB utasítás és társai egyszerre csak kb. 190byte-ot tárolnak rendesen, utána kiírja a sorra, hogy "Warning[209] : Missing quote". Bár lefordul, de nem kerül bele a programmemóriába minden érték. Így tárolnám le:
Csak persze sokkal több (kb. 300) karakterrel. És több ilyen labellal (sorral). Nézegettem a súgót, de más megoldást nem nagyon találtam. Van még a RETLW-s dt direktíva, de jó lenne tábla utasításokkal dolgozni. A hozzászólás módosítva: Szept 21, 2014
Használd a db "macska, kutya, elefánt..." sorokat, de minden sorban páros számú karakter legyen, különben 0 kóddal kitoldja.
Egymás után több sort is írhatsz. Ha retlw utasításokat akarsz a szövegből, addor dt "macska, kutya, elefánt..." sorok kellenek.
Köszönöm a választ.
Idáig világos, mint a Nap. Viszont ha egy sorban kb. 190-nél több karakter van, akkor azt írja a fordító, hogy "Warning[209] : Missing quote". Na mindegy, akkor 190 karakterenként lesz egy sor.
Sziasztok,
MPLAB, XC8 környezet, PIC12f1840 és egy 24aa512 memória között próbálok összehozni egy I2C kapcsolatot. A lenti program (egy Byte írás és egy Byte olvasás) lefut ugyan de a visszatérő adat (FF) nem egyezik a beírttal (0x2A). i2c frekvencia: 125khz Rengetegszer átméztem de nem találom a hibát. gacserus
Használd a kód gombot! -moderátor- A hozzászólás módosítva: Szept 27, 2014
Az alábbi sor biztosan rossz, mert nem Block Address, hanem a hardveresen beállított cím (A0, A1, A2 lábak állapota) az, amit be kell illeszteni a vezérlő bájtba! (Az csak hab a tortán, hogy a beillesztés módja is rossz, mert nem maszkoltad ki a három bitet).
Ha az említett A0,A1, A2 lábak földre vannak kötve, akkor e három címbit nulla, elhagyható a beillesztés. Mivel nálad most a Block Address éppen nulla, a fenti hiba jelenlegnem okoz gondot, de később meglepetés érhet, ha magasabb címekre próbálsz írni. ------- A WP lábat hová kötötted? Az adatlap szerint magas szintre kell húzni, hogy az írás ne legyen letiltva. Ha pedig a WP láb földre van kötve, akkor az írás tiltott.
OOOOOOOoooooooooooooohhhhhhhh.....
a WP rosszul volt bekötve. kösz, Gacserus
Összetalálkoztam egy olyan problémával, hogy pic-et és atmegát kötni össze spi-vel. Amennyire adatlapokból össze tudtam vadászni az infó:
-atmega.DORD=0 -atmega.CPHA=1, -pic.CKE=1 -pic.SMP=1 -atmega.CPOL=pic.CKP (akár 1, akár 0) és így legalább a jel fázis egyezni tud. Ha valaki futott már ebbe bele, csekkolja le nekem plz, ugyanezt csinálta-e? |
Bejelentkezés
Hirdetés |