PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 32 als Inverter



uC-Anfänger
27.03.2010, 18:41
Hallo,

in meiner Schaltung muss ich ein Signal aus einem Mux (74 HC4067) Pin 1
invertieren. Da ich in der Schaltung einen Atmega32 verwende wollte ich
damit das Signal invertieren.
PortD Pin 4 soll der Eingang und Pin 5 der Ausgang für das invertierte
Signal sein.

Im C-Programm sieht das verkürzt auf diese Routine wie folgt aus:

void init(void);
#define IMPP PORTD
#define IMPPI PIND
#define IMPD DDRD

int main(void)
{
init();
while(1){

if (!(PIND & (1<<PIND4))) {
IMPP |= (1<<5);
}
else{
IMPP &= ~(1<<5);
}
}
}

void init()
{
DDRD = 0xff; // PORTD auf Ausgang setzen
DDRD &= (1<<PD4); // Pin 4 auf Eingang (Info <<)

PORTD=0x00;
}

Das Signal aus dem Mux bricht lt. Oszi fast ganz zusammen, sobald ich es
am Atmega anschließe.
Ist der Eingangswiderstand am Atmega so niedrig, dass das Signal getötet
wird, oder habe ich einen grundsätzlichen (Denk-)Fehler im Programm?

Hubert.G
27.03.2010, 19:34
DDRD &=~ (1<<PD4); // Pin 4 auf Eingang (Info <<)

uC-Anfänger
28.03.2010, 08:36
War wohl ein Schreibfehler, danke.
Werd's ausprobieren.