mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Pin Abfrage, einfaches Problem


Autor: Patrick (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein ATtiny25 hat keinen Pin C7!

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es handelt sich um einen ATMega8 16PU... wenn ich mich nicht verlesen 
habe gibt es einen Port C und Pin 7

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm komisch ich hatte mir dieses Bild angesehen

http://schnoell.tgm.ac.at/assets/images/autogen/a_...

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...

Autor: lkmiller (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Elektroniker (Gast)
Datum:

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

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war der Fehler!! Vielen Dank, jetzt funktioniert es !

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.