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!
x=PORTB&11000000;//Maskierung der beiden SChalter x=PINB&11000000;//Maskierung der beiden SChalter
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?
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...
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.