Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Message

MEGA8 RS232

2007-03-09 by englsprogeny

Hi everyone.

I am trying to get an ATMEGA8 to talk to a terminal app on my PC by
RS232. I have used the compiler [WinAVR] and programmer [PONY ISP]
to compile and run other programs so I know that these parts of the
issue are OK.

Here is the source....



Any ideas?


I have an 8Mhz oscillator

Note: if anyone has simpler source with makefile please send it to
me. Thanks



* >simcom -38400 /dev/ttyS0 */

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

static void putchar(unsigned char ch){
while ((inp(UCSRA) & 0x20) == 0) {};
outp(ch, UDR);
while ((inp(UCSRA) & 0x20) == 0) {};
}


SIGNAL(SIG_ADC){
static int ctr1;
static char lbyte,hbyte;
ctr1++;
lbyte = inp(ADCL);
hbyte = inp(ADCH);

if (ctr1>=1000){
putchar(lbyte);
//putchar('A');
ctr1 = 0;
}


outp(BV(ADEN)|BV(ADSC)|BV(ADIE)|BV(ADPS2)|BV(ADPS1)|BV
(ADPS0),ADCSR);
// Internal Vref, right adjust
// Enable ADC interrupts, Clock/128
}


SIGNAL(SIG_UART_RECV){
char ch = inp(UDR);
putchar(ch);
}

SIGNAL(SIG_OVERFLOW0){
static int ctr;
ctr++;

if (ctr>=10){
//putchar('O');
ctr = 0;
}

}

int main(){
int i,j;

outp(BV(TOIE0),TIMSK); // Enable TCNT0
outp(0x00,TCNT0); // Reset TCNT00, CLK/1024
outp(BV(CS02)|BV(CS00), TCCR0);

outp(0x00, UCSRA); // USART:
outp(0x98, UCSRB); // USART: RxIntEnable|RxEnable|TxEnable
outp(0x86, UCSRC); // USART: 8bit, no parity
outp(0x00, UBRRH); // USART: 38400 @ 8MHz
outp(12, UBRRL); // USART: 38400 @ 8MHz

/*outp(0xce, ADMUX); // Internal Vref, right adjust, read 1.22V
(Vbg)*/
outp(BV(REFS1)|BV(REFS0)|BV(MUX1),ADMUX); //ADC2

// Enable ADC interrupts, Clock/128
outp(BV(ADEN)|BV(ADSC)|BV(ADIE)|BV(ADPS2)|BV(ADPS1)|BV
(ADPS0),ADCSR);

putchar('M');

sei();

while (1) {

/* putchar('L'); */
for(i = 0;i<10000;i++){
j = 1+1;
}

}
}

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.