Serial UART Interface with AVR. (UART) interface is unimaginable. Even if the MCU is not talking to another serial device. Sep 11, 2014  Easy to learn and precise. Elsword ed hack download. Learning AVR was never this easy before. Learn how to use USART and serial interrupts of ATMEGA16 - Codevision and Proteus easily.

Codevision Avr Password

Codevision Avr Serial

Codevision

Hi !
I am using Codevision AVR in one of my university projects and need to check the serial communication done through the PC and the ATMega32.
I want to send a specific data to ATMega32 and the ATMega32 should light perticular LEDs identifying the command.
I connected RS232 with the MAX 232 circuit and found out that the connection is ok and the MAX 232 is working properly.
But Im afraid I think that there is something wrong with the program.
Pls help me to solve the problem
I have attached my circuits schematic diagram and the code herewith.
Added after 3 minutes:
/************************************************** ***
This program was produced by the
CodeWizardAVR V1.25.3 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 4/22/2010
Author :
Company :
Comments:
Chip type : ATmega32
Program type : Application
Clock frequency : 16.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
************************************************** ***/
#include
#include
#include
#include
#include
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include
//#define SRF10_BUS_ADDRESS 0xF2
#define LCD03_BUS_ADDRESS 0xC6
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<>
#define PARITY_ERROR (1<<>
#define DATA_OVERRUN (1<<>
#define DATA_REGISTER_EMPTY (1<<>
#define RX_COMPLETE (1<<>
// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR PARITY_ERROR DATA_OVERRUN))0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index RX_BUFFER_SIZE) rx_rd_index=0;
#asm('cli')
--rx_counter;
#asm('sei')
return data;
}
#pragma used-
#endif
char indata;
initialize(){
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
//ICR1H=0x00;
//ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// I2C Bus initialization
i2c_init();
}
void main(void)
{
initialize();
while (1)
{
while(rx_counter>0) // A command has been found
{
indata=getchar();
if (indata1)
{
PORTB.0=0;
}
else if (indata2)
{
PORTB.1=0;
}
else if (indata3)
{
PORTB.2=0;
}
else if (indata4)
{
PORTB.3=0;
}
else if (indata5)
{
PORTB.4=0;
}
else if (indata6)
{
PORTB.5=0;
}
else if (indata7)
{
PORTB.6=0;
}
else if (indata8)
{
PORTB.7=0;
}
}
}
}