Witam
Dołączyłem do pinu 1 RX i pinu 2 TX układ z MAX232 (piny 11, 12).
Napięcia w układzie max232:
pin 2-pin 15 jest +9,82V
6-15 jest -9,64V
11-15 jest +3,45V
12-15 jest +5,05V
13-15 jest 0V
14-15 jest -9,64V
16-15 jest +5,05V
Ustaliłem prędkość transmisji 2400, 2 bity stopu, 8 bitów danych, odpaliłem HyperTerminala i cisza nic się nie dzieje nawet nie ma krzaczków.
Atmega8 działa na wewn. oscylatorze 8MHz, nie zależy mi ani na jakości ani stopa błędów transmisji, chciałem wysłać kila znaków i jakieś odebrać.
NIe ma ustawionych żadnych fusebitów.
Połączenia sprawdzałem z 10x.
Kod programu:
Proszę o pomoc, od czego zacząć? Co może być przyczyną?
Pozdrawiam
EDIT
Witam
Dodam, iż do komunikacji używam przejściówkę USB-RS232 na PL2303. Jak dotychczas działała poprawnie.
Próbowałem zewrzeć piny 11,12 na maxie ale to nic nie dało.
Poza tym na wyjściu układu z max232 mam złącze RS232 żeńskie i skrosowane 4-6 i 7-8.
Próbowałem także w Visual Studio. Wykorzystując komponent SerialPort i wysyłając na port jakieś znaki, generowane jest zdarzenie DataReceived, ale funkcja SerialPort1.ReadExisting() zwraca znak pusty.
Pozdrawiam
Macie jakieś pomysły?
Pozdrawiam
Listingi umieszczamy w znacznikach [code] - poprawiłem.
Proszę używać przycisku "Zmień" - posty scaliłem.
[zumek]
Dołączyłem do pinu 1 RX i pinu 2 TX układ z MAX232 (piny 11, 12).
Napięcia w układzie max232:
pin 2-pin 15 jest +9,82V
6-15 jest -9,64V
11-15 jest +3,45V
12-15 jest +5,05V
13-15 jest 0V
14-15 jest -9,64V
16-15 jest +5,05V
Ustaliłem prędkość transmisji 2400, 2 bity stopu, 8 bitów danych, odpaliłem HyperTerminala i cisza nic się nie dzieje nawet nie ma krzaczków.
Atmega8 działa na wewn. oscylatorze 8MHz, nie zależy mi ani na jakości ani stopa błędów transmisji, chciałem wysłać kila znaków i jakieś odebrać.
NIe ma ustawionych żadnych fusebitów.
Połączenia sprawdzałem z 10x.
Kod programu:
[i]#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <stdio.h>
#define F_PROC 8000000ul
#define UART_BAUD 2400
#define UART_CONST (F_PROC/16ul*UART_BAUD)-1)
unsigned char x=0;
void Putchar(unsigned char data)
{
while( !(UCSRA & (1<<UDRE)) );
UDR=data;
}
unsigned char Getchar(void)
{
while( !(UCSRA & (1<<RXC)) );
return UDR;
}
void Flush( void )
{
unsigned char dummy;
while ( UCSRA & (1<<RXC) ) dummy = UDR;
}
void InitRS(void)
{
//unsigned
//unsigned int baud=9600;
unsigned int ubrr;
//float ubr=(PROC/16ul*UART_BAUD)-1;
ubrr=((F_PROC/16ul*UART_BAUD)-1);
UBRRH=(unsigned char)(ubrr>>8); //Ustaw Baud Rate
UBRRL=(unsigned char)ubrr;
UCSRB=(1<<RXEN)|(1<<TXEN); //Włącz Odbiór i Nadawanie
UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0); //Ustaw 8 data, 2 stop bit
}
void USART_Init( unsigned int ubrr)
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
int main(void)
{
DDRD=0x02;
PORTD=0x00;
//Dodatkowa dioda
DDRB |=_BV(0)|_BV(1);
InitRS();
while (1)
{
'Zapal diodę
PORTB =_BV(1);
Putchar('a');
_delay_ms(500);
'Zgaś diodę
PORTB =_BV(0);
x=Getchar();
_delay_ms(500);
'Zapal diodę
PORTB =_BV(1);
while(x=='7')
{
Putchar('4');
_delay_ms(500);
x=Getchar();
}
while(x=='1')
{
Putchar('3');
_delay_ms(500);
x=Getchar();
}
}
}
[/i]Proszę o pomoc, od czego zacząć? Co może być przyczyną?
Pozdrawiam
EDIT
Witam
Dodam, iż do komunikacji używam przejściówkę USB-RS232 na PL2303. Jak dotychczas działała poprawnie.
Próbowałem zewrzeć piny 11,12 na maxie ale to nic nie dało.
Poza tym na wyjściu układu z max232 mam złącze RS232 żeńskie i skrosowane 4-6 i 7-8.
Próbowałem także w Visual Studio. Wykorzystując komponent SerialPort i wysyłając na port jakieś znaki, generowane jest zdarzenie DataReceived, ale funkcja SerialPort1.ReadExisting() zwraca znak pusty.
Pozdrawiam
Macie jakieś pomysły?
Pozdrawiam
Listingi umieszczamy w znacznikach [code] - poprawiłem.
Proszę używać przycisku "Zmień" - posty scaliłem.
[zumek]