Ansteuerung eines PIN´s

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

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.