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


von M.Valentin (Gast)


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!

von Dirk (Gast)


Lesenswert?

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

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

von M.Valentin (Gast)


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?

von Werner A. (Gast)


Lesenswert?

mit PINB kannst Du den Eingang lesen...

von M.Valentin (Gast)


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...

von M.Valentin (Gast)


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

von mmerten (Gast)


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.

von Stefan Kleinwort (Gast)


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

von M.Valentin (Gast)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.