Frage zu RS232 ...

N

Nicolas Nickisch

Guest
Hi NG,
habe auf einem ľC-projekt mit einem ATMEGA8 eine RS232-Schnittstelle
vorgesehen.

Da diese aber nicht funktioniert bitte ich um rat:

1. TxD des AVR geht an Pin11 eines MAX232 (T1in)
2. RxD " " Pin12 (R1Out)
3. T1out (Pin 14) geht an Pin 2 des SUB-D
4. R1In (Pin 13 an Pin 3 des SUB-D

irgendwas gedreht ?

An meinem Compi habe ich nun so einen Quick-tester für RS232 angeschlossen
mit LEDs für die einzelnen Leitungen.

Nun flackert mit einem Testprogramm im AVR die LED "RD" . Nur was heisst das
? RD für den Compi oder RD für den AVR (evtl. habe ich auch noch ein
gedrehtes Kabel benutzt) ?

Obendrein habe ich auch noch einen etwas "krummen" Oszillator am AVR dran -
14.3181 MHz statt 14,7456 wie im Manual des AVR geschrieben.

Theoretisch sollte bei 9600 baud ein Wert für UBRR von 92 stimmen und nur
0,2% bweichunng von der idealgeschwindigkeit der UART vorliegen.

Kann jemand mal einen Kommentar zu meinem Design abgeben ?

ich weiss, dass da einiges gemurkst ist ....
 
Servus!
1. TxD des AVR geht an Pin11 eines MAX232 (T1in)
2. RxD " " Pin12 (R1Out)
3. T1out (Pin 14) geht an Pin 2 des SUB-D
4. R1In (Pin 13 an Pin 3 des SUB-D
alle ok für ne RS232-Buchse mit 1:1-Kabel

Kann jemand mal einen Kommentar zu meinem Design abgeben ?
Du kanst z.b. sehr einfach testen wo die TX-Leitung vom PC ankommt indem du
am Stecker der zum Atmel geht die Pins nachmisst. An einem (2 oder 3 bei 1:1
pin 3) müßten -11V anliegen. Das ist dein TX-Signal vom Pc und muss in den
R1In des Max232. Der ander Pin (2 oder 3) sollte dann RX (PC-Seitig,
TX-Atmelseitig) sein. Da kannst du am Stecker der zum PC geht messen (wieder
ca. -11V).

mfg
Jan
 
Nicolas Nickisch <n.nickisch@gmx.de> schrieb:

1. TxD des AVR geht an Pin11 eines MAX232 (T1in)
2. RxD " " Pin12 (R1Out)
Das ist soweit ok.

3. T1out (Pin 14) geht an Pin 2 des SUB-D
4. R1In (Pin 13 an Pin 3 des SUB-D

irgendwas gedreht ?
Das kommt darauf an, um welchen SUB-D Stecker es sich handelt, 9- oder
25-polig. Bei diesen ist die Pinbelegung fĂźr RXD/TXD (2+3) vertauscht. Die
Bezeichnung 'RXD'/'TXD' gelten immer aus Sicht eines DTE.

An meinem Compi habe ich nun so einen Quick-tester fĂźr RS232
angeschlossen mit LEDs fĂźr die einzelnen Leitungen.

Nun flackert mit einem Testprogramm im AVR die LED "RD" . Nur was heisst
das? RD fĂźr den Compi oder RD fĂźr den AVR (evtl. habe ich auch noch ein
gedrehtes Kabel benutzt)?
In der Regel ist die LED "RX" solcher Tester mit der RXD-Leitung eines DTE
verbunden. Bei der COM-Schnittstelle eines Computers ist das bei einem
25-pol Stecker Pin 3 und bei einem 9-pol Stecker Pin 2.

Für den Anschluß müssen die Leitungen natürlich gekreuzt werden, d. h. TXD
des einen Gerätes geht auf RXD des anderen und umgekehrt. Welchen Pins das
entspricht hängt, wie gesagt, vom Stecker ab.
--
Das Recht auf Anonymität: http://www.realname-diskussion.info/anonheft.htm
Pseudonym? Aber sicher! http://www.realname-diskussion.info/pseudo.htm
Kein Bock auf blĂśde Anmache?
http://www.realname-diskussion.info/hinweis.htm
Kein Bock auf Spam? http://usenet.noemails.net/email-adressen.html
 
Nicolas Nickisch wrote:

Hi NG,
habe auf einem ľC-projekt mit einem ATMEGA8 eine RS232-Schnittstelle
vorgesehen.

Da diese aber nicht funktioniert bitte ich um rat:

1. TxD des AVR geht an Pin11 eines MAX232 (T1in)
2. RxD " " Pin12 (R1Out)
3. T1out (Pin 14) geht an Pin 2 des SUB-D
4. R1In (Pin 13 an Pin 3 des SUB-D

irgendwas gedreht ?
Wenn Du ein female SUB-D und ein 1:1-Kabel (Verlängerungskabel)
benutzt, sollte das OK sein. Hast Du Masse an Pin 5 angeschlossen?

An meinem Compi habe ich nun so einen Quick-tester für RS232
angeschlossen
mit LEDs für die einzelnen Leitungen.

Nun flackert mit einem Testprogramm im AVR die LED "RD" . Nur was
heisst das ? RD für den Compi oder RD für den AVR (evtl. habe ich
auch noch ein gedrehtes Kabel benutzt) ?
Das heißt auf jeden Fall, daß die Verbindungen AVR->MAX-232 richtig
sind und das Deine Software die serielle Schnittstelle aktiviert ;-)

Obendrein habe ich auch noch einen etwas "krummen" Oszillator am AVR
dran - 14.3181 MHz statt 14,7456 wie im Manual des AVR geschrieben.
Wohl der häufigste Fehler sind falsche (oder nicht) gesetzte
Clock-Fuses. Im Auslieferungszustand läuft der mega128 mit internem
RC-Oszillator auf 1MhZ.

Theoretisch sollte bei 9600 baud ein Wert für UBRR von 92 stimmen
und nur 0,2% bweichunng von der idealgeschwindigkeit der UART
vorliegen.
Teiler ist richtig.

Wenn das oben alles nichts hilft, gibt nochmal Deine
Initialisierungsroutine durch...

/Jan-Hinnerk
 
Hi, ich benutze eine ATMEGA8. Hat der auch so depperte Fuses ?
Zugegeben, in meinem Programm dauert das "delay_ms(1000)" verflixt lange -
Muß ich mal stoppen.

Ansonsten kommt hier das C-programm Marke Quick-and-dirty by Codevision.

/*********************************************
This program was produced by the
CodeWizardAVR V1.24.0 Evaluation
Automatic Program Generator
Š Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:eek:ffice@hpinfotech.ro

Project :
Version :
Date : 17.01.2004
Author : Freeware, for non-commercial use only
Company :
Comments:


Chip type : ATmega8
Program type : Application
Clock frequency : 14,745600 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/

#include <mega8.h>

// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>

// Declare your global variables here
//char data=0;
//char *data;

void main(void)
{
// Declare your local variables here
//data="test";

// Input/Output Ports initialization
// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x5C;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;




while (1)
{
// Place your code here
//putchar(data++);
putsf("Hello world");
delay_ms(300);
};
}


Vielen Dank fürs Anschauen


Nicolas Nickisch
 
Nicolas Nickisch <n.nickisch@gmx.de> wrote:

Hi, ich benutze eine ATMEGA8. Hat der auch so depperte Fuses ?
Wie programmiert man eigentlich einen Microcontroller ohne vorher mal
das Datenblatt gelesen zu haben?

Automatic Program Generator
Ach so...ja dann. :)

Olaf



--
D.i.e.s.S. (K.)
 
Nicolas Nickisch wrote:

Hi!


1. TxD des AVR geht an Pin11 eines MAX232 (T1in)
2. RxD " " Pin12 (R1Out)
3. T1out (Pin 14) geht an Pin 2 des SUB-D

4. R1In (Pin 13 an Pin 3 des SUB-D
Da ich von dem ATMEGA8 keine Ahnung habe und die Verdrahtung zum MAX232
auch schon bestätigt wurden (wenn es eine Sub-D 9-Pol Buchse ist und
eine 1-zu-1-Verbindung zum PC), habe ich nur noch den Tip die
Handshakeleitungen zu Rückzukoppeln, daß immer der Hardware-Handshake
gegeben ist:

Sub-D 9-Pol-Buchse: Pin 1 mit 4 und 6 verbinden und Pin 7 mit Pin 8 (Pin
9 bleibt offen und an Pin 5 kommt GND).

Du kannt beim MAX232 mal die beiden Buffer-Elkos nachmessen, ob da so
etwa -9 (MAX232 Pin 6) und +9 Volt (MAX232 Pin 2) anliegen.

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Die Elko-Spannungen passen, -9,4V und +9,4V ...
"Dschen Reinecke" <usenet@dschen.de> schrieb im Newsbeitrag
news:4009AA81.9040205@dschen.de...
Nicolas Nickisch wrote:

Hi!


1. TxD des AVR geht an Pin11 eines MAX232 (T1in)
2. RxD " " Pin12 (R1Out)
3. T1out (Pin 14) geht an Pin 2 des SUB-D

4. R1In (Pin 13 an Pin 3 des SUB-D
Da ich von dem ATMEGA8 keine Ahnung habe und die Verdrahtung zum MAX232
auch schon bestätigt wurden (wenn es eine Sub-D 9-Pol Buchse ist und
eine 1-zu-1-Verbindung zum PC), habe ich nur noch den Tip die
Handshakeleitungen zu Rückzukoppeln, daß immer der Hardware-Handshake
gegeben ist:

Sub-D 9-Pol-Buchse: Pin 1 mit 4 und 6 verbinden und Pin 7 mit Pin 8 (Pin
9 bleibt offen und an Pin 5 kommt GND).

Du kannt beim MAX232 mal die beiden Buffer-Elkos nachmessen, ob da so
etwa -9 (MAX232 Pin 6) und +9 Volt (MAX232 Pin 2) anliegen.

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ===

http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Nicolas Nickisch wrote:

Hi, ich benutze eine ATMEGA8. Hat der auch so depperte Fuses ?
Ja, und das ist auch ganz gut so. Dann kann man ihn nämlich auch
benutzen, wenn man nicht vorhat einen externen Oszillator aufzubauen.
Das System beim MSP430 gefällt mir allerdings besser; da kann/muß man
den Taktgenerator in Software umschalten ;-)

Zugegeben, in meinem Programm dauert das "delay_ms(1000)" verflixt
lange - Muß ich mal stoppen.
Mußt Du nicht! Wenn Du nichts von den Fuses weißt, hast Du sie auch
nicht gesetzt. Folglich läuft Dein Chip auf internem Oszillator.

Ansonsten kommt hier das C-programm Marke Quick-and-dirty by
Codevision.
[...]
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x5C;
Da habe ich mich wohl nicht klar genug ausgedrückt. Der Abschnitt
hätte voll gereicht ;-(

Der Code ist in Ordnung.

/Jan-Hinnerk
 
Olaf Kaluza <olaf@criseis.ruhr.de> wrote in message news:<HrnEpA.1nE@criseis.ruhr.de>...

Wie programmiert man eigentlich einen Microcontroller ohne vorher mal
das Datenblatt gelesen zu haben?

Automatic Program Generator

Ach so...ja dann. :)

Olaf

Gibt es solche "APG´s" auch bei den Fernsehgesellschaften?
SCNR
Harald
 
Hallo !

habe auf einem ľC-projekt mit einem ATMEGA8 eine RS232-Schnittstelle
vorgesehen.

Da diese aber nicht funktioniert bitte ich um rat:
Den ATMEGA in Reset halten und dann TX/RX am Chip provisorisch kurz-
schließen. Dann kannst Du mit einem Terminalprogramm ganz einfach
prüfen wie weit (also bis zum MAX oder nach dem MAX) die Verbindung
funktioniert.

cu,

Aguja

Neu: Forum - PROuC.de ==> Free AVR-, PIC- & 8051-Programmers, Apps & Tips
 
Harald Wilhelms schrieb:
Olaf Kaluza <olaf@criseis.ruhr.de> wrote in message news:<HrnEpA.1nE@criseis.ruhr.de>...

Wie programmiert man eigentlich einen Microcontroller ohne vorher mal
das Datenblatt gelesen zu haben?

Automatic Program Generator

Ach so...ja dann. :)

Olaf

Gibt es solche "APG´s" auch bei den Fernsehgesellschaften?
Nein, die sind nicht automatisch, sondern halbautomatisch. Da wird
teilweise noch manuell gewürfelt... Außerdem ist das abschreiben der
Programme von den Konkurrenzsendern noch nicht automatisiert. :)

Martin
 

Welcome to EDABoard.com

Sponsor

Back
Top