Forum: Compiler & IDEs Ansteuerung eines PIN´s


von Marcus Wolter (Gast)


Lesenswert?

Moin

Habe mit einem ATMEGA 8 in WIN AVR eine schöne Schaltung realisiert, die 
allerdings erst ablaufen soll, sobald der Eingang PB7 meines ATMEGA 8 
statt des normalen 0 V Signals das von mir über einen Taster gesteuerte 
5 V Signal bekommt. Das Problem besteht nun darin, das wir mit allen 
Programmierversuchen kläglich gescheitert sind und nicht wissen, ob es 
an unseren durchschnittlichen Programmierkenntnissen oder einem Fehler 
in unserer Denkweise liegt und man dem PIN nicht einfach sagen kann das 
er erst sobald er 5 V hat den Rest der Programmierung ausführen soll.

Hiermit haben wir es versucht, doch irgendwas daran scheint nicht zu 
stimmen:

if((PORTB & (0<<PIN7))==0x80){Hier steht der Rest}

Es wäre sehr nett wenn mir jemand mit nem Tipp weiterhelfen könnte.

Mfg Marcus

von André K. (freakazoid)


Lesenswert?

Fehler1:
Benutze PINB, statt PORTB

PORTB=Ausgangsregister
DDRB=Data Direction Register
PINB=Eingangsregister

Fehler2:
0<<x ergibt immer 0. Mit & verknüpft gibt auch immer 0.
Lies das Tutorial (Bitmaskierungen)

Fehler3:
Feste Werte (0x80) und definierte Konstanten (PIN7) mischen ist böse.
Was ist, wenn PIN7 (denke hier wohl mit 7 deklariert), plötzlich 6
ist? Dann würdest Du bei Deiner Weise mit 0x40 vergleichen müssen.
Das produziert Fehler, die Du nie findest.

Lösung:
if(PINB & (1<<PIN7))
{
}

> Programmierversuchen kläglich gescheitert sind und nicht wissen, ob es
> an unseren durchschnittlichen Programmierkenntnissen
Ja ;-)

Grüße, Freakazoid

von Marcus Wolter (Gast)


Lesenswert?

Moin!

> Programmierversuchen kläglich gescheitert sind und nicht wissen, ob es
> an unseren durchschnittlichen Programmierkenntnissen

Jaja ! Es stimmte !

Danke für den Tipp!

Hat uns sehr geholfen!!

Mfg Marcus

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.