www.mikrocontroller.net

Forum: Compiler & IDEs Ansteuerung eines PIN´s


Autor: Marcus Wolter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: André Kronfeldt (freakazoid)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcus Wolter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.