hey,
vorweg ich bin blutiger anfänger in C, ich hab vorher immer nur in Basic
programmiert und wage jetzt den umstieg ;)
Irgendwie wird bei meinem Programm der ADC nicht ausgelesen und am LCD
ausgegeben, wenn ich in die Variable aber einen festen Wert schreibe und
den ADC kram auskommentiere, kommt der Wert aber richtig am LCD an, also
muss es am ADC liegen.
hier mein minimalistischer Code, ich hoffe ihr könnt mir helfen.
1 | #include <avr/io.h>
|
2 | #define F_CPU 8000000
|
3 | #include <util/delay.h>
|
4 | #include "lcd-routines.h"
|
5 | #include <stdlib.h>
|
6 | #include <inttypes.h>
|
7 |
|
8 |
|
9 | int main (void)
|
10 | {
|
11 | lcd_init();
|
12 | int x;
|
13 | DDRC = 0x00; // Port C als Eingang
|
14 | ADMUX= 0b00000000;
|
15 | while(1)
|
16 | {
|
17 | x=500;
|
18 | ADCSR= 0b1100110; // ADC Einstellen und Starten
|
19 | while (bit_is_set(ADCSR,6)); // Warten bis Umwandlung von PINC0 erfolgt ist.
|
20 | x=ADCW; // Wert aus dem ADC holen
|
21 |
|
22 | char Buffer[5];
|
23 | itoa ( x, Buffer, 10);
|
24 | lcd_string(Buffer);
|
25 | _delay_ms(500);
|
26 | lcd_clear();
|
27 |
|
28 |
|
29 | }
|
30 | return 0;
|
31 | }
|
mfg pepe