io-Headerfiles lückenhaft? (PCINT3)

#4154585
Lesenswert?

Hallo,
beim Programmieren des ATtiny85 fiel mir auf, daß der gcc herummault, 
ich hätte mich beim PCINT3_vect vertippt:

1
beispiel.c:254:5: warning: 'PCINT3_vect' appears to be a misspelled signal handler [enabled by default]
2
 ISR(PCINT3_vect) {

Habe ich nicht, denn den PCINT3 (und andere, die er auch anmeckert) gibt 
es laut Datenblatt sehr wohl. Den PCINT0 hingegen läßt der gcc 
durchgehen. Den kann ich aber nicht gebrauchen ...

Daraufhin grub ich mal etwas in den Includes. Für den ATtiny88 zB ist 
der PCINT3, um bei dem Beispiel zu bleiben, in dessen iotn88.h 
vorhanden.

Ist das bekannt? Bin ich der erste, der drüber stolpert? Oder nur der 
erste, der das Stolpern dokumentiert?

VG, Jan.
Gast #4154599
Lesenswert?

Im Prinzip richtig, aber eine Klarstellung:
PCINT0

Blöderweise sind die Pins m.E. wirklich etwas mißverständlich benannt.
Sie teilen sich alle einen Interruptvector, eben den PCINT0.

Sagt das Datenblatt auch so, Seite 48, da sind die Interruptvektoren 
gelistet.
Gast #4154608
Lesenswert?

Ich weiss nicht wie es auf dem Tiny85 ist, aber beim Tiny13 gibt es nur 
eine ISR für pcint. In der muss man dann die Eingänge selber prüfen.

Grüsse,
René

e.g.
1
ISR (PCINT0_vect)
2
{
3
    uint8_t changedbits;
4

5
    changedbits = PINB ^ portbhistory;
6
    portbhistory = PINB;
7

8
    if(changedbits & (1 << PB0))
9
    ...
#4154639
Lesenswert?

Jepp, die Tabelle unter Kap. 9.1 sagt es implizit:

1
rjmp RESET           ; Address 0x0000
2
rjmp INT0_ISR        ; Address 0x0001
3
rjmp PCINT0_ISR      ; Address 0x0002
4
rjmp TIM1_COMPA_ISR  ; Address 0x0003
5
rjmp TIM1_OVF_ISR    ; Address 0x0004
6
:
7
:

Und der Text danach erläutert. Es gibt bei dem t85 nur einen Vektor für 
PCINT0.

Aaach, es ist doch immer dasselbe: kaum schaut man mal richtig im 
Datenblatt an den relevanten Stellen, schon lüften sich Mysterien ;-)

Danke fürs Hinschubsen an alle schnellen Erläuterer hier!

VG, Jan.

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