Rose-Hulman Robotics Team

Changeset 423

Show
Ignore:
Timestamp:
02/21/09 22:24:50 (3 years ago)
Author:
kleinjt
Message:

added support for status LEDs

Location:
trunk/electronics/avr/killswitch
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/electronics/avr/killswitch/killremote.c

    r414 r423  
    99#define sbi(var, mask)   ((var) |= (uint8_t)(1 << mask)) 
    1010#define cbi(var, mask)   ((var) &= (uint8_t)~(1 << mask)) 
     11 
     12int counter = 0; 
    1113 
    1214static void serial_init(long baud) 
     
    3032} 
    3133 
     34static void timer_init() 
     35{ 
     36        TCCR0A =  _BV(WGM01); 
     37        TCCR0B = _BV(CS00) | _BV(CS02); 
     38        OCR0A = 17; 
     39        TIMSK0 = _BV(OCIE0A); 
     40} 
     41 
    3242static void io_init() 
    3343{ 
    34         DDRB = 0x00; 
     44        DDRB = 0x0F; 
    3545        DDRC = 0x00; 
    3646        DDRD = 0b11111110; 
     
    4050{ 
    4151        io_init(); 
     52        timer_init(); 
    4253        serial_init(9600); 
    4354        sei(); 
     
    4657 
    4758        while (1) { 
     59                uint8_t in = 'f'; 
    4860                c = PINC; 
    4961                c &= (1<<2); 
    5062                usart_put(!c ? 's' : 'g');       
    51                 _delay_ms(50); 
     63                _delay_ms(100); 
     64                 
     65                if(UCSR0A & (1<<7)) { 
     66                        in = usart_get(); 
     67                        if(in == 'c') PORTB |= 0x03; 
     68                        counter = 500;   
     69                } 
     70                 
     71                if(!counter) PORTB &= 0xFC; 
     72                if(!c) PORTB &= 0xF3; 
     73                else PORTB |= 0x0C; 
     74                 
    5275        } 
    5376 
     
    5578        return 0; 
    5679} 
     80 
     81ISR(TIMER0_COMPA_vect) 
     82{ 
     83        if(counter) counter--; 
     84} 
  • trunk/electronics/avr/killswitch/killrobot.c

    r418 r423  
    6969                        PORTB = 0x0F; 
    7070                        counter = 500; 
     71                        usart_put('c'); 
    7172                } 
    7273                else if(in == 's' || !counter) { 
    7374                        PORTB = 0x00; 
     75                        usart_put('c'); 
    7476                } 
    7577                in = 'f'; 
  • trunk/electronics/avr/killswitch/mkfile

    r396 r423  
    33<$RHRTELEC/avr/mkhdr 
    44 
    5 TARG=killrobot 
    6 OFILES=killrobot.o 
     5TARG=killremote 
     6OFILES=killremote.o 
    77 
    88<$RHRTELEC/avr/mkcommon