Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

:!: Problemet är löst, kod finns längre ner i tråden :!:

Sitter och skall försöka få igång interruptdriven läsning av USART i ATtiny2313 och avr-gcc. Inget konstigt i sig (och har gjort detta tidigare på exempelvis PIC16F628 utan problem). Alltså att processorn får ett interrupt när Rx buffern mottagit ett komplett tecken. Försöker göra en interruptrutin enligt:

Kod: Markera allt

SIGNAL (SIG_USART_RECV) 
{ 
    // Read input buffer
	TransmitByte (ReceiveByte () + 1);        // Echo the received character + 1. 

}
Har fungerat bra när det gäller externa interrupt/pinnar, men nu får jag hela tiden svaret att jag "stavat fel" på signalnamnet, vid kompileringen. Har kollat/provat olika namn från såväl headerfilerna till kompilatorn, som från avr-gcc manualen och internet, men inget har fungerat.

Själva USARTen i sig fungerar om man använder pollning, men det är ju fel sätt annars... Det här borde vara såpass vanligt att många gjort det tidigare och kanske kan hjäla mig att "stava rätt".

-Datorn fattar inte vad jag menar! ...lite av den nivån är det på denna fråga tyvärr :-(

(kanske finns detta någonstans redan på forumet, men jag lyckas aldrig med någon någotsånär avancerad sökning)
Senast redigerad av manw 25 januari 2009, 00:33:56, redigerad totalt 1 gång.
Androiders
Inlägg: 17
Blev medlem: 15 januari 2009, 10:31:26

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av Androiders »

Detta kanske kan vara nåt?

http://winavr.scienceprog.com/avr-gcc-t ... ation.html

Mvh
--Anders
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

Har testad den varianten tidigare, testade igen (med includefiler å allt), men kompilatorn tyckte ändå inte om det :humm:
Androiders
Inlägg: 17
Blev medlem: 15 januari 2009, 10:31:26

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av Androiders »

klistra in kod och kompilator output så kan vi kika :)
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

Kod: Markera allt

#include <avr/io.h>
#include <avr/interrupt.h>

/* Prototypes */
void InitUART (unsigned char baudrate);
unsigned char ReceiveByte (void);
void TransmitByte (unsigned char data);
void delay(int msek);

ISR(USART_RXC_vect)    // <= Det är detta som skiter sig!
{ 
    // Read input buffer
	TransmitByte (ReceiveByte () + 1);        // Echo the received character + 1. 
}

// This function enabled interrupt.
void int1_init()
{
	cli(); /*Disable interrupt*/
	sei(); /*Enable interrupt*/
}

/* Main - simple program that recieves a character then
transmits back the next character.  An example would be if you send in an A, the chip will return a B */
int main (void){

	DDRB = 0xFF; //Sätt till utgång.
	PORTB = 0x55; //Alla port B 0-or.
	//unsigned char i;
  	InitUART (207);    /* Set the baudrate to 2400 bps using a 8MHz */ 
  	int1_init();
  
  while (1)
    {
      // Just do something...
	  delay(100);
	  PORTB |= (1 << PB0);
	  delay(100);
	  PORTB &= ~(1 << PB0 );
    }
}

/* Initialize UART */
void InitUART (unsigned char baudrate){
  /* Set the baud rate */
  UBRRL = baudrate;
  /* Enable UART receiver and transmitter */
  UCSRB = (1 << RXEN) | (1 << TXEN);
  /* 8 data bits, 1 stop bit */
  UCSRC = (1 << UCSZ1) | (1 << UCSZ0);
}

/* Read and write functions */
unsigned char ReceiveByte (void){
  /* Wait for incomming data */
  while (!(UCSRA & (1 << RXC)));
  /* Return the data */
  return UDR;
}

void TransmitByte (unsigned char data){
  /* Wait for empty transmit buffer */
  while (!(UCSRA & (1 << UDRE)));
  /* Start transmittion */
  UDR = data;
}
Build:
*../SerialTest.c:13: warning: 'USART_RXC_vect' appears to be a misspelled signal handler

- AVR Studio 4.14
- WinAVR-20080610
- ATtiny2313
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av vfr »

Nu är det ju iofs en varning du får och inget fel. Men frågan är fortfarande varför och på vilket sätt den tycker att den kanske är fel. Finns just den symbolen definierad någonstans och hur isåfall?
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

Har ju testat olika varianter som sagt, men inte heller "UART_RX_vect" som jag hittar i filen "io2313.h" som jag tolkar det inkluderas via "io.h". Provade också att direkt inkludera "io2313.h" i min huvudfil, men det skulle man inte göra tydligen.

EDIT: Nu rullade kompileringen igenom, när jag kompilerade en gång till :o skall kolla på målsystemet...

EDIT2: och nu gjorde det inte... något skumt är det :humm:
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av speakman »

Hur exekveras kompilatorn? Kommer -mmcu=attiny2313 med?

Klistra in hela förfarandet inkl. anropet till kompilatorn så är det lättare att spåna.
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

Nu fungerade koden på målsystemet till och med, kompilatorn larmar... ibland... skumt :humm:
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

speakman skrev:Hur exekveras kompilatorn? Kommer -mmcu=attiny2313 med?

Klistra in hela förfarandet inkl. anropet till kompilatorn så är det lättare att spåna.
Skall jag vara riktigt ärlig så vet jag inte var man kan se exakt den sträng som skickas från AVR Studio till kompilatorn. Det finns ju en "Project Options" bild där man kan välja kompilator, kompilatorflaggor, och device (attiny2313).
SvenW
Inlägg: 1155
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av SvenW »

Kollade i headerfilen iotn2313.h
ISR(USART_RXC_vect) finns inte där, men väl
#define USART_RX_vect _VECTOR(7)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av speakman »

Från samma ställe där du såg felmeddelandet bör du se när kompilatorn anropas, högst upp. Kollade just på våran installation och där såg man hela kommandoraden. Möjligen hamnar felmeddelanden i en egen flik eller nått, men du bör kunna hitta igen den.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av cykze »

Det ska inte vara
USART_RXC_vect
eller
UART_RX_vect

Utan:
USART_RX_vect

Det är iotn2313.h du ska kolla i, inte io2313.h.

edit: lite sen
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

Jupp, på raden under :oops:

Kod: Markera allt

avr-gcc.exe -mmcu=attiny2313 -Wl,-Map=SerialTest.map SerialTest.o delay.o     -o SerialTest.elf
... så mycket text så jag glömmer att titta vad som står, förutom raden med den gula pluppen :oops:
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Interruptdriven läsning av USART ATtiny2313 med avr-gcc?

Inlägg av manw »

Det ser ut som DEN grejen funkar nu, TACK allihop :bravo:
Skriv svar