Olen tekemässä laitetta, joka pääasiassa “nukkuu”, kunnes se ulkoisesti liipaistaa käyntiin.
Laitteen toimiessa naksutellaan paria relettä, kunnes minuutin-parin päästä mennään taas sleep modeen. Tämä kaikki toimii, ja virrankulutus on nyt noin 1.4 milliampeeria nukkumoodissa.
Boardilla on nyt 16MHz prosessori, sinänsä kaikki siis toimii. En keksi muuta keinoa vähentää virrankulutusta kuin pienentää kellotusta. Ajan laitetta 5 voltilla. Jännitteen pudottaminen vaikkapa 4 volttiin näkyy vain kosmeettisena virrankulutuksen laskuna. Sitä paitsi releet ovat 5V, enkä lähtisi askastelemaan niille omia ohjaimia, koska 5V -> 4V ei tosiaan auta juuri mitään.
Joku mainitsi mahdollisuudesta käyttää 328:n sisäistä kelloa (128kHz?), tämäkin kävisi ihan hyvin, koska en tarvitse tarkkuusajastinta. Mutta mutta… toimiiko sleep mode sisäisellä oskillaattorilla? Ja toiseksi, en osaa tehdä sis. kellon vaatimia asetuksia. Osaamattomuuteni on tässä pääongelma!
32kHz kiteen käyttö ei ole mikään pakkomielle: voin ihan hyvin laittaa 8, 4, tai 2 MHz:n kiteen nykyisen 16 tilalle, jos se olisi helpompi ratkaisu, ja jos virrankulutus laskisi tällä tempulla vaikkapa tuonne 300-500 mikroampeeriin.
Nykyiset asetukset ovat alla. Ihmettelen hiukka fuse-arvoja, tekeekö “safe mode” jotain jäynää? Nämä lukemat ovat Arduinon boardilta, eivät breadbordilta, mutta MCU on se, jota käytän breadbordilla.
avrdude -v -p m328p -c stk500v1 -b57600 -P COM3: -U lfuse:r:-:i -U hfuse:r:-:i -U ef
use:r:-:i
avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
Copyright © 2000-2005 Brian Dean, bdmicro.com/
System wide configuration file is "C:\Documents and Settings\User1\Desk
top\arduino-0022\hardware\tools\avr\bin\avrdude.conf"
Using Port : COM3:
Using Programmer : stk500v1
Overriding Baud Rate : 57600
AVR Part : ATMEGA328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page
Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW Max
W ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 5 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.16
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e950f
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading lfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude: writing output file “”
:0100000000FF
:00000001FF
avrdude: reading hfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude: writing output file “”
:0100000000FF
:00000001FF
avrdude: reading efuse memory:
Reading | ################################################## | 100% 0.02s
avrdude: writing output file “”
:0100000000FF
:00000001FF
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK
avrdude done. Thank you.