XMEGA normalen Portpin als RS232 Ausgabe nutzen.

  • 1
  • 2
  • Page 2 of 2
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: XMEGA normalen Portpin als RS232 Ausgabe nutzen.

 · 
Posted: 23.02.2020 - 19:07  ·  #9
Hi.
Quote by pvs-deck
In den Arudino Software RS232 Lösungen werden Interr. vom PortChange usw. genutzt, dann sind bei einem 16MHz Gerät ohne Probleme ReadRX mit 57.6k möglich

klar ist das mit heutigen CPUs problemlos machbar.
Für die StartBit Erkennung bietet sich natürlich auch ein Change Interrupt an.
Aber für die Daten MUSS dann ein striktes Timing eingehalten werden und
da geht dann nur irgendeine Zeitmessung. Vielleicht ein Timer INT oder Delays.
(@Harry: das gilt auch für das Senden. Der Empfänger muss sich auf das korrekte Timing ja verlassen können)
Entweder macht die CPU sonst nichts anderes oder alle weitere Software ordnet
sich unter und wird dann nur während "Idle Perioden" mal abgearbeitet.

Nicht umsonst gab es schon seit den Urzeiten mit Z80/8080, 6502 gleich auch
externe UARTs der gleichen Familie, die dann bis in PC Zeiten viele Jahre lang
üblich waren.

Gunter
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 70
Posts: 250
Registered: 11 / 2009
Subject:

Re: XMEGA normalen Portpin als RS232 Ausgabe nutzen.

 · 
Posted: 23.02.2020 - 21:25  ·  #10
Ich hab mal auf die Schnelle etwas aus einem bzw 2 anderen Projekten kopiert, siehe Anhang.
Zum Test hab ich über den normalen Serport Daten empfangen und über die SoftSerial die Daten wieder zum PC gesendet mit z.b. 115200 Bd. Das ging bei mir einwandfrei.
Das ginge bestimmt auch viel einfacher, aber so wars halt gerade verfügbar.

golf

ich hab gerade gesehen, daß da was falsches steht bei dem Beispiel.
{
// bei den normalen ATXmegas wäre das z.b.
TCD0PERL := $68; // PERL - Period Register L Bite 7..0
TCD0PERH := $30; // PERH - Period Register H 15..8
TCD0CTRLA := $02; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024
TCD0INTCTRLA := $02;
}
das muss natürlich für 9600 bd heissen: TCD0PERL := $30; TCD0PERH := $68; wie weiter oben geschrieben. Getestet hab ich nur die 115200 Bd. Andere Baudraten wären ja leicht anpassbar.

Die Stringgrößen und Arrays sollten evtl je nach den zu erwarteten Daten angepasst werden.
Attachments
Filename: Softserial.zip
Filesize: 4.2 KB
Title: SoftSerial
Information: Testprogramm , TX über Softserial
Download counter: 4
Simulationsgenerator
Filename: SimGen1CH.GIF
Filesize: 166.04 KB
Title: Simulationsgenerator
Information: Source aus diesem Projekt
Download counter: 70
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 70
Posts: 250
Registered: 11 / 2009
Subject:

Re: XMEGA normalen Portpin als RS232 Ausgabe nutzen.

 · 
Posted: 25.02.2020 - 21:01  ·  #11
Ich habe das SoftSerial noch etwas gekürzt und etwas schneller gemacht. Für 1 Bit werden aber immer noch 4 µsec verbraucht (3,6 bei optimize).
Die auszugebenden Zeichen ( Strings) werden wie bisher in einem Array gesammelt und über Timerinterrupts ausgegeben.

golf
Attachments
Filename: Softserial1.zip
Filesize: 2.23 KB
Title: SoftSerial1
Information: Testprogramm , TX über Softserial gekürzt
Download counter: 2
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 70
Posts: 250
Registered: 11 / 2009
Subject:

Re: XMEGA normalen Portpin als RS232 Ausgabe nutzen.

 · 
Posted: 26.02.2020 - 08:09  ·  #12
Ich habe noch einen Fehler behoben, wenn Ausgabestrings zu schnell aufeinander folgen, dann darf der Timer nicht nochmal neu gestartet werden.

golf
Attachments
Filename: Softserial2.zip
Filesize: 2.4 KB
Title: Softserial2
Information: Fehlerbehebung
Download counter: 2
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: XMEGA normalen Portpin als RS232 Ausgabe nutzen.

 · 
Posted: 28.02.2020 - 11:35  ·  #13
Quote by golf

Ich habe noch einen Fehler behoben, wenn Ausgabestrings zu schnell aufeinander folgen, dann darf der Timer nicht nochmal neu gestartet werden.

golf


Hallo golf,

klasse :-) Das werde ich mir mal genau ansehen, ist genau das was ich benötige.
Danke

Thorsten
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 70
Posts: 250
Registered: 11 / 2009
Subject:

Re: XMEGA normalen Portpin als RS232 Ausgabe nutzen.

 · 
Posted: 28.02.2020 - 14:13  ·  #14
Hallo Thorsten,
danke. ist sehr gerne geschehen.
golf
  • 1
  • 2
  • Page 2 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 18 · Cache Hits: 15   114   129 · Page-Gen-Time: 0.030964s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI