Имеется следующая программа:
CODE
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>
void USART_Transmit(char *data)
{
int i,s;
s = strlen(data);
for(i=0;i<s;i++)
{
/* Wait for empty transmit buffer */
while (!( UCSRA & (1<<UDRE)));
/* Put data into buffer, sends the data */
UDR = data[i];
}
}
int main(void)
{
int inputs;
char str[10];
char *ptr;
//Все выводы порта В - входы
DDRB = 0x00;
PORTB = 0x00;
//Настройка параметров связи
UBRRH = 0x0;
UBRRL = 0x7; //скорость 115,2 Кбит
UCSRC = 0x86;
UCSRA = 0x0;
UCSRB = 0x19; //8 бит данных
while(1)
{
inputs = PORTB;
ptr = itoa(inputs, str, 10);
USART_Transmit(str);
}
return 0;
}
На терминал выводятся числовые или буквенные символы, хотя должен быть 0. Измерял мультиметром напряжение на каждом отводе - либо 0,02В либо -0,6В.