Först, om du har möjlighet, använd något modernare än 628A (jag utgår
från att det inte är den gamla 628 du använder !?) t.ex F688 eller F88.
De har mycket bättre low-power möjligheter. Du kan välja på att köra
dom i "sleep", eller att bara köra dom väldigt långsamt under en tid.
Den interna oscillatorn kan "växlas" ned från 8 Mhz till som minst 32 Khz
helt programstyrt. SLEEP finns naturligtsvis även, om man vill använda det.
Enklast är en timer som väcker processorn regelbundet.
Det kanske inte går at få så lång tid som flera minuter, men du behöver
ju bara bara räkna ner en räknare och direkt (om räknaren inte
har kommit till 0) gå tillbaka till SLEEP.
Ett annat sätt är att låta WDT väcka processorn. På de senare
modellerna (t.ex F88) kan du sätta en WDT period på upp till ca
270 sekunder, vilket verkar passa din applikation. WDT räknaren
i dessa nyare processorer drar även mindre ström än i (t.ex) F628A.
WDT är nog enklare än en timer, förresten...
F88 har även "two-speed start-up" vilket snabbar upp "väckningen" från
SLEEP om du kör med kristall. Processorn startar på den interna RC
oscillatorn tills huvudoscillatorn har stabiliserats, då den automatiskt
switchar över. Så man kan göra en del som inte är tidskristiskt och
sedan vänta på huvudoscillatorn. Eller så kanske man går tillbaka
till SLEEP innan dess, man har ca 250 instruktioner (1024 Tcyc) på sig...
Men om det sitter i bilen, varför skall det vara batteridrivet ?
Jag utgår från att du menar något annat batteri än det vanliga
bilbatteriet !
Att slå av och på strömmen till hela processorn fungerar också, men det
blir lite extra processerande eftersom du varje gång kör igenom hela
din "init" kod, hur mycket det nu är. När den väcks från SLEEP, är ju allt
redan klart, bara att skicka data.
> Jag har Googlat för fullt men utan lycka.
Onödigt, databladet har alla detaljer...
> en extern timer som slår på strömmen till PIC:en med jämna mellanrum...
Och hur mycket ström drar den ?
> På så sätt slipper man ha massa timers och annat skit
"Skit" ???
Och räcker det inte med *en* timer ?
> Jag hade ju hoppats på att det skulla vara möjligt att lösa det med lite hederlig asm kod
Det är klart att det gör. I alla fall innan du har specat batterityp, driftstid m.m m.m.
> Om kondingen laddas upp/ur genom en resistor så tar det väl ungefär lika lång tid att ladda upp kondingen som att ladda ur den?
Du använder två olika motstånd, ett mindre (från pinnen) för uppladdningen,
ett större (till GND) för urladdningen. Men visst, du måste fortfarande vänta på
uppladdningen innan du lägger den i SLEEP igen. Sen tar ju uppladdningen
också batterikapacitet, vilket måste in i kalkylen.
> Kondingen kan kopplas direkt till pinnen så att den laddar upp sig illa kvickt.
Inte snabbare än vad 25 mA (max strömmen på en pinne) tillåter !
Koppla inte en "fet" konding *direkt* till en I/O pinne.
Se även :
http://ww1.microchip.com/downloads/en/D ... 41200B.pdf
http://ww1.microchip.com/downloads/en/D ... 30620a.pdf