From 189e3454d9e54d77c61c7a9bbb08230482c633b0 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Thu, 14 Feb 2019 20:27:43 +0000 Subject: [PATCH] - update git-svn-id: http://moon:8086/svn/projects/HendiControl@10 fda53097-d464-4ada-af97-ba876c37ca34 --- Control/firmware/uart_echo/main.c | 75 ++++++++++++++++++- .../uart_echo/uart_echo.componentinfo.xml | 12 +-- Control/firmware/uart_echo/uart_echo.cproj | 25 +++++-- 3 files changed, 97 insertions(+), 15 deletions(-) diff --git a/Control/firmware/uart_echo/main.c b/Control/firmware/uart_echo/main.c index 9a570cc..4c02925 100755 --- a/Control/firmware/uart_echo/main.c +++ b/Control/firmware/uart_echo/main.c @@ -8,9 +8,14 @@ #include #include #include +#define ARDUINO_NANO +#ifdef ARDUINO_NANO +#define F_CPU (16000000UL) // MHz +#else #define F_CPU (18432000UL) // MHz -#define USART_BAUDRATE 115200UL +#endif +#define USART_BAUDRATE 9600UL #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) #define TIMER_RELOAD (0xFFFF-(F_CPU/1024/4-1)) static uint8_t rx_data; @@ -18,16 +23,41 @@ static uint8_t count = 0; volatile uint8_t msgCode = 0; static uint8_t msgData = 0; static uint8_t ledState = 0; +static int16_t adc_value[16]; +static size_t adc_ch = 0; enum MessageCode { NOP=0, Command, Timer, + AdcComplete, Error = 0xFF }; -ISR(USART0_RX_vect) +ISR(ADC_vect) +{ + int16_t value_low = (int16_t)ADCL; + int16_t value_high = (int16_t)ADCH; + ADCSRA |= (1< 1)) + { + msgCode = AdcComplete; + msgData = adc_ch; + } + + adc_value[adc_ch] = value; + adc_ch++; + if (adc_ch == 16) + { + adc_ch = 0; + } + adc_start_conversion(adc_ch); +} + +ISR(USART_RX_vect) { rx_data = UDR0; @@ -80,6 +110,34 @@ void timer_init() } +void adc_init() +{ + PRR &= ~(1 << PRADC); + ADCSRA |= (1 << ADEN) | 7; +} + +void adc_start_conversion(int ch) +{ + ADMUX = (ADMUX & 0xF0) | (ch & 0x0F) | (1 << REFS0); + ADCSRA |= (1 << ADSC) | (1 << ADIE); +} + +int adc_is_fininshed() +{ + return (int)(0 == (ADCSRA & (1 << ADSC))); + +} +int16_t adc_read() +{ + return adc_value; + + while(!adc_is_fininshed()); + uint16_t value_low = (uint16_t)ADCL; + uint16_t value_high = (uint16_t)ADCH; + ADCSRA |= (1< - D:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.150\include\avr\iom644pa.h + D:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.150\include\avr\iom328p.h header C - dmamizNMG7EXBqtW9kb8VA== + UMk4QUzkkuShabuoYtNl/Q== - include/avr/iom644pa.h + include/avr/iom328p.h @@ -59,13 +59,13 @@ - D:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega644pa + D:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega328p libraryPrefix GCC - gcc/dev/atmega644pa + gcc/dev/atmega328p @@ -74,7 +74,7 @@ D:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.150/Atmel.ATmega_DFP.pdsc 1.2.150 true - ATmega644PA + ATmega328P diff --git a/Control/firmware/uart_echo/uart_echo.cproj b/Control/firmware/uart_echo/uart_echo.cproj index 96c7c90..dc82cd6 100755 --- a/Control/firmware/uart_echo/uart_echo.cproj +++ b/Control/firmware/uart_echo/uart_echo.cproj @@ -5,7 +5,7 @@ 7.0 com.Atmel.AVRGCC8.C dce6c7e3-ee26-4d79-826b-08594b9ad897 - ATmega644PA + ATmega328P none Executable C @@ -26,7 +26,7 @@ exception_table 2 0 - 0 + 1 @@ -42,7 +42,7 @@ com.atmel.avrdbg.tool.atmelice J41800089261 - 0x1E960A + 0x1E950F @@ -55,25 +55,36 @@ Simulator - JTAG + debugWIRE 125000 6000000 - JTAG + debugWIRE com.atmel.avrdbg.tool.atmelice J41800089261 Atmel-ICE 6000000 + + + + + debugWIRE + + custom + + + Custom Programming Tool + - -mmcu=atmega644pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega644pa" + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega328p" True True True @@ -111,7 +122,7 @@ - -mmcu=atmega644pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega644pa" + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.150\gcc\dev\atmega328p" True True True