Frage zu RS232 ...

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 ....

Reply to
Nicolas Nickisch
Loading thread data ...

Servus!

alle ok für ne RS232-Buchse mit 1:1-Kabel

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

Reply to
Jan Stumpf

Nicolas Nickisch schrieb:

Das ist soweit ok.

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.

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
Reply to
me_private

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?

Das heißt auf jeden Fall, daß die Verbindungen AVR->MAX-232 richtig sind und das Deine Software die serielle Schnittstelle aktiviert ;-)

Wohl der häufigste Fehler sind falsche (oder nicht) gesetzte Clock-Fuses. Im Auslieferungszustand läuft der mega128 mit internem RC-Oszillator auf 1MhZ.

Teiler ist richtig.

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

/Jan-Hinnerk

Reply to
Jan-Hinnerk Reichert

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.roe-mail: snipped-for-privacy@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

// Standard Input/Output functions #include #include

// 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

Reply to
Nicolas Nickisch

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

Ach so...ja dann. :-)

Olaf

--
D.i.e.s.S. (K.)
Reply to
Olaf Kaluza

Hi!

Da ich von dem ATMEGA8 keine Ahnung habe und die Verdrahtung zum MAX232=20 auch schon best=E4tigt wurden (wenn es eine Sub-D 9-Pol Buchse ist und=20 eine 1-zu-1-Verbindung zum PC), habe ich nur noch den Tip die=20 Handshakeleitungen zu R=FCckzukoppeln, da=DF immer der Hardware-Handshake= =20 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=20 etwa -9 (MAX232 Pin 6) und +9 Volt (MAX232 Pin 2) anliegen.

Ciao Dschen

--=20 Dschen Reinecke

=3D=3D=3D der mit dem Namen aus China =3D=3D=3D

formatting link
mailto: snipped-for-privacy@dschen.de

Reply to
Dschen Reinecke

Hi!

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
Reply to
Nicolas Nickisch

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 ;-)

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.

[...]

Da habe ich mich wohl nicht klar genug ausgedrückt. Der Abschnitt hätte voll gereicht ;-(

Der Code ist in Ordnung.

/Jan-Hinnerk

Reply to
Jan-Hinnerk Reichert

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

Reply to
Harald Wilhelms

Hallo !

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

Reply to
Aguja

Harald Wilhelms schrieb:

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

Reply to
Martin Lenz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.