Forum: Mikrocontroller und Digitale Elektronik ATTiny841 - Interrupt Vector USART0_RXC_vect


von Ralf W. (rawafn)


Angehängte Dateien:

Lesenswert?

Hallo,

ich steh gerade auf dem Schlauch.
Ich versuch gerade mit meinem ATTiny 841 Daten über die USART 
einzulesen.
Dies würde ich gerne über eine Interrupt Routine machen, aber bei der 
Aufruf der Interrupt Routine klappt nicht.
Meine ISR Routine lautet:
#####
ISR(USART0_RXC_vect)  // USART0_RXC_vect
{
  // Daten aus dem Puffer lesen

  data_temp = UDR0;

  PORTA ^= (1<<PA3);

}
#####

Beim Kompilieren mit den XC8 V2.0 bekomme ich folgende Fehlermeldung:
#####
main.c:36:5: warning: 'USART0_RXC_vect' appears to be a misspelled 
signal handler, missing __vector prefix [-Wmisspelled-isr]
 ISR(USART0_RXC_vect)  // USART0_RXC_vect
#####

Laut Datenblatt gibt es den Interrupt Vector "23    0x0016    USART0_RXC 
USART0 Rx Complete".

Was mach ich hier gerade falsch.

Anbei noch mein main.c

Danke für euren Support.

Gruß

Ralf

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Also im Atmel Studio hätte ich es genau so gemacht wie du, ISR 
Bezeichnung aus dem Datasheet und _vect angehängt. Meine Vermutung wäre 
darum das sich Microchip beim XC8 dafür irgendeine andere Namens 
Pre/Postfix Idee überlegt hat, schau mal in die eingebunden Header bzw. 
die von denen eingebunden Header Dateien.

von A. B. (Gast)


Lesenswert?

C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.3.0-x64-mingw\avr\include\avr\iotn 
841.h
************************************************************************ 
*****

/* USART0, Start */
#define USART0_START_vect            _VECTOR(21)
#define USART0_START_vect_num        21

/* USART0, Rx Complete */
#define USART0_RX_vect            _VECTOR(22)
#define USART0_RX_vect_num        22

/* USART0 Data Register Empty */
#define USART0_UDRE_vect            _VECTOR(23)
#define USART0_UDRE_vect_num        23

/* USART0, Tx Complete */
#define USART0_TX_vect            _VECTOR(24)
#define USART0_TX_vect_num        24

von HildeK (Gast)


Lesenswert?

Tim T. schrieb:
> Also im Atmel Studio hätte ich es genau so gemacht wie du, ISR
> Bezeichnung aus dem Datasheet und _vect angehängt.

Das ist leider keine Garantie, wie ich hier mal feststellen musste:
Beitrag "INT0 IRQ beim Tiny44A vs. Tiny44 (WINAVR-20100110 )"

von Ralf W. (rawafn)


Lesenswert?

Hallo,

danke für eure Tipps.
Es lautet "_RX_" und nicht "_RXC_".

Der richtige Aufruf lautet "ISR(USART0_RX_vect)".

Frohe Ostern.

Gruß

Ralf

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.