From cd7f3a694f47e9cb60449f35f5ec337f21876a91 Mon Sep 17 00:00:00 2001 From: tzim Date: Mon, 9 Sep 2019 01:41:42 +0200 Subject: [PATCH] divers --- lcd.c | 2 +- main.c | 103 ++++++++++++++++++++++++++++++++++++++++----------------- rf24.c | 5 +-- spi.c | 4 +-- 4 files changed, 77 insertions(+), 37 deletions(-) diff --git a/lcd.c b/lcd.c index 5819bf0..b88a446 100644 --- a/lcd.c +++ b/lcd.c @@ -252,6 +252,6 @@ void lcd_write(uint8_t value) send(value, LCD_DATA); } -void lcd_backlight(uint8_t value){ +void lcd_backlight(uint8_t value){ _BackliteOn = value?1:0; } diff --git a/main.c b/main.c index 90c2fa1..d3de801 100644 --- a/main.c +++ b/main.c @@ -12,9 +12,80 @@ #include "defines.h" #include "lcd.h" +#include "spi.h" +#include "rf24.h" + +int main (void); +void setup (void); +void loop (void); +void lcdprint( char* ptr); -void lcdprint( char* ptr){ +int main(void) +{ + setup(); + while (1) + loop(); +} + +void setup(void) +{ + lcd_init(20,4); + lcd_backlight(1); + lcd_clear(); + lcd_home(); + lcdprint("Pyro RF ! "); + + spi_init_master(); + + rf24_init(); + + char st = rf24_read_reg(CONFIG); + debughex(&st,1); + +#if defined(__AVR_ATmega32A__) + // setup Timer1 + TCCR1A = 0; + TCNT1=0; + OCR1A = 2000; + TIMSK = _BV(OCIE1A); + TCCR1B = _BV(WGM12)|_BV(CS11); +#elif defined(__AVR_ATmega2560__) + // setup Timer1 + TCCR1A = 0; + TCNT1=0; + OCR1A = 10000; + TIMSK1 = _BV(OCIE1A); + TCCR1B = _BV(WGM12)|_BV(CS11); +#endif + + sei(); + +} + +volatile int i=0,j=0; +volatile int u=0; + +void loop(void) +{ if(!u){ + u=20; + char buf[15]; + lcd_setCursor(0,1); + snprintf(buf,15,"%d %d ",i,j++); + lcdprint(buf); + } + set_sleep_mode(SLEEP_MODE_IDLE); + sleep_mode(); +} + + +ISR(TIMER1_COMPA_vect){ + i+=5; + if(u)u--; +} + +void lcdprint( char* ptr) +{ while (*ptr) lcd_write(*ptr++); } @@ -29,34 +100,4 @@ void debughex (char* ptr,uint8_t len) { } } -int main(void) -{ - bitSet(DDRB,7); - lcd_init(20,4); - lcd_clear(); - _delay_ms(1000); - lcd_home(); - lcd_display(); - lcdprint("PyRO RF !"); - lcd_setCursor(0,3); - lcdprint("Arnaud HOUDELETTE"); - _delay_ms(3000); - lcd_backlight(1); - lcd_display(); - _delay_ms(3000); - //lcd_backlight(0); - lcd_display(); - while (1){ - lcd_setCursor(0,3); - lcdprint("Arnaud HOUDELETTE"); - _delay_ms(1000); - lcd_setCursor(0,3); - lcdprint("Emmanuel LANGLOIS"); - _delay_ms(1000); - - } - - - -} diff --git a/rf24.c b/rf24.c index c1291ce..984e4d2 100644 --- a/rf24.c +++ b/rf24.c @@ -4,6 +4,7 @@ #include #include +#include "lcd.h" uint8_t rf24_buffer[33]; @@ -13,8 +14,8 @@ uint8_t rf24_CONFIG = _BV(MASK_TX_DS)|_BV(MASK_MAX_RT); uint8_t rf24_status; uint8_t rf24_fifo; -uint8_t rf24_addr_P0[]={ 0xE7, 0xE7, 0xE7, 0xE7, 0xE7 }; -uint8_t rf24_addr_P1[]={ 0xC2, 0xC2, 0xC2, 0xC2, 0xC1 }; +uint8_t rf24_addr_sl[]={ 0xE7, 0xE7, 0xE7, 0xE7, 0xE7 }; +uint8_t rf24_addr_mstr[]={ 0xC2, 0xC2, 0xC2, 0xC2, 0xC1 }; void inline rf24_ceHi(){ diff --git a/spi.c b/spi.c index e293a04..efb5971 100644 --- a/spi.c +++ b/spi.c @@ -2,18 +2,16 @@ #include - void spi_init_master() { - SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR0); SPI_PORT |= _BV(SCK_PIN); SPI_DDR |= _BV(MOSI_PIN) | _BV(SCK_PIN) | _BV(SS_PIN); + SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR1)| _BV(SPR0); } uint8_t spi_transfer(uint8_t b) { - SPDR = b; while (!(SPSR & _BV(SPIF))); return SPDR;