~toykeeper/flashlight-firmware/trunk

« back to all changes in this revision

Viewing changes to DrJones/MiniDrv/MiniDrv.c

  • Committer: Selene Scriven
  • Date: 2015-02-16 20:18:46 UTC
  • Revision ID: ubuntu@toykeeper.net-20150216201846-a0gn20xs79193o04
Added more firmware from DrJones: luxdrv 0.30, MiniDrv, MiniMo.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//MiniDrv -- minimalistic driver firmware (no blinkies)  --  DrJones 2014
 
2
#define F_CPU 4800000                    //use fuses  low:0x75  high:0xff
 
3
#include <avr/io.h>
 
4
#include <util/delay.h>
 
5
//change modes here; just change/add/delete values
 
6
uint8_t modes[]={8,90,255};              //PWM values, 5..255
 
7
int main() {
 
8
    DDRB=2;                                //define PB1 as output
 
9
    TCCR0A=0b00100001; TCCR0B=0b00000001;  //PWM setup, 9kHz
 
10
    EEARL=4;EECR=1; uint8_t mode=EEDR;     //read from EEPROM
 
11
    if (mode>=sizeof(modes)) mode=0;       //check if invalid
 
12
    OCR0B=modes[mode];                     //set PWM level
 
13
    EEDR=mode+1;                           //next mode
 
14
    if(EEDR>=sizeof(modes)) EEDR=0;
 
15
    EECR=4;EECR=4+2;  while(EECR&2);       //write to EEPROM
 
16
    _delay_ms(1000);                       //delay for memory (or nomemory) to kick in
 
17
    EEDR=mode;                             //memory: use this mode again   \  use one of these lines
 
18
    //EEDR=0;                                //no memory: restart from 0   /  use one of these lines
 
19
    EECR=4;EECR=4+2;  while(EECR&2);       //write to EEPROM
 
20
    while(1) {}                            //endless loop
 
21
}