Attiny2313A in AVR Toolchain (noch) nicht unterstützt?

OP #2918256
Lesenswert?

ich verwende AVR Studio4 mit der aktuellsten AVR Toolchain, habs aber 
auch schon mit Version 6 versucht, doch beim PCINT_vect (wie er beim 
Attiny2313 auch genannt wird) gibts eine Warnung:

../main.c:355:1: warning: 'PCINT0_vect' appears to be a misspelled 
signal handler [enabled by default]

und auch wenn man auf PCINT1_vect oder PCINT2_vect umstellt funktioniert 
es nicht...

Wenn ich aber Device und Compiler auf Attiny2313 (ohne A) umstelle läuft 
der Compiler ohne Warnung und Fehler durch und das Programm funktioniert 
auch wunderbar am Attiny2313A (sind ja an sich nicht viele Unterschiede 
zwischen A und nicht A)

aber warum funktioniert das nicht wie es sollte?
#2918299
Lesenswert?

Die avr-libc unterscheidet strikt zwischen attiny2313 und attiny2313a. 
Das macht auch Sinn, weil die neue Variante mehr Features hat. Das sind 
unter anderem 2 zusätzliche Pin-Change-Interrupts für PORTA und PORTD.

avr/iotn2313a.h:
1
#define PCINT_B_vect_num  11
2
#define PCINT_B_vect      _VECTOR(11)  /* Pin Change Interrupt Request B */
3

4
#define PCINT_D_vect_num  20
5
#define PCINT_D_vect      _VECTOR(20)  /* Pin Change Interrupt Request D */
6

7
#define PCINT_A_vect_num  19
8
#define PCINT_A_vect      _VECTOR(19)  /* Pin Change Interrupt Request A */


Gruß Oliver
Gast #2918349
Lesenswert?

Hm meist gibt es in der Toolchain keinen Unterschied zwischen A und 
nicht A Varianten. Beim tiny44 z.B. ist auch die Signatur identisch so 
dass überhaupt nicht erkannt werden kann, welche Variante programmiert 
wird. Dito 168(A).
Da beim 2313 tatsächlich Features dazukommen, ist dann die Signatur auch 
anders?
#2918397
Lesenswert?

cyblord schrieb:
> Da beim 2313 tatsächlich Features dazukommen, ist dann die Signatur auch
> anders?
Natürlich nicht.

For the ATtiny2313 the signature bytes are:
1. 0x000: 0x1E (indicates manufactured by Atmel).
2. 0x001: 0x91 (indicates 2KB Flash memory).
3. 0x002: 0x0A (indicates ATtiny2313 device when 0x001 is 0x91).


For the ATtiny2313A the signature bytes are:
1. 0x000: 0x1E (indicates manufactured by Atmel).
2. 0x001: 0x91 (indicates 2KB Flash memory).
3. 0x002: 0x0A (indicates ATtiny2313A device when 0x001 is 0x91).


Bis auf die Pinchange-Interrupts auf allen Ports und den entsprechenden 
Vektoren sind die wohl auch gleich. Also für 2313 kompilierter Code 
müsste auf dem 2313A laufen. Umgekehrt nicht unbedingt.
Also einen 2313 kann man wohl bedingungslos durch einen 2313A ersetzen. 
Deswegen auch die gleiche Signatur. Nicht daß der Brenner rebelliert, 
wenn die Signatur im elf-File nicht passt.

Sollte man trotzdem nicht allzu lange drüber nachdenken.

mfg.
OP #2918562
Lesenswert?

aber ein Fehler bleibt in der iotn2313a.h dennoch:

#define GIMSK _SFR_IO8(0x03B)
#define PCIE 5
#define INT0 6
#define INT1 7

sollte lt. Datenblatt

#define GIMSK _SFR_IO8(0x03B)
#define PCIE1 3
#define PCIE2 4
#define PCIE0 5
#define INT0  6
#define INT1  7

sein...

sehe ich das richtig?
Gast #2918613
Lesenswert?

Andreas S. schrieb:
> sollte lt. Datenblatt
>
> #define GIMSK _SFR_IO8(0x03B)
> #define PCIE1 3
> #define PCIE2 4
> #define PCIE0 5
> #define INT0  6
> #define INT1  7
>
> sein...
>
> sehe ich das richtig?

Ja, das ist richtig, da der 2313A Pin-Change Interrupts an allen Pins 
hat bin ich damals unter AVR Studio4 vom 2313 auf den 2313A umgestiegen 
und habe mich über solch einen Fehler gewundert. Nach der Korrektur 
dieser falschen Dateien per Texteditor hat dann alles funktioniert. Nach 
dem Umstieg auf AVR Studio5 war das Problem erneut vorhanden. Und beim 
Umstieg auf AVR Studio6 wieder.

D.h. ich muss dann bald beim Umstieg auf Studio7 wieder die Dateien 
korigieren.

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