Hi,
Vorab: verwendete Hardware:
µC: ATTINY13-20PU @ 8 MHz
Prog: AVR-DRAGON
Ich möchte einen ADC-Pin nachdem eine Wandlung durchgeführt wurde, und
diesen einen gewissen Wert erbracht hat, als Ausgang umschalten.
In der Theorie würde ich sagen - auch nachdem, was ich im gcc Tutorial
gelesen habe - ADC ausschalten über ADCSRA (Bit Aden auf 0) und dann den
Port über das entsprechende DDR auf Ausgang umschalten.
Bei mir tritt nun folgendes Problem auf: Die AD-Wandlung wird
durchgeführt. Sobald ich das Port-Bit allerdings auf Ausgang umschalte
ist der ganze Port anschließend tot. Keinerlei reaktion mehr.
Die Funktion "ReadChannel" habe ich aus dem GCC Tutorial, die
funktioniert einwandfrei. Das konnte ich Prüfen, indem ich einfach das
Umschalten von PORTB4 weggelassen habe und dafür nur über PORTB3 die
ausgabe gemacht habe.
1 | int main(void)
|
2 | {
|
3 | while(1)
|
4 | {
|
5 | if(ReadChannel(0b10) > ADC_SCHWELLWERT)
|
6 | {
|
7 | config_output();
|
8 | PORTB |= (1<<PORTB3) | (1<<PORTB4);
|
9 | _delay_ms(500);
|
10 | PORTB &= ~((1<<PORTB3) | (1<<PORTB4));
|
11 |
|
12 | }
|
13 | } // while(...
|
14 | } // int main(v...
|
15 |
|
16 | void config_output()
|
17 | {
|
18 | ADCSRA &= ~(1<<ADEN); // ADC aus
|
19 | _delay_ms(100); // sicherheitshalber mal 100ms warten
|
20 | DDRB |= (1<<DDB3) | (1<<DDB4); / DDR einstellen
|
21 | }
|
Ja ich denke (hoffe), dass das erstmal genug Infos sind, und mir jemand
schonmal sagen kann, was genau ich falsch mache.
Gruß