Witam. Na początku wypada wspomnieć że jestem początkującym elektronikiem.
Problem wygląda następująco: podczas próby wysłania jakichkolwiek znaków do PC przy pomocy Atmegi 162 i nadajnika RS232 Maxima komputer nie odbiera żadnych znaków(tylko chaszcze, zera itp.) Zaznaczam że:
1) Prędkość transmisji zarówno w kodzie jak i programie do przechwytu na PC(Realterm 2.0.0.57) jest taka sama;
2)ilość bitów stopu i bitów danych jest ta sama;
3)używam zewnętrznego kwarca 11,059MHz i następująco ustawiłem fusy - CKSEL 3:1 - "111" ; CKSEL0 - "0" ; SUT 1:0 - "10";
4)między kwarcem i GND - kondensatory 22pF;
5)fus "M161C" pozostawiam niezaprogramowany(w PonyProgu niezaznaczony);
6)w WinAVR "Makefile" został odpowiednio skonfigurowany - dobra nazwa pliku, odpowiedni uC i kwarc;
7)sam kod kompiluje się bez problemów;
Jeśli chodzi o kod to został żywcem ściągnięty z noty Atmela. Sam nadajnik RS232 działa bez zarzutu ponieważ posiadam również zaprogramowaną przy pomocy podobnego kodu Atmege128 i jak tylko przełączę kabel na jej TxD - komputer odbiera wysyłane kody ASCII.
Jeśli ktoś się zainteresuje to poniżej link do noty Atmeg-i 162:
http://www.atmel.com/dyn/resources/prod_documents/doc2513.pdf
Problem wygląda następująco: podczas próby wysłania jakichkolwiek znaków do PC przy pomocy Atmegi 162 i nadajnika RS232 Maxima komputer nie odbiera żadnych znaków(tylko chaszcze, zera itp.) Zaznaczam że:
1) Prędkość transmisji zarówno w kodzie jak i programie do przechwytu na PC(Realterm 2.0.0.57) jest taka sama;
2)ilość bitów stopu i bitów danych jest ta sama;
3)używam zewnętrznego kwarca 11,059MHz i następująco ustawiłem fusy - CKSEL 3:1 - "111" ; CKSEL0 - "0" ; SUT 1:0 - "10";
4)między kwarcem i GND - kondensatory 22pF;
5)fus "M161C" pozostawiam niezaprogramowany(w PonyProgu niezaznaczony);
6)w WinAVR "Makefile" został odpowiednio skonfigurowany - dobra nazwa pliku, odpowiedni uC i kwarc;
7)sam kod kompiluje się bez problemów;
Jeśli chodzi o kod to został żywcem ściągnięty z noty Atmela. Sam nadajnik RS232 działa bez zarzutu ponieważ posiadam również zaprogramowaną przy pomocy podobnego kodu Atmege128 i jak tylko przełączę kabel na jej TxD - komputer odbiera wysyłane kody ASCII.
#include <avr/io.h>
#define FOSC 11059000// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void USART_Init( unsigned int ubrr )
{
/* Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 2stop bit */
UCSR0C = (1<<URSEL0)|(1<<USBS0)|(3<<UCSZ00);
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)));
/* Put data into buffer, sends the data */
UDR0 = data;
}
int main( void )
{
int n;
USART_Init(MYUBRR);
n=0;
while(1)
{
for(n=32;n<127;n++)
{
USART_Transmit(n);
}
}
return 0;
}
Jeśli ktoś się zainteresuje to poniżej link do noty Atmeg-i 162:
http://www.atmel.com/dyn/resources/prod_documents/doc2513.pdf