Kurze Frage damit ich meinen Fehler irgendwie finde . Ich deklariere wie folgt : DDRA = 0b11111100; PORTA = 0b10000011; also PA1 und PA0 auf Eingang . Den Eingang frage ich dann folgendermaßen ab : if (!(PINA & 0b00000001)) { ... } allerdings springt er immer wieder in die If Schleife obwohl ich den Taster gar nicht gedrückt habe . Alles an einem AtMega162 betrieben . Kann mir da jemand mal eben auf die Sprünge helfen ?!
Hast du externe Pullups dran? Falls nicht: Schreibst du an irgendeiner anderen Stelle im Code das PORTA-Register und deaktivierst damit vllt die internen Pullups?
wenn ich PORTA = 1 << 7; schreibe heißt das das ich 0b01000000 erhalte ? wenn mein Ausgangscode 0b00000000 war ? . Kommer da irgendwie immer wieder durcheinandern :S . Aber das könnte das Problem sein .
Jan schrieb: > wenn ich PORTA = 1 << 7; schreibe heißt das das ich > 0b01000000 erhalte ? nein du erhältst 0b10000000, denn du shiftest die 0b00000001 7 mal nach links. Danach steht die 1 im höchsten Bit. > wenn mein Ausgangscode 0b00000000 war ? egal was vorher in PORTA drin war, ist nach der Zuweisung komplett mit (1<<7) überschrieben. Hast du nun externe Pullups dran?
Skript Kiddy schrieb: >> wenn mein Ausgangscode 0b00000000 war ? > > egal was vorher in PORTA drin war, ist nach der Zuweisung komplett mit > > (1<<7) überschrieben. Aha ok das ist mein Problem dann habe ich mir damit immer den PullUp versaut . Dachte er würde egal wie es vorher aussah dann nur die 1 an Stelle 8 schreiben. Wie kann ich denn ein Bit setzen ohne den Rest zu ändern ?
setzen PORTA = PORTA | (1<<7); kürzer PORTA |= (1<<7); löschen PORTA = PORTA & ~(1<<7); kürzer PORTA &= ~(1<<7);
Jan schrieb: > allerdings springt er immer wieder in die If Schleife obwohl ich den > Taster gar nicht gedrückt habe . achja schau mal hier hin: http://www.if-schleife.de/ SCNR :)
An der einen Stelle hat's geklappt an der anderen nicht . Wenn ich DDRC = 0b11111111; PORTC = 0b00000000; deklariere soll mit PORTC|=(1<<6); eine LED angehen . Allerdings geht PC1 und nicht PC 6 auf high ?! . Wieso ?! :( .
Ist JTAG per fusebit aktivert? Dann kannst du nämlich PC7:PC4 nicht schreiben, weil die Pins für JTAG verwendet werden. Poste mal den gesamten Code als Dateianhang. Da kann ich mal schauen was da schief läuft.
Schon Problem gelöst hatte ein Datenblatt mit falsche Pin Belegung . Mist google .
Skript Kiddy schrieb: > Bitte habe dir gerne geholfen. Allerdings ich danke dir vielmals .War eben nur so euphorisch das ich schnell alles ändern musste . Also vielen Dank nochmal ohne dich hätte ich ewig gesucht . Ich habe zwar gerade das neue Problem das ich die Pullups vom PORTA nicht an bekomme obwohl richtig gesetzt aber naja bekomme ich hoffentlich hin . PORTA kann hoffentlich überhaupt auch als Eingang verwendet werden :S
Wollte im übrigen PA0 und PA1 als Eingang nutzen aber wie gesagt schein nicht zu gehen .
Jan schrieb: > PORTA kann hoffentlich überhaupt auch als Eingang verwendet werden :S Ja kann er. Bitte poste mal deinen Code. Ich hab meine Glaskugel nämlich aufgrund von Hitzeproblemen zurück in den Schrank gepackt. Aber bitte den Code als Anhang.
Ja der Quelltext ist leider etwas sehr umfangreich und vielleicht auch unübersichtlich . Habe einen neuen Controller genommen und siehe da es klappt . Hab beim rumprobieren vermutlich die Pullups gekillt :S
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.