Fait fonctionner sur ardu micro

This commit is contained in:
arnaud.houdelette 2019-09-09 17:14:13 +02:00
parent cd7f3a694f
commit 5d1a70be50
8 changed files with 75 additions and 30 deletions

View file

@ -46,7 +46,8 @@
# $Id$
#Bootloader Port
PORT = /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Mega_2560_6493534363335111A032-if00
#PORT = /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Mega_2560_6493534363335111A032-if00
PORT = /dev/ttyACM0
# /dev/serial/by-id/usb-Arduino_LLC_Arduino_Micro-if00
#Device Port (for autoreset)
RESETPORT = /dev/ttyU0
@ -57,10 +58,10 @@ TARGET = pyrorf
SRC = main.c lcd.c spi.c rf24.c
CXXSRC =
ASRC = i2cmaster.S
MCU = atmega2560
MCU = atmega32u4
F_CPU = 16000000UL
FORMAT = ihex
UPLOAD_RATE = 20000
UPLOAD_RATE = 57600
# Name of this Makefile (used for "make depend").
MAKEFILE = Makefile
@ -98,10 +99,10 @@ LDFLAGS = -lm -Wl,--gc-sections
# Programming support using avrdude. Settings and variables.
AVRDUDE_PROGRAMMER = stk500
AVRDUDE_PROGRAMMER = avr109
AVRDUDE_PORT = $(PORT)
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex:i
AVRDUDE_FLAGS = -F -p m2560 -P$(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -b $(UPLOAD_RATE)
AVRDUDE_FLAGS = -D -F -p m32u4 -P$(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -b $(UPLOAD_RATE)
# Program settings
CC = avr-gcc

View file

@ -38,11 +38,23 @@
;******----- Adapt these SCA and SCL port and pin definition to your target !!
;
#if defined (__AVR_ATmega32U4__)
#define SDA 7 // SDA Port D, Pin 1
#define SCL 6 // SCL Port D, Pin 0
#define SDA_PORT PORTB // SDA Port D
#define SCL_PORT PORTB // SCL Port D
#else
#define SDA 1 // SDA Port D, Pin 1
#define SCL 0 // SCL Port D, Pin 0
#define SDA_PORT PORTD // SDA Port D
#define SCL_PORT PORTD // SCL Port D
#endif
;******----------------------------------------------------------------------

1
lcd.c
View file

@ -32,6 +32,7 @@ void i2csend(uint8_t data){
void pulseEnable (uint8_t data)
{
i2csend (data | _En); // En HIGH
i2csend (data); // En LOW
}

33
main.c
View file

@ -19,7 +19,7 @@ int main (void);
void setup (void);
void loop (void);
void lcdprint( char* ptr);
void debughex (uint8_t* ptr,uint8_t len);
int main(void)
{
@ -30,32 +30,45 @@ int main(void)
void setup(void)
{
#if defined(USBCON)
USBCON=0;
#endif
lcd_init(20,4);
lcd_backlight(1);
lcd_backlight(0);
lcd_clear();
lcd_home();
lcd_display();
lcdprint("Pyro RF ! ");
_delay_ms(200);
spi_init_master();
_delay_ms(200);
rf24_init();
rf24_setup();
char st = rf24_read_reg(CONFIG);
debughex(&st,1);
// rf24_init();
//char st = rf24_read_reg(STATUS);
rf24_update_fifo_status();
debughex(&rf24_status,1);
#if defined(__AVR_ATmega32A__)
while(1);
#if defined(TIMSK1)
// setup Timer1
TCCR1A = 0;
TCNT1=0;
OCR1A = 2000;
TIMSK = _BV(OCIE1A);
OCR1A = 10000;
TIMSK1 = _BV(OCIE1A);
TCCR1B = _BV(WGM12)|_BV(CS11);
#elif defined(__AVR_ATmega2560__)
// setup Timer1
TCCR1A = 0;
TCNT1=0;
OCR1A = 10000;
TIMSK1 = _BV(OCIE1A);
TIMSK = _BV(OCIE1A);
TCCR1B = _BV(WGM12)|_BV(CS11);
#endif
@ -90,7 +103,7 @@ void lcdprint( char* ptr)
}
void debughex (char* ptr,uint8_t len) {
void debughex (uint8_t* ptr,uint8_t len) {
while (len--) {
uint8_t c = *(ptr++);
uint8_t ch= c>>4;

10
rf24.c
View file

@ -24,6 +24,7 @@ void inline rf24_ceHi(){
void inline rf24_ceLow(){
CE_PIN_PORT &= ~_BV(CE_PIN_BIT);
}
void inline rf24_csnHi(){
@ -66,11 +67,15 @@ uint8_t rf24_read_reg(const uint8_t reg)
return ret;
}
void rf24_update_fifo_status()
{
rf24_csnLow();
_delay_ms(1);
rf24_status = spi_transfer(FIFO_STATUS);
rf24_fifo = spi_transfer(0);
_delay_ms(1);
rf24_csnHi();
}
@ -78,8 +83,9 @@ void rf24_setup()
{
CE_PIN_DDR |= _BV(CE_PIN_BIT);
CSN_PIN_DDR |= _BV(CSN_PIN_BIT);
CE_PIN_PORT &= ~_BV(CE_PIN_BIT);
CSN_PIN_PORT |= _BV(CSN_PIN_BIT);
rf24_ceLow();
rf24_csnHi();
}
void rf24_init()

14
rf24.h
View file

@ -13,7 +13,7 @@ void rf24_update_fifo_status();
extern uint8_t rf24_status;
extern uint8_t rf24_fifo;
void rf24_setup();
void rf24_init();
/*
@ -37,13 +37,13 @@ int rf24_waitforTX();
#elif defined(__AVR_ATmega32U4__)
#define CE_PIN_PORT PORTD
#define CE_PIN_DDR DDRD
#define CE_PIN_BIT PD4
#define CE_PIN_PORT PORTB
#define CE_PIN_DDR DDRB
#define CE_PIN_BIT PB4
#define CSN_PIN_PORT PORTC
#define CSN_PIN_DDR DDRC
#define CSN_PIN_BIT PC6
#define CSN_PIN_PORT PORTB
#define CSN_PIN_DDR DDRB
#define CSN_PIN_BIT PB5
#elif defined(__AVR_ATmega32A__)

4
spi.c
View file

@ -5,9 +5,9 @@
void spi_init_master() {
SPI_PORT |= _BV(SCK_PIN);
SPI_PORT |= _BV(SCK_PIN)| _BV(SS_PIN);
SPI_DDR |= _BV(MOSI_PIN) | _BV(SCK_PIN) | _BV(SS_PIN);
SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR1)| _BV(SPR0);
SPCR = _BV(SPE) | _BV(MSTR) ;
}

12
spi.h
View file

@ -22,6 +22,18 @@ extern "C"{
#define MOSI_PIN PB2
#define MISO_PIN PB3
#elif defined (__AVR_ATmega32U4__)
#define SPI_PORT PORTB
#define SPI_DDR DDRB
#define SS_PIN PB0
#define SCK_PIN PB1
#define MOSI_PIN PB2
#define MISO_PIN PB3
#endif