//program napisany dla procesora atmega 128 prędkość przesyły 9600 zegar //procesora 16 mHz przy starcie program wysyła znak OK po czym oczekuje po //odebraniu jakiegoś znaku zwraca ten sam znak
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
int main(void)
{
DDRC =0xff;
PORTC =0xff;
unsigned int i;
//*********************PWM***************
DDRB = (1<<2)|(1<<1); // OC1A i OC1B wyjścia PWM
ICR1 = 100; //prescaler
OCR1A = 2; //mocPWM 1A
OCR1B =0; //moc PWM 1B
TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11); //ustawienia PWM
TCCR1B=(1<<WGM13)|(1<WGM12)|(1<<CS10); //ustawienia PWM
//******************USART**********************
cli(); //włącznei przerwania
UBRR0L=103;
UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00);
UCSR0B |= (1<<RXEN0) |(1<<TXEN0); //włącznie nadawania i //odbierania
sei();
UDR0 = 0x4F;
UDR0 = 0x4B;
asm("nop");
while(1){
OCR1A = i; //określenie mocy PWM
if(UCSR0A & (1<<RXC0)){ //sprawdzenie czy byfor odbierania jest pełny
if((UCSR0A & ((1<<FE0)|(1<<DOR0)|(1<<UPE0)))){ //sprawdzenie flag błedów
}
else
i=UDR0; //przypisanie do i wartości odebraenej
UDR0=i; //wysłąnie wartości w zmiennej i
djsit