AT90S4433 -> PORTC/PINC

Gast #109332
Lesenswert?

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
Gast #109337
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren