Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Hogy ne csak egy hang szólaljon meg, ezért gondoltam beteszek Timer1 megszakításba egy kódot ami változtatja a PR2-t.
Így állítom be a timert: TMR1H = 0; TMR1L = 6; PIE1bits.TMR1IE = 1; // megszakítás engedélyezése T1CON = 0b00110001; // 8bit, 8-as előosztó, kb 6000Hz Mivel nem működik, lebutítottam, hogy csak 1 ledet villogtasson. A helyzet az, hogy vagy amikor engedélyezem a timert, vagy amikor megszakítása váltódik ki, az egész pic kiakad, a rákötött kijelzőn olyasmi jelenik meg aminek nem lenne szabad (értsd: random vmi). CDC firmwarem van, bootloader miatt remappolva vannak a vektorok. A timer1 megszakítása high v low prioritású? Highban egyszerűen nem történt semmi, low-ban meg kiakad. Idézet: „A timer1 megszakítása high v low prioritású?” Az attól függ, mire van állítva. De ennyi kódból nem lehet megmondani a hiba okát, mert több is lehet.
Az adatlapban nem találtam meg, hogy lehet állítani a timer1 megszakítás prioritását.
Felrakom a forrást.
Valami IPR nevezetű regiszterekben vannak a prioritást állító bitek. Asszem ha nem állítod, akkor alapból High-ra van állítva mindegyik.
Találtam egy ilyet: IPR1bits.TMR1IP, ha 0, akkor ugye Low prioritású?
Amúgy mit jelent ez a priorizálás? Elveszhet low prioritású megszakítás? Annyi változott, h nem akad ki, de a led se villog.
Te, en mar elveszitettem a fonalat, a CCP vagy PWM vagy nem is tudom mar mit hasznalsz, az melyik Timeren log? Ehhez kepest nincs akadas, hogy ugyanazt a timert szeretned megszaggatni meg torolgetni?
Idézet: „Találtam egy ilyet: IPR1bits.TMR1IP, ha 0, akkor ugye Low prioritású?” Az adatlapban benne van. Idézet: „Amúgy mit jelent ez a priorizálás?” Azt, hogy ha egy Low megszakítás kiszolgálása folyamatban van, és közben bebillen egy High megszakítás flag-je, akkor a Low rutin megáll, végrehajtja a High rutint, majd amikor azzal végez, akkor folytatja a Low rutint. Amikor azzal is végez, akkor meg visszamegy a főprogramba. Idézet: „Elveszhet low prioritású megszakítás?” Egy rosszul megírt programban akár High megszakítás is elveszhet... Idézet: „Annyi változott, h nem akad ki, de a led se villog.” Szintén az adatlapon a FIGURE 9-1: tanulmányozását javaslom. Ott kövesd végig, hogy mit kell ahhoz ki/bekapcsolni, hogy adott megszakítás érvényre jusson.
Hello,gondban vagyok,lenne egy kerdesem,melyik programozoval lehet PIC16F877 et programozni?Tud valaki nekem esetleg adni egy ilyen programozohoz kapcsolasi rajzot,nyaktervel?Vagy csak sima kapcsolasi rajzot?Elore is koszonom
Udv
Sziasztok!
Én nem régen kezdtem PIC et programozni és az lenne a kérdésem, hogy 16F877A-n hogyan tudok megvalósítani dátum mérését minnél kisebb fogyasztással úgy hogy semmit nem használok de amikor bekapcsolom az lcd-t az aktuális dátum legyen?
Köszi, megnéztem most már megy.
Úgy számoltam ki a számlálót, ahogy a timer0-ánál, mégis a vártnál lassabban villog a led. 48 000 000 / 4 / 8 (előosztó) / 250 (8 bites reg 6ról indítva) = 6000 Hz Ezzel szemben 1másodpercnél sokkal tovább világított a led, ha a számláló 6000-es értékénél kapcsoltam be. Most 1 a számláló, 1 másodpercnél rövidebb, de a vártal ellentétben nem olya gyors, vagyis látom a villogását.
A TIMER1 kepes arra, hogy felebressze a procit tulcsordulas eseten, szoval esetleg ugy, hogy felprogramozod a prescalert, timer1-et, aztan elzavarod aludni, aztan amikor tulcsordult, akkor a PICet felebreszti a megszakitas, megfelelo szamlalokat noveled es az ora/perc/masodperc erteket az esetleges datummal egyutt lekezeled. Aztan ujra felprogramozod a kovetkezo ciklusra es igy tovabb.
De szerintem inkabb u.n. RTC IC-t kellene hasznalnod, azok pont erre valok. Regebbi alaplapokrol erdemes banyaszni. Vannak kulso elemes es belso elemes tipusok, ez utobbiak sajnos merules eseten kidobandok, illetoleg az elemhez hozzafereshez faragni kell a kokemeny mugyantat.
20-as számlálóérték esetén kb 1másodpercig világít a led.
Vagyis kb 20 Hz a timer1 frekije? De honnan lett ennyi? Mit néztem már megint el?
De ha a Timer1 et használom akkor sűrűn fel fogja ébreszteni nem? és így sokat spórolnék az energiával,vagy ha nem küldöm sleepbe akkor mennyire fogyaszt sokat? Amúgy ezt RTC IC hogyan kommunikál hogy amikor elindítom a PIC-et az megkapja a dátumot?
Én pl ds1307-et használok, ezzel i2c buszon keresztül lehet kommunikálni. Első indításkor megadod neki az időt és a dátumot, majd amikor akarod lekérdezed.
A PIC indulásakor kiolvastatod az RTC ic-ből a dátumot, és kiíratod.
Ez a mennyire fogyaszt sokat, attól függ, mihez képest. Néhány mA a PIC fogyasztása, de az órajeltől függ.
A fogyasztást illetően egy autóban használnám és az akkumulátorról menne, de nem lenne jó ha lemerítené mikor nincs esetleg beindítva néhány hónapig. amúgy 8 MHz es kvarc van rákötve. Így vélemény?
De a kerdesedben azt irtad, hogy nem akarsz kulso dolgot hasznalni. Akkor marad a sleepezes, ami nA-t fogyaszt es a felebresztes, ami - ahogy irtak is - par mA-t. Vagy hasznald a 18-as sorozatot, az talan meg kevesebbet eszik.
Ha eleg nagy a prescaler, elegge alacsony az orajel, akkor azert olyan nagyon nem eszik sokat. A 18-as sorozatban meg amugy is allithatod a sebesseget belulrol. Szoval lelassitod, aludni kuldod, aztan esemenykor ebred, felgyorsitod, lekezeled az esemenyt, megint lassitod, altatod. Az RTC IC-t egyszer felprogramozod es utana mar magatol jar, kulso v. belso elemrol. Kommunikalni vele valamilyen soros protocolon szoktak. Azert javasoltam ezt, mert ha datumban gondolkodsz, akkor hosszu napokra tervezel es a PIC azert masodperc-kozeli dolgokban jobb... Hogy a PIC indulaskor mit csinal, az csak rajtad mulik. pl. azonnal szol az RTC IC-nek, hogy hoci csak a datumot!
Órához felesleges 8MHz-es kvarc, minél kisebb órajelet kell használni. Ha csak a timer1 megszakítás idejére éled fel, akkor 1mA alatt lesz az áramfelvétel. Ezzel 1Ah akksikapacitást kb. másfél hónap alatt szív le, vagyis gyakorlatilag semmit sem fogyaszt. Az akku önkisülése ennek sokszorosa, nembeszélve a mostani autókban levő központi zárról, riasztóról, stb.
De az sem a motornak, sem az akkunak nem jó, ha nincs használva hónapokig. Hetente kéthetente be kéne indítani, hogy az olajat a motor felhordja az alkatrészekre, illetve hogy feltöltse az akkut. Esetleg menni is vele valamennyit, hogy ne ugyanazon a ponton nyomja a suly a gumikat, mert azok is deformálódnak.
pl. a 18F-es sorozat uA-eket eszik kulonbozo idle modokban, sleepben meg nA-eket, szoval szerintem az akku onkisulese ennel nagysagrendekkel nagyobb.
Fel ev az 180 nap, az 4320 ora, folyamatos, 1mA-es, horribilis fogyasztassal szamolva az 4Ah. Azt is vedd figyelembe, hogy valoszinuleg az ido kozel 99.9%-aban a nA-es tartomanyban lenne a fogyasztas, szoval szerintem fel evig egy par ceruzaelemrol is eljarna.
Csak kulso kvartz-al fog neked felebredni Timer1-re, szoval mondjuk beteszel egy 32768Hz-s ora kvartzot, akkor 8-as osztassal es a 16 bites Timer1-el szamolva 16mp-kent fog neked felebredni.
Remelem jol szamoltam: (1/32768) * 8 * 65536 Kozben nezd meg, hogy ennek a PIC-nek a fogyasztasa (ha WDT-t nem hasznalsz, es minden ki van kapcsolva, nincsenek inputok felhuzokkal stb stb stb) akkor 1-1.5uA tipikus fogyasztasra lehet szamolni, erre meg ra kell szamolni kb 20uA-t a Timer1 miatt. Ha ez tul sok, akkor NanoWattosok kozott nezz szet, de mindenkepp nezd meg a DC karakterisztikat, mennyit fogyasztanak a kulonbozo modulok, mi az ami alvas kozben neked kell, mit kell csinalni mikor felebredsz stb stb. Amugy sok meres szerint a legjobb ha minel tobbet alszik a PIC, de mikor felebred ha minel gyorsabban elvegzi a feladatat...es igy minel hamarabb vissza alszik... Ha kulso RTC-t hasznalsz, akkor pedig nyilvan annak a fogyasztasat is figyelembe kell venned... es hogy akkor mitol ebred a cucc, az mennyit eszik - merthogy pl WDT is eszik rendesen, tehat lehet arra is alapozni csak figyelembe kell venni azt is. RTC-nek egy nagy elonyet latom amugy: lehuzod az aramkorodet a taprol es meg akkor is meri az idot.
Az autoval meg ott a gond, hogy 12V-bol kellene kb 5-ot csinalni, ezt lehet ateresztovel vagy kapcsuzemuvel. Itt a nagyon kicsi aramfelvetel miatt celszeru az elsot valasztani, de igy a veszteseg kb 3x-os. A kapcsuzemu valszeg sajat maga tobbet venne fel.
18F1320 32768Hz-es kristályról járatva 5V-ról 50uA-t eszik, tehát gyakorlatilag semmit. Mehet folyamatosan órakvarcról, ami pontosabb, mint a nagysebességűek, és csak egyetlen kvarcra van szükség, és semmi egyéb külső alkatrészre. Nagyobb probléma, hogy egy 78L05 nyugalmi árama 5mA körül van.
Vaklárma! Nekem egy 18F2320 folyamatosan megy az autómba(lásd Kürt cikk). Ezen kívül megy még egy végfok is, ami többet fogyaszt mint 10 PIC(már úgy értem, hogy kikapcsolva! kb 100mA). Aztán villog 2 LED, amit a gyári riasztó villogtat! Szóval építsd meg ,tedd bele és had menjen! Soha nem meríti le az akkut!
És ahogy potyo írta, az akkut tölteni kell időnként, mert az autó nem tölti fel rendesen. Nekem a nagy zene miatt hetente töltenem kell. Ez van.
Helló. tudna nekem valami irni egy egyzserű HEX fájlt, amit majd beleégetnék a 12F629-es PIC-be? Lényegében egy nagyon egyszerű fájl kell, mivel csak arra kellene, hogy kipróbáljam, hogy működik-e az égetőm.
Beégetsz bármit, majd leellenőrzöd(csinálsz néhány blank check et is). Ennyi.
Ha semmilyen fájlod nincs akkor készíts egyet. Pl. Beírsz egy csomó MOVLW-t különböző értékekkel, aztán kopizod néhányszor majd lefordítod.
Mondjuk azt sosem értettem, hogy nálad miért kell az akkut időnként tölteni kívülről
Nyilvan fugg az akksitol is, a generator hogy milyen van a kocsiba epitve, hogy mennyi az a felvetel amit a radiod meg egyeb dolgok felvesznek - nekem egyszer sem kellett toltenem meg az akksit, pedig 5 eve megvan a kocsi, es mikor vettem sem volt mar uj... Nemreg pl feltortek, akkor a risztoja reggelre teljesen leszivta, mar csak az elakadasjelzo ment (kb ennyit ernek a riasztok, azota be sem kapcsolom). Bebikazas utan tettem egy kb 6km-es kort es azota megint rendben van...
Szoval az a PIC aztan ugy le fogja szivni Es ha tolteni kell akkor minden bizonnyal a PIC miatt Ja, amugy van HV-s jelzesu PIC, arra csak egy ellenallast kell radobdni mert van benne regulator - ne persze kb egy zener, szoval az ellenallas diszcipalni fog igy. Vagy Szilva talalt valami Microchipes low dropoutos regulatort, az 13,7 V-os max feszrol eloallit 3.3-at, nem is tudom, valami 250mA-nel esik rajta 750mV vagy valami ehhez hasonlo horribilis dolog. Anno amit en neztem ki magamnak meg egy fesz referencia, 50mA-ig terhelheto, cserebe uA-ekben merik a fogyasztasat - marmint NEM tiz-uA-ekben, hanem uA-ekben! Persze az mar olyan 200Ft kornyeken van ha nagytetelben veszed...de ilyen is van... |
Bejelentkezés
Hirdetés |