Abend. Im Moment versuche ich den ADC Wert an ADCO auszulesen und via USART an PC zu versenden. Das versenden von Daten per USART funktioniert, aber ich habe noch Promleme mit ADC. Irgendwie funktioniert es nicht. Hier ist meine Code Die SerialMonitor bekommt immer <NULL> zugesendet. Wasmache ich falsch?:)
1 | #include <avr/io.h> |
2 | #define F_CPU 16000000 |
3 | #define USART_BAUDRATE 9600 |
4 | #define BAUD_PRESCALE (F_CPU / 16 / USART_BAUDRATE ) |
5 | |
6 | int main (void) |
7 | { |
8 | int Res; |
9 | DDRF = 0<<PF0; |
10 | PORTF=1<<PF0; |
11 | ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Set ADC prescaler to 128 - 125KHz sample rate @ 16MHz |
12 | |
13 | ADMUX |= (1<< REFS0); |
14 | // Set ADC reference to AVCC |
15 | ADMUX |= (1 << ADLAR); // Left adjust ADC result to allow easy 8 bit reading |
16 | |
17 | // No MUX values needed to be changed to use ADC0 |
18 | |
19 | |
20 | ADCSRA |= (1 << ADEN); // Enable ADC |
21 | ADCSRA |= (1 << ADSC); // Start A2D Conversions |
22 | UCSR0B |= (1 << RXEN0) | (1 << TXEN0); // Turn on the transmission and reception circuitry |
23 | UCSR0C |= (0<<UMSEL00)|(1 << UCSZ00) | (1 << UCSZ01); // Use 8-bit character sizes |
24 | |
25 | // Load upper 8-bits of the baud rate value into the high byte of the UBRR register |
26 | UBRR0 = BAUD_PRESCALE; |
27 | for (;;) // Loop forever |
28 | { |
29 | Res = ADCL; |
30 | |
31 | UDR0= Res; |
32 | |
33 | |
34 | |
35 | } |
36 | } |