понедельник, 15 сентября 2014 г.

Передача чисел по USART Mega48PA

Как то надо было следить за переменными по USART на ATMEGA48PA, в результате прочтения даташитов был получен следующий код:

/*
 * UART48.cpp
 *
 * Created: 15.09.2014 19:35:04
 *  Author: Serhiy
 */



#include <avr/io.h>
#define F_CPU 1000000L
#include<util/delay.h>



void MyUartInit()
{
 UBRR0 = 12; //из таблицы в даташите для 9600бод и частоты 1МГц
 UCSR0A|= 1<<U2X0;//из той же таблицы
 UCSR0B|= 1<<TXEN0;//включаем передатчик
}


void printInt(int i)//для вывода чисел 0-99
 {
  if(i<10)
  {
  i+=48;
  UDR0=i;
  while(!(UCSR0B&(1<<TXEN0)))
  {   }
  }
  else if(i<100)
  {
UDR0=(i/10)+48;
 while(!(UCSR0B&(1<<TXEN0)))
 {   }

 UDR0=i-((i/10)*10)+48;
  while(!(UCSR0B&(1<<TXEN0)))
  {   }
  }

 }
int main(void)
{

  MyUartInit();
 
   while(1)
   {
     printInt(87);
     _delay_ms(1000);
   }
}