Forum: Mikrocontroller und Digitale Elektronik ATtiny10 ISR TIM0_COMPB_vect


von ISRISR (Gast)


Lesenswert?

Hallo,
sobald ich eine ISR für TIM0_COMPB_vect definiere bekomme ich den Fehler 
register not supported.
1
ISR (TIM0_COMPB_vect)
2
{
3
  zaehler++;
4
}

#include <avr/interrupt.h> ist drin

laut der iotn10.h ist das so richtig geschrieben
1
/* Interrupt vectors */
2
/* Vector 0 is the reset vector */
3
#define INT0_vect_num  1
4
#define INT0_vect      _VECTOR(1)  /* External Interrupt Request 0 */
5
#define PCINT0_vect_num  2
6
#define PCINT0_vect      _VECTOR(2)  /* Pin Change Interrupt Request 0 */
7
#define TIM0_CAPT_vect_num  3
8
#define TIM0_CAPT_vect      _VECTOR(3)  /* Timer/Counter0 Input Capture */
9
#define TIM0_OVF_vect_num  4
10
#define TIM0_OVF_vect      _VECTOR(4)  /* Timer/Counter0 Overflow */
11
#define TIM0_COMPA_vect_num  5
12
#define TIM0_COMPA_vect      _VECTOR(5)  /* Timer/Counter Compare Match A */
13
#define TIM0_COMPB_vect_num  6
14
#define TIM0_COMPB_vect      _VECTOR(6)  /* Timer/Counter Compare Match B */
15
#define ANA_COMP_vect_num  7
16
#define ANA_COMP_vect      _VECTOR(7)  /* Analog Comparator */
17
#define WDT_vect_num  8
18
#define WDT_vect      _VECTOR(8)  /* Watchdog Time-out */
19
#define VLM_vect_num  9
20
#define VLM_vect      _VECTOR(9)  /* Vcc Voltage Level Monitor */
21
#define ADC_vect_num  10
22
#define ADC_vect      _VECTOR(10)  /* ADC Conversion Complete */

Wie definiere ich da die ISR?



c:/program files (x86)/atmel/atmel studio 
6.0/extensions/atmel/avrgcc/3.4.0.65/avrtoolchain/bin/../lib/gcc/avr/4.6 
.2/../../../../avr/bin/as.exe  -mmcu=attiny10 -o ea_attiny10.o 
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s: Assembler messages:
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(20,1): register not supported
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(24,1): register not supported
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(29,1): register not supported
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(54,1): register not supported
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(56,1): register not supported
C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(57,1): register not supported
    make: *** [ea_attiny10.o] Error 1

von spess53 (Gast)


Lesenswert?

Hi

>C:\Users\typ\AppData\Local\Temp\ccQ20STr.s: Assembler messages:
>C:\Users\typ\AppData\Local\Temp\ccQ20STr.s(20,1): register not supported

Vielleicht weiss dein Compiler nicht, das der ATTiny10 keine Register 
r0...r15 besitzt.

MfG Spess

von ISRISR (Gast)


Lesenswert?

Was kann ich denn dagegen tun? Nutze Atmel Studio 6.

Die fehlermeldung kommt übrings NUR bei definierter ISR, sonst nicht.

von MWS (Gast)


Lesenswert?

ISRISR schrieb:
> Was kann ich denn dagegen tun? Nutze Atmel Studio 6.
>
> Die fehlermeldung kommt übrings NUR bei definierter ISR, sonst nicht.

Da gibt's noch'n netten Fallstrick, es gibt für die Tiny10 16Bit LDS/STS 
Befehle, die waren in den letzten AVR GCC Versionen nicht implementiert. 
Damit ist in C schreiben nicht drin, da falscher Opcode erzeugt wird.

Würd' mal sagen, das geht immer noch nicht, nimm Assembler.

von Mathias (Gast)


Angehängte Dateien:

Lesenswert?

@MWS: das Problem mit LDS/STS wurde in dem Release 3.4.0.663, welcher 
beim Atmel Studio 6 dabei ist behoben. (siehe dazu pdf im Anhang)

Leider habe ich aber das selbe Problem wie der Threadstarter.

Ich habe diesbezüglich Atmel kontaktiert, jedoch noch keine Antwort 
bekommen.

von Mathias (Gast)


Lesenswert?

Problem wurde inzwischen vom Atmel Support bestätigt und wird in einem 
nächsten Release behoben => Atmel Studio 5 verwenden (mit STS/LDS 
Problem) bzw. IAR Kickstarter Edition verwenden bzw. uC wechseln

von Stone (Gast)


Lesenswert?

Also der Attiny10 Support für den GCC ist echt ein Witz. Es kann doch 
nicht sein das so halbscharige Biblioteken unter die Leute geworfen 
werden. Garnicht oder funktionierent ist ok, aber dieses 
zusammenfrickeln ist ja wohl lächerlich.
Ich würde die 10 Stück die ich noch rumliegen habe gerne mal für was 
verwenden, aber alle bisherigen Versuche den Attiny zu nutzen sind an 
Compiler Fehlern gescheitert.


Gruß Matthias

von MWS (Gast)


Lesenswert?

Mathias schrieb:
> @MWS: das Problem mit LDS/STS wurde in dem Release 3.4.0.663, welcher
> beim Atmel Studio 6 dabei ist behoben.

Danke für die Info.

> Leider habe ich aber das selbe Problem wie der Threadstarter.

Ja, so wie das aussieht, möchte der Compiler bei Erzeugung von Ein- und 
Austrittscode der ISR bestimmte Register verwenden, die er nicht zur 
Verfügung hat, eben weil der Tiny10 kastriert ist.

Indem man die ISR als Assembler in eine .s-Datei auslagert und auf 
interrupt.h verzichtet, funktioniert's trotzdem.

Wobei man dann immer noch nicht sicher sein kann, ob der Compiler sich 
im laufenden C-Code auf R17-R31 beschränkt. Macht er das nicht, z.B. 
weil er _zero_reg_ (R1) verwenden möchte, steht man wieder vor dem 
gleichen Problem.

von MWS (Gast)


Lesenswert?

MWS schrieb:
> R17-R31 beschränkt.

Richtig: R16-R31

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.