Ansteuerung eines PIN´s

Gast #433388
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
#433392
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
Gast #433863
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.