0% found this document useful (0 votes)
50 views2 pages

Transmitter Program For AVR Atmega8

This document contains C code for initializing a USART for serial communication and sending data packets to control an LED over serial. It defines constants for the baud rate, sync byte, addresses, and commands. It initializes the USART, defines functions for sending single bytes and packets, and sends alternating ON and OFF commands in a loop with delays.

Uploaded by

stsc. shmostak
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views2 pages

Transmitter Program For AVR Atmega8

This document contains C code for initializing a USART for serial communication and sending data packets to control an LED over serial. It defines constants for the baud rate, sync byte, addresses, and commands. It initializes the USART, defines functions for sending single bytes and packets, and sends alternating ON and OFF commands in a loop with delays.

Uploaded by

stsc. shmostak
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include <avr/io.

h>
#include <util/delay.h>
#ifndef F_CPU
//define cpu clock speed if not defined
#define F_CPU 8000000
#endif
//set desired baud rate
#define BAUDRATE 1200
//calculate UBRR value
#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1)
//define receive parameters
#define SYNC 0XAA// synchro signal
#define RADDR 0x44
#define LEDON 0x11//switch led on command
#define LEDOFF 0x22//switch led off command
void USART_Init(void)
{
//Set baud rate
UBRRL=(uint8_t)UBRRVAL; //low byte
UBRRH=(UBRRVAL>>8); //high byte
//Set data frame format: asynchronous mode,no parity, 1 stop bit, 8 bit size
UCSRC=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|
(0<<USBS)|(0<<UCSZ2)|(1<<UCSZ1)|(1<<UCSZ0);
//Enable Transmitter and Receiver and Interrupt on receive complete
UCSRB=(1<<TXEN);
}
void USART_vSendByte(uint8_t u8Data)
{
// Wait if a byte is being transmitted
while((UCSRA&amp;(1<<UDRE)) == 0);
// Transmit data
UDR = u8Data;
}
void Send_Packet(uint8_t addr, uint8_t cmd)
{
USART_vSendByte(SYNC);//send synchro byte
USART_vSendByte(addr);//send receiver address
USART_vSendByte(cmd);//send increment command
USART_vSendByte((addr+cmd));//send checksum
}
void delayms(uint8_t t)//delay in ms
{
uint8_t i;
for(i=0;i<t;i++)
_delay_ms(1);
}
int main(void)
{
USART_Init();
while(1)
{//endless transmission
//send command to switch led ON
Send_Packet(RADDR, LEDON);
delayms(100);
//send command to switch led ON
Send_Packet(RADDR, LEDOFF);
delayms(100);
}
return 0;
}

You might also like