Fórum témák
» Több friss téma |
Sziasztok! 3 db ceruzaelemről hajtanék egy 16F877A-t. Szeretném jelezni az elem lemerülését. Szerintetek mi lenne erre a legjobb módszer? Gondolkodtam az A/D-n, de ha a Vdd-t veszem referenciának akkor az is csökken az elem kapocsfeszültségével együtt ezért ez nem tűnik jó megoldásnak.
Google ad rá megoldást, de ha AD-t akarsz akkor például tegyél be egy zenert és annak a feszültségét vedd referenciának. Ez a legegyszerűbb megoldás.
Használhatsz külső referenciát, ha van elég szabad láb. MCP1525 2,5V referenciának jó, elég alacsony a fogyasztása. Ehhez viszonyíthatod a tápfeszültséget, ellenállásosztóval felezve. Az is jó lehet, ha a tápfeszültség a referencia, és ezt a fix 2,5V feszültséget méred.
Más megoldás, ha csak digitális láb szabad, egy CPU felügyeleti áramkör, például az MCP1xx, ez egyszerűbb, olcsóbb megoldás, bár ilyenkor csak annyi információd lesz, hogy a tápfeszültség egy adott szint alá csökkent. A hozzászólás módosítva: Szept 19, 2014
Köszönöm mindkettőtöknek! Igazából nem erőltetem az AD-t csak azt már alkalmaztam korábban is, azzal biztosan boldogulnék. Viszont ez a felügyeleti áramkör tetszik. Ha jól értem ha a tápfesz az ic-re jellemző érték alatt van akkor az egyik lábán logikai 0 lesz, ha felette van akkor logikai 1 (MCP 101). Talán ez a legegyszerűbb megoldás. Igazából nem számít az érték csak az, hogy tudjam, a vége felé közeledik az elem élete.
Szia!
A PIC16F877-ben van komparátor, az szerintem jó erre a célra egy stabil referenciával !
Javítás:
Aki használja a bootloadert is annak a belinkelt kódban a "rom" elé még be kell szúrni a "const" kifejezést. Kicsit engem is meg szívatott a dolog...
Szerintem ez nem csak bootloader esetén kell
Sziasztok!
pic12f752: komparátor egyik bemenete a belső referencia, a másikra most éppen egy potméter van kötve debug célból. A komparálási szint közelében 8MHz-es oszcilláció keletkezik, pedig bekapcsoltam a hiszterézist és a Zero Latency Filtert is (ami elvileg ezt hivatott megakadályozni). Van valamilyen ötlet, hogyan lehetne ezt megszüntetni? Köszönöm.
Még egy kis bővítés az előző hozzászólásomhoz: mi akadályozza meg a PWM modult (komparátorral osztoznak egy és ugyanazon a lábon), hogy ne írjon a kimenetre miközben az a komparátor kimenete?
Szia!
A komparátor modul kimenetét letiltod, ettől még használható, mert generálhat megszakítást is. A PWM modult, pedig használod ahogy akarod. Üdv.:foxi
A komparátor nem lesz kivezetve, csak most arra az időre vezettem ki, amíg kitalálom, hogy miért oszcillál be. A PWM modult sem szeretném kivezetni, ami zavar, hogy nincs kimenet engedélyező bitje, csak az adott lábat kell kimenetre állítani és már kint is van a PWM jel. Viszont én azon a lábon majd a COG modult szeretném használni és ennek kapcsán jutott eszembe, hogy mi fog ott történni. Megszakítást nem akartam használni, mert hardverből kellene mennie az egésznek.
Sziasztok szeretnék elkezdeni pic programozással foglalkozni de csak hobbi célból. De megmondjam őszintén teljesen amatör vagyok ebben a témában, nem tudom hogy is kezdjek neki. Milyen ezközöket kell beszereznem és hogy milyen oktató anyagokat keressek és hol?
Mondjuk kezd itt, nullától a robotokig című cikkel.
Szia!
Szerintem próbáld olvasgatni icserny kolléga leírásait Bővebben: Link, sok sikert !
SZoval ha ezt a topikot elkezded silabizalni, egy par percen belul talalsz sok segitseget (csak 576 oldal). De a szokasos t es t, aholis alapoktol indul a 16Fxxx ismertetes. Szetnezhetsz a gyujtemenyemben, ahol talalsz demo paneleket, mintaprogikat, leirasokat a PIC alapok temahoz. Egy tanacs: ne probalj meg induloban atomreaktor, vagy urraketa vezerlest csinalni. Elegedj meg a LED villogtatas, kapcsolo beolvasas, es egyeb egyszeru dolgok megvalositasaval. Ja es induloban ASM. Itt mindig talasz segitseget.
A hozzászólás módosítva: Szept 21, 2014
Sziasztok!
Egy elektromágnes meghúzását szeretném paraméterezni úgy, hogy egy változóban eltárolok egy számot, amit a TIMER1 számlálóba töltök. (TMR1H) A programot megírtam 12F629-be, és azt tapasztaltam, hogy ha 128-nál nagyobb számot írok, akkor a kimenetre kötött teszt LED kétszer villan fel. Minél nagyobb a beírt szám, annál rövidebb ideig világít, de annál látványosabb a felvillanás. Beírtam a programot egy 16F1826-osba is, ott hibátlanul lefut, minél nagyobb a szám, annál rövidebb ideig világít a teszt LED. Kerestem errata-ban, hátha le van írva a hiba, de nincs. Mi okozhatja ezt a problémát. INIT és MainLoop beszúrva:
A hozzászólás módosítva: Szept 21, 2014
Srácok!
Egy (#define) definícióban van korlát a megadható adatméretre vonatkozólag? Tehát helyes mind kettő?
Vagy nagyobb érték megadásánál?
A #define macro tulajdonkeppen egyszeru szovegbehelyettesitest jelent, szoval amit megadsz, a "nagy" macro ertkekenek, az csak be fog helyettesitodni a kododban mindenhol ahol a 'nagy' macrora hivatkozol. Igy barmit megadhatsz ami ervenyes ott ahol hivatkozol ra. Ld. pl. itt.
Nincs megkötés a hosszra. Ha az érték műveletet is tartalmaz, ajánlott szárójelbe tenni.
PIC AD átalakító. 5V referencia esetén a felbontás: 5/1024. Azokon a PIC-eken ahol állítható a referencia a felső referenciával mennyire közelíthetjük meg a testet ? És test közelében (pl 1 mV) mennyi lehet a hiba ?
Köszi srácok.
Van itt egy másik gondom. Csatoltam a karaktertáblát. Egy 240x64-es LCD-t próbálok beizzítani, de valamiért nem jön össze a karakterek kiíratása. Van egy ilyen kiírató függvény:
Ha ezt elküldöm ezzel:
Akkor az eredmény ez: "J" Gondolom itt az ansi szabvány fog belépni, de nem tudom mennyit kell hozzáadjak, hogy kijöjjön a kellő karakter. Eredeti teljes kód: Bővebben: Link ui: az lemaradt, ha pl. így adom meg:
Akkor jó az eredmény vagy is kiírja, hogy: "H" A hozzászólás módosítva: Szept 22, 2014
Közben meglett, hogy a macskaköröm szívatott meg.
Így jó:
Szia! A minimum 2,5-2,0V de ezt az adott típus PDF fájljából ki tudod olvasni!
üdv. Foxi
Köszönöm a példát, de nekem nem működik. A nálad lévő 7. sorral van baja.
Tehát a bsf status, rp0 sorral Mit tegyek?
Idézet: „A pelda PIC16Fxxx-re irodott, de termeszetesen kis atalakitassal a PIC18Fxxx sorozaton is mukodik.” A 18_K más a memória szervezése( a bankokat nem a status register kezeli, hanem van bsr regisztere) ezenkívül bővített utasításkészlettel is rendelkezik van rá külön utasítás. A bankváltást movlb utasítással vagy ha az mplabot használod akkor a banksel utasítást is alkalmazhatod. Esetedben a 7. sor: movlb 0x01. Ám ellenőrizd a portokaat is, LED és gomb ott van-e ahol szeretéd. A hozzászólás módosítva: Szept 22, 2014
Köszönöm a választ.
Átírtam így már elfogadja, de rátöltöm és nem csinál semmit hiába nyomogatom a gombot. Itt a program: list p=pic18f14k22 ; lista megadása include <p18f14k22.inc> ; includde fájlok megadása radix hex ; alapértelmezet számrendszer megadása ;------------------------------------------------------------ CONFIG FOSC = IRC ; belsõ oszcillátor CONFIG WDTEN = OFF ; watchdog kikapcsolása CONFIG LVP = OFF ; alacsony feszültségû programozás kikapcsolva #define LED_Z LATA, 5 ; szövegrész behelyetesítés #define GOMB_1 PORTA, 2 ; amivel a program olvashatobbá válik #define GOMB_2 PORTA, 4 num equ 0x0020 org 0x0000 start clrf num MOVLB 0x01 movwf TRISA repeat call pressck ;look for incr/decr button press goto repeat pressck btfss GOMB_1 ;decrease button pressed? goto decnum ;yes, decrement num btfss GOMB_2 ;increase button pressed? goto incnum ;yes, increment num return incnum movf num,w ;get num into W sublw 0xff ;num=0xff? MOVLB 0x00 return ;press check done incf num,f ;increment num bsf LED_Z ;LED ON return ;press check done decnum movf num,w ;get num into W sublw 0x0000 ;num=0? MOVLB 0x00 goto ledoff decf num,f ;decrement num return ;press check done ledoff bcf LED_Z ;LED OFF return ;press check done ;------------------------------------------------------------ INICIALIZALAS CLRF LATA ; kimeneti portok törlése CLRF LATB ; CLRF LATC ; MOVLW B'00000011' ; analóg / digitális bemenetek MOVWF ANSEL ; MOVLW B'00011111' ; A port MOVWF TRISA MOVLW B'00000011' ; B port kimenet MOVWF TRISB MOVLW B'00000000' ; C port kimenet MOVWF TRISC MOVLW B'01110010' ; oszcillátor frekvenciája <4:6> MOVWF OSCCON ; 111 = 16 MHz, 001 = 250 kHz, 000 = 31 kHz (kb óra kvarc) RETURN end A hozzászólás módosítva: Szept 22, 2014
Használd a kód gombot mert ez így átláthatatlan.
Másik dolog, min teszteled? Össze van rakva, vagy szimulátoron, proteuson? Az, hogy nem csinál semmit kevés info. Mi nem csinál semmit? Ha azt a próbapanelt raktad össze amit belinkeltál, jó hogy nem csinál semmit, nem ott vannak a LED-ek meg a gombok ahol a programban. Mondtam, hogy ellenőrizni kell azt is. A hozzászólás módosítva: Szept 22, 2014
Hol hívod meg az INICIALIZALAS-t?
Azon a próbapanelen tesztelem amről tettem fel rajzot
Köszönöm a segitséget.
|
Bejelentkezés
Hirdetés |