Guten Morgen Ich habe ein einfaches Problem, bei dem ich aber noch nicht die Lösung gefunden habe. Ich möchte einfach eine Pin Abfrage machen, folgender Code: #include <avr/io.h> #include <delay.h> #include <stdio.h> inline uint8_t debounce(volatile uint8_t *port, uint8_t pin) { if ( ! (*port & (1 << pin)) ) { /* Pin wurde auf Masse gezogen, 100ms warten */ _delay_ms(50); // max. 262.1 ms / F_CPU in MHz _delay_ms(50); if ( *port & (1 << pin) ) { /* Anwender Zeit zum Loslassen des Tasters geben */ _delay_ms(50); _delay_ms(50); return 1; } } return 0; } int main(void) { DDRC &= ~( 1 << PC7 ); /* PIN auf Eingang (Taster) */ PORTC |= ( 1 << PC7 ); /* Pullup-Widerstand aktivieren */ if (debounce(&PINC, PC7)) /* Falls Taster an PIN gedrueckt.. */ PORTC = PINC ^ ( 1 << PC4 ); /* ..LED an Port anbzw. ausschalten */ } Leider kommt immer die Fehlermeldung das PC7 nicht deklariert ist, wie kann ich abfragen ob an einem Pin high liegt ohne Pxn ? (x..Port, n..Pinnummer) ../test.c:25: error: 'PC7' undeclared (first use in this function) ../test.c:25: error: (Each undeclared identifier is reported only once ../test.c:25: error: for each function it appears in.) In jedem Tutorial wird Pxn verwendet.... Ich würde mich über eine Hilfestellung freuen lg
Patrick wrote: > Leider kommt immer die Fehlermeldung das PC7 nicht deklariert ist, wie > kann ich abfragen ob an einem Pin high liegt ohne Pxn ? (x..Port, > n..Pinnummer) > > ../test.c:25: error: 'PC7' undeclared (first use in this function) > ../test.c:25: error: (Each undeclared identifier is reported only once > ../test.c:25: error: for each function it appears in.) Hat Dein Controller denn überhaupt einen Pin 7 am Port C? Ich vermute mal nein.... Da Du nicht erzählst, mit welchem AVR Du arbeitest, musst Du es selber nachsehen. Ansonsten mal sicherstellen, dass der im Makefile eingestellte µC auch dem entspricht, den Du programmieren willst.
Es handelt sich um einen ATMega8 16PU... wenn ich mich nicht verlesen habe gibt es einen Port C und Pin 7
Patrick wrote:
> Es handelt sich um einen ATMega8 16PU...
Weiß der Compiler das auch?
EDIT:
Der Mega8 hat übrigens keinen Pin 7 an Port C! Du hast Dich also
offensichtlich tatsächlich verlesen...
hmm komisch ich hatte mir dieses Bild angesehen http://schnoell.tgm.ac.at/assets/images/autogen/a_mega8-anschlussbelegung2.gif da gibts einen Port C mit Pin 7 , möglicherweise ist das ein falsches Bild ... ich wollte ein funktionierendes Programm um die Tasteneingabe erweitern, ich nehme an dass das Makefile richtig ist...
Das Bild ist nicht falsch, sondern nur unvollständig. Du verwendest den PD7. Nach dem Bild könnte man auch meinen, es gäbe den PC1 doppelt. Atmel gibt seine Datenblätter kostenlos zum Download frei, is das nix?
Patrick wrote: > da gibts einen Port C mit Pin 7 , möglicherweise ist das ein falsches > Bild Das Bild ist bis auf die beschissene Auflösung schon richtig. Und einen PC7 gibt es da auch nicht. Ich frage mich nur, wozu es eigentlich Original-Datenblätter vom Hersteller gibt...
lkmiller wrote: > Das Bild ist nicht falsch, sondern nur unvollständig. > Du verwendest den PD7. > Nach dem Bild könnte man auch meinen, es gäbe den PC1 doppelt. Stimmt, das PD7 sieht tatsächlich aus wie PC7... Wer stellt eigentlich derart beschissene Bilder ins Netz?
Ich vermute mal das du C7 mit D7 (PIN13) verwechselst, zumindest sieht das D bei deinem Bild aus wie ein C. Schau doch mal hier: http://www.roboternetz.de/wissen/index.php/Atmel_Controller_Mega8
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.