www.mikrocontroller.net

Forum: Compiler & IDEs Einfacher Schalter am AVR


Autor: VanKurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute!
Ich versuche gerade einfache Schalter an meinem AVR anzubringen, und
dann in der SOftware auf deren Eingabe zu reagieren. Erstmal zur
Hardware:

Ein Kumpel, bei dem das alles schon funktioniert hat gesagt, ich solle
den Schalter einfach zwischen einen Pin am AVR und Masse setzen. Das
hab ich dann auch gemacht.

Nun zur Software:
Zuerst habe ich den Pin als Eingang gesetzt und die internen Pullups
aktiviert:

DDRA = 0x00;
PORTA = 0xff;

Dann frage ich in der Hauptschleife meiner Software folgendes ab:

if( PINA & (1<<PINA0) ) doSomething();

Irgendwie scheint das ganze aber nicht zu funktionieren...
Deshalb meine Frage an euch Profis: Hab ich das so richtig gemacht?

Danke :-D

Autor: VanKurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Es handelt sich übrigens um einen AVR 90S815 (oder so ähnlich, habs
vergessen), programmiert mit AVR STudio 4, GCC und PonyProg...

Autor: EISmeter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich kenn den AVRGCC leider nicht so genau,
aber heißt das in C normalerweise nicht so ?

if (PINA && (1<<PINA0)) doSomething(); // also mit zwei &
                                       // --> Bitweises UND


Gruß,
mk

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nope, '&&' ist logisches und, '&' ist bitweise.
Und der Code oben ist schon richtig, vorrausgesetzt der Schalter ist
wirklich an Pin0 vom PortA angeschlossen.

/Ernst

Autor: Dirk Bxxxxx (dirk-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

/* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB
geloescht (0) ist */
if ( !(PINB & (1<<PINB2)) ) {
  /* Aktion */
}


Deine Taste ist Low Aktiv.

Gruß,
Dirk

Autor: VanKurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OMFG! Das macht Sinn. Vielen Dank euch allen!

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.