Mam taki problem, że gdy wysyłam z procka na hyperterminal to wszystko przebiega bez problemowo. Za to gdy chce coś otrzymywać np. pisząc na komputerze chce widzieć tekst na LCD podpjętego do uP, ewentualnie po prostu coś przesłać na mikrokontroler to wtedy hyperterminal nie pozwala mi wprowadzić ani jednego znaku jak by nie było połączenia.
procesor to Atmega 16L z kwarcem 8mhz , zasilany przez stabilizator napięciem ~3,3V.
Bardzo prosze o pomoc.
Kod: Zaznacz cały
#include <avr/io.h>
#include "lcd.h"
#define CPU_Hz 8000000 // częstotliwość zegara w Hz
#define BAUD 9600 // prędkość transmisji po RS232
#define MYUBRR CPU_Hz/16/BAUD-1
// **** fukcje dla RS232 ****
void UART_init(unsigned int ubrr) // inicjalizacja
{
UBRRH = (unsigned char) (ubrr>>8); // ustawienie prędkości
UBRRL = (unsigned char) ubrr;
UCSRB = (1<<RXEN)|(1<<TXEN); // transmisja dwukierunkowa, odbieranie/nadawanie
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // ustawienie 8 bitów danych i 1 bity stopu
}
void USART_out (unsigned char data) // wysłanie znaku
{
while (!(UCSRA & (1<<UDRE)));
UDR = data;
}
unsigned char USART_in (void) // odebranie znaku
{
while (!(UCSRA & (1<<RXC)));
return UDR;
}
char kom[10]={"AT\r"};
char i;
void wyslij_text_U(char *k)
{
for(i=0;i<strlen(k);i++)
{
USART_out(k[i]);
}
}
char odp[50];
// **** program główny ****
int main(void)
{
LCD_init();
UART_init(MYUBRR);
while(1) {
//ablo
wyslij_text_U(kom);
delayms(300);
//albo
// LCD_xy(0,0);
// LCD_putchar(USART_in());
}
}