Już nie mam pomysłów... Próbowałem już różnych rzeczy.
Problem wygląda tak:
Chciałem skomunikować się z kompem i...
Doszedłem do momentu w którym jak wysyłam jakiś znaczek z uC to na terminalu otrzymuję inny (za każdym razem ten sam)
Tu wygenerowałem listę znaków A-Z i po przesłaniu zobaczyłęm:
Mój kod programu wygląda mniej więcej tak:
proszę o pomoc.
Poprawiłem tytuł - regulamin p.11.1
Problem wygląda tak:
Chciałem skomunikować się z kompem i...
Doszedłem do momentu w którym jak wysyłam jakiś znaczek z uC to na terminalu otrzymuję inny (za każdym razem ten sam)
Tu wygenerowałem listę znaków A-Z i po przesłaniu zobaczyłęm:
znaczki odebrane | znaczki wysłane
bin | hex |znak |znak | bin
1011111 [5F] _ A 1000001
0101111 [2F] / B 1000010
1011110 [5E] ^ C 1000011
0010111 [17] D 1000100
1011101 [5D] ] E 1000101
0101110 [2E] . F 1000110
1011100 [5C] \ G 1000111
0001011 [0B] H 1001000
1011011 [5B] [ I 1001001
0101101 [2D] - J 1001010
1011010 [5A] Z K 1001011
0010110 [16] L 1001100
1011001 [59] Y M 1001101
0101100 [2C] , N 1001110
1011000 [58] X O 1001111
0000101 [05] P 1010000
1010111 [57] W Q 1010001
0101011 [2B] + R 1010010
1010110 [56] V S 1010011
0010101 [15] T 1010100
1010101 [55] U U 1010101
0101010 [2A] * V 1010110
1010100 [54] T W 1010111
X 1011000
1010011 [53] S Y 1011001
0101001 [29] ) Z 1011010
Mój kod programu wygląda mniej więcej tak:
#define F_CPU 8000000
#define BAUD 9600
#define MUBRR F_CPU/16/BAUD-1
#include<avr/io.h>
#include<util/delay.h>
//definicje funkcji
void init_USART(unsigned int);
void send_USART(unsigned char);
unsigned char receive_USART(void);
int main(void)
{
unsigned char c;
init_USART(MUBRR);
DDRB = 0xFF;
asm( "nop" );
PORTB = (1<<PB0);
_delay_ms(1000);
PORTB = 0;
_delay_ms(1000);
for (unsigned char i=65; i<91; i++)
{
send_USART(i);
PORTB = (1<<PB0);
_delay_ms(50);
PORTB = 0;
_delay_ms(50);
}
while (1)
{
c=receive_USART();
PORTB=0xFF;
_delay_ms(1000);
PORTB=0x00;
send_USART(c);
}
return 0;
}
//deklaracje funkcji
void init_USART(unsigned int ubrr)
{
/* Ustawianie prędkości transmisji */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* włączenie wysyłu i odbioru danych */
UCSRB = (1<<RXEN)|(1<<TXEN);
//UCSRB = _BV(TXCIE)|_BV(RXCIE)|_BV(RXEN)|_BV(TXEN);
/* Format ramki danych: 8data, 2bity stopu */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
//------------------------------------------------
void send_USART( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
//------------------------------------------------
unsigned char receive_USART( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) );
/* Get and return received data from buffer */
return UDR;
}
proszę o pomoc.
Poprawiłem tytuł - regulamin p.11.1