USART + PWM PROGRAM.docx

(12 KB) Pobierz

//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

                                          }

                            }

              }

}

 

 

Zgłoś jeśli naruszono regulamin