mikrocontroller.net

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


Autor: michael schankin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
//**************************************************************************************
// USART 0 (DVK) Received Complete Interrupt
// Use for RS232 communication
//**************************************************************************************
#ifdef _IAR_WB
  #pragma vector = USART0_RXC_vect
  __interrupt void USART0_RXC_interrupt(void)
#else  
  interrupt [USART0_Receive] void USART0_RXC_interrupt(void) 
#endif

{   
   data2pc[ind_tab]=UDR0;
    
   if(data2pc[ind_tab]=='\r')   //End of Command
      ReceivedCMD=1;    
   else                         //Next byte
   { 
      ind_tab++; 
   } 
}      

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?:
#ifdef _IAR_WB
  #pragma vector = USART0_RXC_vect
  __interrupt void USART0_RXC_interrupt(void)
#else  
  interrupt [USART0_Receive] void USART0_RXC_interrupt(void) 
#endif
Wie kann ich dies für AVR-Studio ändern?
Wäre zum Beispiel "ISR(USART0_RX") möglich?

Danke schonmal

Gruß Micha

Autor: Bit & Byte (Gast)
Datum:

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

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michael schankin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.