Hallo, an PORTD sind Taster, an PORTB sind LED's (gegen Masse). Das folgende Programm funktioniert auch: //------------------- #include <avr/io.h> int main(void) { DDRB = 0xFF; PORTB = 0x00; DDRD = 0x00; PORTD = 0xFF; for(;;) PORTB = ~PIND; } //------------------- Wird eine Taste gedrückt, leuchted die korrespondierende LED. Wenn ich jetzt aber statt PORTD den PORTC verwende: //------------------- #include <avr/io.h> int main(void) { DDRB = 0xFF; PORTB = 0x00; DDRC = 0x00; PORTC = 0xFF; for(;;) PORTB = ~PINC; } //------------------- dann werden alle LED's eingeschaltet und kein Tastendruck ausgewertet. Spielt mir hier vielleicht der ADC einen Streich? Muss man den ADC explizit ausschalten? Ich dachte, man kann alle Ports prinzipiell als digitale I/O's verwenden und wenn man was Spezielles machen will, muss das extra konfiguriert werden. Joline
Nein. Sollte man das tun? Muss ich gleich noch mal im Datenblatt nachlesen.
Also wenn ich das richtig lese, benötigt man AVCC/AGND nur wenn man den ADC benutzen will. Aber genau das will ich ja nicht, sondern ich brauche nur digitale Eingänge.
Lustigerweise steht im Datenblatt: "AVCC is the supply voltage for Port A and the A/D Converter. If the ADC is not used, this pin must be connected to VCC. If the ADC is used, this pin should be connected to VCC via a low-pass filter." Es soll doch aber Port C, und nicht Port A verwendet werden :-) Aber egal, man sollte an AVCC tatsächlich die Betriebsspannung (und an AGND auch GND) anschließen, "Port A" dürfte nur ein Druckfehler sein, oder? Gruß Ingo
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.