AVR Pin Abfrage, einfaches Problem

Gast #902129
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
#902133
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.
Gast #902177
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?
#902178
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...
#902184
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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.