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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.