Verfälscht externer Quarz Bitmasken?

OP #2130285
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
#2130521
Lesenswert?
• ▲
▼
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
  uint8_t inval = PINB & (1<<PB0 | 1<<PB7);


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.