Hallo
Ich möchte ein einfaches kleines Test-Programm für den ATtiny88
schreiben, welches mir den per AD-Wandler geandelten Wert eines Kanals
auf Port D ausgibt. Ich programmiere mit dem IAR Studio. Der ATtiny
läuft mit dem internen Oszillator (8MHz und CLKDIV eingeschaltet, also
Systemtakt 1MHz).
Der Code:
1 | #include <ioavr.h>
|
2 | #include <intrinsics.h>
|
3 |
|
4 | int main( void )
|
5 | {
|
6 | ADCSRA_ADEN = 1;
|
7 | ADCSRA_ADPS2 = 1;
|
8 |
|
9 | ADCSRB_ADTS2 = 0;
|
10 | ADCSRB_ADTS1 = 0;
|
11 | ADCSRB_ADTS0 = 0;
|
12 |
|
13 | DDRC = 0x00;
|
14 | PORTC = 0x00;
|
15 | DDRD = 0xFF;
|
16 |
|
17 | for (;;)
|
18 | {
|
19 | ADCSRA_ADSC = 1;
|
20 | while(ADCSRA_ADSC);
|
21 | PORTD = ADCL;
|
22 | }
|
23 |
|
24 | return 0;
|
25 | }
|
Das Problem ist nun folgendes: Wenn ich mit dem IAR Studio über die
OneWire Schnittstelle debugge und dabei das Programm von Hand
durchsteppe, also Schritt für Schritt, dann funktioniert alles. Lasse
ich es aber einfach laufen, dann werden die LEDs (welche an PORTD sind)
genau ein mal am Anfang angesteuert, danach passiert gar nichts mehr
wenn ich die Spannung variere.
Mache ich etwas bei der Initialisierung des ADCs falsch oder liegt sonst
wo ein Fehler?
Oliver