diff --git a/Makefile b/Makefile index 548ed5c..a33cb72 100644 --- a/Makefile +++ b/Makefile @@ -46,11 +46,11 @@ # $Id$ #Bootloader Port -#PORT = /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Mega_2560_6493534363335111A032-if00 -PORT = /dev/ttyACM0 +PORT = /dev/serial/by-id/usb-Arduino_LLC_Arduino_Micro-if00 +#PORT = /dev/ttyACM0 # /dev/serial/by-id/usb-Arduino_LLC_Arduino_Micro-if00 #Device Port (for autoreset) -RESETPORT = /dev/ttyU0 +#RESETPORT = /dev/ttyU0 #/dev/serial/by-id/usb-Loupiottes.fr_DMXv3_Micro-if00 @@ -99,10 +99,10 @@ LDFLAGS = -lm -Wl,--gc-sections # Programming support using avrdude. Settings and variables. -AVRDUDE_PROGRAMMER = avr109 +AVRDUDE_PROGRAMMER = avrisp AVRDUDE_PORT = $(PORT) AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex:i -AVRDUDE_FLAGS = -D -p m32u4 -P$(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS = -p m32 -P$(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) # Program settings CC = avr-gcc diff --git a/main.c b/main.c index 8b5a94f..4ec1497 100644 --- a/main.c +++ b/main.c @@ -24,7 +24,6 @@ void _lcd(); void _radio(); uint8_t radiobuffer[32]; -enum { SRX, STX,SOFF } radiostate; volatile uint8_t skip_sleep; volatile uint8_t t_lcd=0,t_radio=0; @@ -44,8 +43,23 @@ void setup(void) USBCON=0; #endif + // Setup ports + + // Port A => Input, no pull-ups + DDRA = 0; PORTA=0; + + // Port B => Input, Pull up on INT2(PB2) , SLAVE-SELECT (PB3) + DDRB = 0; PORTB = _BV(PB2)|_BV(PB3); + + // Port C => All outputs Low + PORTC=0; DDRC=0xFF; + + // Port D => Output : BATT_ENABLE (PD6), pullup on (PD2-4) + + PORTD= _BV(PD2)|_BV(PD3)|_BV(PD4); + lcd_init(20,4); - lcd_backlight(0); + lcd_backlight(1); lcd_clear(); lcd_home(); lcd_display(); @@ -54,36 +68,9 @@ void setup(void) spi_init_master(); _delay_ms(500); lcd_setCursor(3,2); - lcdprint("Init Radio"); + lcdprint("Init"); - - while (1){ - _delay_ms(500); - rf24_setup(); - rf24_init(); - rf24_update_status(); - if(rf24_status==0x0E) - break; - lcd_setCursor(1,2); - lcdprint("Radio Error ! "); - _delay_ms(500); - } - - lcd_setCursor(1,2); - lcdprint("Radio Ok ! "); - _delay_ms(1500); - lcd_clear(); - radiostate=SOFF; - -#if defined(__AVR_ATmega32A__) GICR|=_BV(INT2); - -#elif defined(__AVR_ATmega32U4__) - EICRA=_BV(ISC21); - EIMSK=_BV(INT2); -#endif - - // Timer1 => 5ms #if F_CPU == 8000000UL @@ -116,9 +103,7 @@ void loop(void) { skip_sleep=0; - _radio(); - - _lcd(); + if(!skip_sleep){ set_sleep_mode(SLEEP_MODE_IDLE); @@ -129,51 +114,10 @@ void loop(void) ISR(TIMER1_COMPA_vect){ skip_sleep=1; - if(t_lcd) t_lcd--; } ISR(INT2_vect){ skip_sleep=1; - } -void _radio(){ - switch(radiostate){ - case SOFF: - rf24_RXMode(); - radiostate = SRX; - break; - case STX: - if(!t_radio){ - rf24_flushTX(); - rf24_RXMode(); - radiostate = SRX; - } - if(rf24_TXDone()){ - rf24_RXMode(); - radiostate = SRX; - } - break; - case SRX: - if(rf24_receive(radiobuffer)){ - lcd_setCursor(0,1); - debughex(radiobuffer,8); - } - break; - - } - -} - -void _lcd() { - if(!t_lcd){ - t_lcd=200; - lcd_setCursor(0,0); - if(p) - lcdprint("**"); - else - lcdprint(" "); - p=p?0:1; - } -}