AVR XPlained 328PB Freigabe/Nutzung von PCINT 21

Gast #6067809
Lesenswert?

Guten Tag Zusammen,

leider habe ich ein Problem beim nutzen des PCINT21 [PD5].

Vorab ein paar Infos:
Ich Programmiere im aktuellen AVR Studio und nutze das Microchip 
XPlained 328PB.

Momentan ist der Plan über einen Taster, welcher an PD5 angeschlossen 
ist (Wenn Taster gedrückt = LOW, Taster nicht gedrückt = HIGH) eine LED 
an PC3 zum leuchten zu bringen.

Hierzu folgender Programmteil:



define F_CPU 16000000
#include <avr/interrupt.h>
#include <avr/io.h>
#include <asf.h>


ISR(PCINT21_vect){
  PORTC|=1<<PORTC3;

}

int main (void)
{
  DDRD|=1<<PORTD5;
  PCICR|=1<<PCIE2;
  PCMSK2|=1<<PCINT21;

  sei();
  while(1){}

}



Leider kommt hier immer eine Fehlermeldung bezüglich dem Handler:

'PCINT21_vect' appears to be a misspelled signal handler, missing 
__vector prefix [-Wmisspelled-isr]

Da ich das Datenblatt nun das zweite Wochenende (ohne Ergebnis) nach 
einer Lösung durchsucht habe, hoffe ich hier Hilfe finden zu können.


Mit bestem Dank und freundlichen Grüßen
Christoph
Gast #6068339
Lesenswert?

Guten Abend  S.Landolt,

erstmal herzlichen Dank für Ihre schnelle Antwort.

Die betreffenden Stelle (Auszug aus dem Datenblatt) habe ich mir nochmal 
angeschaut... muss ich gekonnt ignoriert haben. Wie Sie bereits gesagt 
haben es muss ISR(PCINT2_vect) heißen.

Mit dem Fehler im Quelltext (DDRC|=1<<PC3) haben Sie recht der ist 
jedoch schon behoben. Ebenso habe ich externe Pullups verwendet.

Muss aber noch ein Fehler haben... geht leider immer noch nicht. Aber 
hat mir schon mal sehr geholfen.
Gast #6068529
Lesenswert?

> geht leider immer noch nicht

Also bei mir läuft es; vielleicht besteht ein Missverständnis bezüglich 
der Funktion: nach Programmstart liegt C3 auf low, nach Drücken von 
Taster an D5 geht C3 dauerhaft auf high.
1
#define F_CPU 16000000
2
#include <avr/interrupt.h>
3
#include <avr/io.h>
4

5
ISR(PCINT2_vect){
6
  PORTC|=1<<PORTC3;
7
}
8

9
int main (void)
10
{
11
  PORTD|=PORTD5;
12
  DDRC|=1<<PORTC3;
13
  PCICR|=1<<PCIE2;
14
  PCMSK2|=1<<PCINT21;
15

16
  sei();
17
  while(1){}
18
}
Gast #6071565
Lesenswert?

Guten Abend Zusammen,

Entschuldigung, dass ich mich jetzt erst ein paar Tage später melde.

Also das Programm Funktionier doch, warum es aber erst ein Tag später 
ging kann ich nicht sicher sagen. Ich vermute, dass es ein 
Kontaktproblem an der Schalterschnittstelle war (Steckkontakt). Das habe 
ich aber inzwischen geändert.

Habe gestern schon einiges damit ausprobiert und es läuft absolut 
zuverlässig. Jetzt kann es weiter gehen mit meinem Projekt.

Möchte mich nochmal ganz herzlich für die ultra schnelle Hilfe hier 
bedanken und wünsch eine schöne Weihnachtszeit.

Grüße Christoph

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren