RS 232 Code für Microcontroller (GCC Compiler)

31/08/2008 - 10:39 von Paul Rosen | Report spam
Moin,

ich muss an einen Microcontroller fünf Geràte mit RS232 Schnittstelle
anschließen. Dabei làuft die Kommunikation nur mit maximal 9600 Baud,
wahrscheinlich noch langsamer. Es wird nur ab und zu ein
Starte-Messung Befehl gegeben und nach langwieriger Messung das
Ergabnis ausgelesen. Daher kann die Steuerung der Schnittstelle auch
in Software gegossen sein, was auch mangels genügender Hardware Ports
zwingend ist, wenn ich nicht mehrere Controller einsetzen will. Der
Compiler ist ein GCC von Microchip für die 16-bittigen PIC24, der mit
32 Mhz làuft.

Ich könnte mir vorstellen, dass das Problem nicht neu ist. Mit der
möglichen Flankensensitivitàt des PIC24 sollte doch mit
interruptgestützter Implementierung die geringe Baudrate mit
hinreichender Genauigkeit zu machen sein. Nützt man RTS und CTS,
könnte es vielleicht sogar mit Pollen gehen. Oder sehe ich das zu
blauàugig? Hat da jemand Erfahrung? Gàbe es da einen fertigen
Algorithmus für die Implementierung?
 

Lesen sie die antworten

#1 Falk Willberg
31/08/2008 - 11:06 | Warnen spam
Paul Rosen schrieb:
Moin,

ich muss an einen Microcontroller fünf Geràte mit RS232 Schnittstelle
anschließen. Dabei làuft die Kommunikation nur mit maximal 9600 Baud,
wahrscheinlich noch langsamer. Es wird nur ab und zu ein
Starte-Messung Befehl gegeben



Wird der Befehl von einem der 5 Geràte ausgelöst?
Kann es sein, daß zwei Geràte gleichzeitig den Befehl senden?

und nach langwieriger Messung das
Ergabnis ausgelesen. Daher kann die Steuerung der Schnittstelle auch
in Software gegossen sein, was auch mangels genügender Hardware Ports
zwingend ist,



...

Ich könnte mir vorstellen, dass das Problem nicht neu ist.


...
Nein, ist es nicht. Ich habe mal ein Beispiel gesehen, nannte sich
soft-uart, WIMRE. Aber mit fünf ports würde ich eher in Richtung 5 zu 1
(De-)Multiplexer überlegen, wenn RTS/CTS verwendet werden können.

Dann "einfach" rundherum ein Geràt per MUX auf den UART schalten, dessen
R(C?)TS freischalten, kurz warten und, wenn nichts kommt, das nàchste
Geràt wàhlen. So habe ich mal zwei serielle Ports an einen UART geschaltet.

Gruß,
Falk

Ähnliche fragen