AtMega162 Portprobleme!

Gast #1784584
Lesenswert?

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 ?!
Gast #1784610
Lesenswert?

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 .
#1784617
Lesenswert?

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?
Gast #1784621
Lesenswert?

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 ?
Gast #1784687
Lesenswert?

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 ?! :( .
Gast #1784761
Lesenswert?

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
Gast #1784833
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren