AVR + MAX233
Postat: 25 maj 2006, 15:54:57
Jag försöker få en AVR-krets att prata RS232 till min PC.
Mellan D-sub-kontakten och PC:n sitter en nollmodemkabel.
Programmet ser ut såhär:
Med PC:ns terminalprogram inställt i 19k2/8N1 så syns där inte ett knyst. Gör jag nåt uppenbart fel?
När jag kör igång terminalprogrammet (TuTTy) så står det i titelraden "COM1 - TuTTy". När jag slår på AVR:en (& co) byter det till " - TuTTy (Disconnected)", så nånting verkar komma fram iaf.
Kod: Markera allt
ATmega168 MAX233A DB9 (hane)
.--------. .------------------. .-------.
| 2 RXD +-------+ 3 R1OUT 4 R1IN +---------+ 2 RXD |
| 3 TXD +-------+ 2 T1IN 5 T1OUT +---------+ 3 TXD |
. . .--+ 12 V- 7 11 C+ +--. .-+ 5 GND |
. . '--+ 17 V- V 15 C+ +--' | '-------'
| | .--+ 9 GND c 16 C2- +--. ---
'--------' +--+ 6 GND c 10 C2- +--' -
| '--------+---------'
--- |
- 5V
Programmet ser ut såhär:
Kod: Markera allt
#include <avr/io.h>
void USART_Init(unsigned int ubrr)
{
/* Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* Enable the transmitter */
UCSR0B = (1<<TXEN0);
}
void USART_Transmit(unsigned char data)
{
/* Wait for empty transmit buffer */
while( !(UCSR0A & (1<<UDRE0)));
/* Put data into buffer, send the data */
UDR0 = data;
}
int main(void) {
USART_Init(25); /* 19k2 @ 8MHz */
for(;;) {
USART_Transmit('a');
USART_Transmit('\r');
USART_Transmit('\n');
}
}
När jag kör igång terminalprogrammet (TuTTy) så står det i titelraden "COM1 - TuTTy". När jag slår på AVR:en (& co) byter det till " - TuTTy (Disconnected)", så nånting verkar komma fram iaf.