Forum: Mikrocontroller und Digitale Elektronik Probleme Atmega 128 Code von IAR nach AVR-Studio


von michael schankin (Gast)


Lesenswert?

Hallo Leute

Habe ein Problem bei der Übertragung eines Atmega128 Projektes vom 
IAR-Compiler nach AVR-Studio. Es handelt sich dabei um folgenden 
Code-Ausschnitt:
1
//**************************************************************************************
2
// USART 0 (DVK) Received Complete Interrupt
3
// Use for RS232 communication
4
//**************************************************************************************
5
#ifdef _IAR_WB
6
  #pragma vector = USART0_RXC_vect
7
  __interrupt void USART0_RXC_interrupt(void)
8
#else  
9
  interrupt [USART0_Receive] void USART0_RXC_interrupt(void) 
10
#endif
11
12
{   
13
   data2pc[ind_tab]=UDR0;
14
    
15
   if(data2pc[ind_tab]=='\r')   //End of Command
16
      ReceivedCMD=1;    
17
   else                         //Next byte
18
   { 
19
      ind_tab++; 
20
   } 
21
}

Bei der #pragma Anweisung handelt es sich ja um eine Compilerspezifische 
Anweisung für den IAR.
Kann mir jemand die genaue Funktion dieser Zeilen erklären?:
1
#ifdef _IAR_WB
2
  #pragma vector = USART0_RXC_vect
3
  __interrupt void USART0_RXC_interrupt(void)
4
#else  
5
  interrupt [USART0_Receive] void USART0_RXC_interrupt(void) 
6
#endif
Wie kann ich dies für AVR-Studio ändern?
Wäre zum Beispiel "ISR(USART0_RX") möglich?

Danke schonmal

Gruß Micha

von Bit & Byte (Gast)


Lesenswert?

Ja.. Die Firma IAR weiß das.
Warum liest Du nicht mal die Doku?

von Joerg X. (Gast)


Lesenswert?

wenn der Kommentar "USART 0 [...] Received Complete Interrupt" stimmt, 
wäre die AVR-GCC 'übersetzung' "ISR(USART0_RX_vect){...}" korrekt - ich 
hab nicht nach der IAR-doku geschaut, ich will aber auch keinen IAR-Code 
übersetzen ;)

von OliverSo (Gast)


Lesenswert?

Wenn ich das richtig interpretiere, dann ist das die ISR für den 
USART0_Receive-Interrupt.


Ich hab jetzt keine Mega128-Docu griffbereit, aber daraus wird im gcc so 
etwas wie

#include <avr/interrupt.h>

ISR(USART0_RX_vect ) // USART0_RX_vect  bitte nochmal überprüfen
{
...
}

Oliver

von michael schankin (Gast)


Lesenswert?

Genau so hab ich mir das auch gedacht.
Leider tut der Quellcode noch nicht so richtig. Aber der Teil kann 
schonmal compiliert werden.
Muss noch paar Fehler finden.

Danke für die Antworten

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.