Hi Leutz, möchte mit dem AVR-Testboard (MK2 mit Atmega8) schon mal testweise ein Programm erstellen, welches dann später leicht abgewandelt auf einem Attiny13 lauffähig ist. Daher benutze ich auf dem AVR-Testboard natürlich ausschließlich den Port B. Dieser wird belegt mit zwei digitalen Eingängen, einem digitalen Ausgang und einem PWM-Ausgang. Nun möchte ich logischerweise Bitmuster abfragen, um diese als Einschaltbedingungen für den digitalen Ausgang zu nutzen. Kann es sein, daß mir der externe Quarz (dieser hängt ja an PB6 und PB7) da hineinfunkt und ich nicht direkt Bitmuster abfragen kann? Hier mal als Beispiel: DDRB=0b00000011; //Bit 1 und 2 sind Ausgänge PORTB=0b11111100; //Pull UP Bit 3-8 auf EIN . . . if ((Variable1==1) & (!(PINB==0b11111111))) PORTB=0xFF; Hier soll abgefragt werden, ob Variable 1 gesetzt ist und gleichzeitig kein Taster gedrückt ist. Dies würde, wenn ich dies als PIND deklariere, tadellos funktionieren. Bei PINB jedoch klappt das nicht, wie ich mir das wünsche. Weiß da jemand Rat? Danke schon mal :-). Daniel
Gast
#2130294
Hi >Kann es sein, daß mir der externe Quarz (dieser hängt ja an PB6 und PB7) >da hineinfunkt und ich nicht direkt Bitmuster abfragen kann? Nicht der Takt. Bit 6 und 7 gibt es nicht. Datenblatt: If PB7 is used as a clock pin, DDB7, PORTB7 and PINB7 will all read 0. MfG Spess
Das heißt, wenn PB6 und PB7 wegfallen, würde meine Bitmaske z.B. so aussehen? if (!(PINB & 0b100000)) ... Wobei die "1" in diesem Ausdruck dann PB5 beschreibt, sehe ich das richtig?
@ Daniel Lo (dannynrw) >Das heißt, wenn PB6 und PB7 wegfallen, würde meine Bitmaske z.B. so >aussehen? >if (!(PINB & 0b100000)) >... >Wobei die "1" in diesem Ausdruck dann PB5 beschreibt, sehe ich das >richtig? ja. Aber das schreibt man eher so, da ist es deutlich besser lesbar. if (!(PINB & (1<<PB5))) Siehe Bitmanipulation
Daniel Lo schrieb: > Daher benutze ich auf dem AVR-Testboard natürlich ausschließlich den > Port B. Dieser wird belegt mit zwei digitalen Eingängen, einem digitalen > Ausgang und einem PWM-Ausgang. Dann fragt man eben nur die beiden Eingänge ab. Das Isolieren bestimmter Bits nennt sich Maskieren (& - Operator). Danach sind alle unnützen Bits egal. Z.B. Pin 0 und 7:
1 | |
Peter
Danke für die Tipps, habe die Tage mal ein wenig damit rumexperimentiert und bin jetzt ein bißchen weiter. Beste Grüße :-). Daniel
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.