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
PS: Es handelt sich übrigens um einen AVR 90S815 (oder so ähnlich, habs vergessen), programmiert mit AVR STudio 4, GCC und PonyProg...
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
Nope, '&&' ist logisches und, '&' ist bitweise. Und der Code oben ist schon richtig, vorrausgesetzt der Schalter ist wirklich an Pin0 vom PortA angeschlossen. /Ernst
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
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.