mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schalter an XTAL1+2 möglich?


Autor: M.Valentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe Probleme mit meinem ATMEGA8. Ich habe zwei Schalter an XTAL1+2
über 4,7k(+5V) angeschlossen. Interner Oszillator ist auf 8MHz
gestellt. Es ist also kein externer Oszi vorhanden und laut Datenblatt
kann man die freien Ports(PB6+PB7) dann auch als I/O Pins nutzen. Es
liegen definitiv 5V an den beiden Pins bei geöffnetem Schalter.
Allerdings tritt in meiner Software folgendes Problem auf:

//FuseBits: 0xD984

DDRB=0b00111111; //7..6 Eingang, 5..0 Ausgang
PORTB=0b11111111;//Pull-Up aktivieren
x=PORTB&11000000;//Maskierung der beiden SChalter

while(x!=0){...// ! Hier ist das Problem!

Normalerweise sollte die SChleife solange ausgeführt werden bis beide
Schalter gleichzeitig gedrückt werden und PB7+6 auf Masse(0)ziehen. Aus
irgendwelchen Gründen bricht er die Schleife aber sofort ab, was
bedeutet, dass der µP PB7+6 schon als 0 deutet obwohl High-Pegel
anliegt.
Kann mir da jemand weiter helfen oder hat jemand ähliche Probleme mit
Schaltern an Xtal gehabt? Muss man vielleicht noch andere Register
(de)aktivieren?
Danke schon mal für die Antworten!

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
x=PORTB&11000000;//Maskierung der beiden SChalter

x=PINB&11000000;//Maskierung der beiden SChalter

Autor: M.Valentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort, aber wo ist der Unterschied zwischen PORTB und
PINB?Brauch ich etwa beide um die Abfrage der Schalter auszuführen?

Autor: Werner A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit PINB kannst Du den Eingang lesen...

Autor: M.Valentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das gleiche kann ich doch auch mit Einlesen von PORTB tun, tut mit leid,
aber ich seh immer noch nicht den Unterschied zwischen PINB nd PORTB.
Und das Programm läuft auch nicht, wenn ich PINB in die while-Schleife
einfüge. Hab ich gerade ausprobiert...

Autor: M.Valentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung, kleiner Eingabefehler von mir. Maskierung mit PINB
funktioniert jetzt. Vielen Dank für den Tip. Ist mir nur schleierhaft,
warum das mit PORTB nicht geklappt hat, weil ich sonst in meinen
Programmen immer so gearbeitet habe

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit PORTB liest du nicht den realen Zustand an "den Beinchen", sondern
nur den Inhalt des PORTB Registers. Für Zustandsabfrage an den Eingängen
mußt du zwingend PINB benutzen.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird auch nie laufen, wenn Du PINB mit Elf-Millionen verUNDest ...

> aber ich seh immer noch nicht den Unterschied zwischen PINB nd
> PORTB.

Entweder Dirk und Werner glauben oder im selber sehen - im datenblatt.

Gruß, Stefan

Autor: M.Valentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tschuldigung hab ich nur falsch gepostet mit den 11 Millionen. Im
Programm steht schon noch 0b davor. Aber es geht ja jetzt auch alles
wunderbar. DAnke noch mal!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.