DDRD &=~ (1<<PD4); // Pin 4 auf Eingang (Info <<)
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?
DDRD &=~ (1<<PD4); // Pin 4 auf Eingang (Info <<)
War wohl ein Schreibfehler, danke.
Werd's ausprobieren.
Lesezeichen