Witam, problem wygląda następująco - próbuję skomunikować się z komputerem i po części wszystko działa jednak nie do końca. Otóż na najmłodszych 4 bitach dane są poprawne natomiast na czterech najstarszych zawsze jest stała wartość 1011. Poniżej zamieszczam zrzut z terminala podczas działania programy typu echo.
Natomiast kod wygląda następująco:
oraz
Z góry dziękuję za wszelką pomoc. Pozdrawiam.
Natomiast kod wygląda następująco:
#include <avr/io.h>
#include "lcd.h"
#include <avr/delay.h>
#define FOSC 3680000// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
extern unsigned char DisplayRAM[1024];
unsigned char data;
void main( void )
{
USART_Init ( MYUBRR );
while(1)
{
data = USART_Receive();
USART_Transmit(data);
}
return 0;
}
oraz
void USART_Init( unsigned int ubrr )
{
/* Set baud rate */
UBRR1H = (unsigned char)(ubrr>>8);
UBRR1L = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
/* Set frame format: 8data, 2stop bit */
UCSR1C = (1<<USBS1)|(3<<UCSZ1);
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR1A & (1<<UDRE1)) );
/* Put data into buffer, sends the data */
UDR1 = data;
}
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSR1A & (1<<RXC1)) );
/* Get and return received data from buffer */
return UDR1;
}
Z góry dziękuję za wszelką pomoc. Pozdrawiam.
