Hallo liebes Forum,
ich bräuchte Hilfe...
über eine RS485-Schnittstelle möchte ich Daten, welche ich mit einem
Mikrocontroller (PIC24FV16KM204) einlese (ADC) an den PC schicken.
Die Daten möchte ich vorerst nur mit Hterm empfangen und ansehen.
Mit dem Programmieren der RS485 habe ich keine Ahnung. Ich programmiere
derzeit mit MPLABX mit C. Im Internet habe ich nach einem Code-Bsp
gesucht, nur leider finde ich nichts passendes.
Hat jemand von euch ein einfaches möglichst kleines Code-Bsp parat? Es
sollen nur 6 float-Werte gesendet werden...
Danke für eure Hilfe!
LG
Bleibt das beim "nur"?
Wan sollen denn die Werte geschickt werden? Selbstständig vom MC oder
auf Anforderungstelegram vom PC her?
Sind mehrere Knoten daran beteiligt? Bußadressen wie einstellbar?
Grundsätzlich lauft das mit der 485 genau so wie mit einer RS232
Verbindung, es muss aber zusätzlich eine Steuerung des Treiberbausteines
berücksichtigt werden.
Werte sollen einfach alle 2 Sekunden dem PC übertragen werden, sobald
der uC Versorgt wird, also selbständig vom uC.
daher möchte ich einen möglichst einfachen Code dafür.
Weiß nicht was genau unter "Knoten" gemeint ist. Es ist nur ein uC,
welcher 6 Werte einlesen soll...
Danke für eure Hilfe!
Wenn Du nur Senden willst ist RS485 nicht anders als RS232, Du legst den
!TXE vom Treiber fest auf Masse, !RXE auf Vcc und sendest die Daten.
Wenn Du auch empfangen willst mußt Du die Steuerleitungen vom Treiber
vor und nach dem Senden passend setzen.
Wonko schrieb:> Du legst den> !TXE vom Treiber fest auf Masse
Dann muss aber sicher sein, dass das der RS485-Anschluss am PC nicht
auch gelegentlich tut.
Georg
Hi Michl,
sag doch mal was du alles schon hast!
- läuft dein Code für die RS232
- Was für ein RS485 Treiber hast du am MC und welchen am PC
>möglichst kleines Code-Bsp:
sollten auch die PIC-Leute haben, ich glaub beim PIC32 war auch ein
Beispiel dabei. Bin mir aber nicht sicher.
Leitungstransceiver: MAX481CSA
Ich benutze einen RS485->Rs232 Konverter.
Welchen Treiber mein PC dafür installiert hat, weiß ich nicht. Wie kann
ich das nachsehen?
ADC Werte sendet man als Integer oder als Text, nicht als Float.
Woran merkt der Empfaenger wenn ein neuer Wert kommt ?
Aha. HTerm, bedeutet Text wird gesendet. Also ein Wert, und denmit einem
CR & LF versehen.
Hi Michl,
sieht auf den ersten Blick gar nicht so schlecht aus.
>nur die Zahl 55 rüber geschickt werden soll (U1TXREG = 0x55;)...
Das wird nicht gehen! :-D
0x55 ist ein großes U und keine 5
also bei dir müßten 3 große U's am Terminal ankommen.
WAS siehst du auf dem Terminal? Bild?
Baudrate ist 19200 oder 9600 ???
Mal bitte deine Doku mit der Rechnung anpassen, auch für uns.
"re_de" ist ein define?
>RS485->Rs232 Konverter
Schaltet der automatisch um? (RX / TX)
Das einzigste was mir auffällt ist dein 'enable transmitter' und
'disable transmitter' in der write Funktion, ist das nötig?
so hier mal ein Link zu einer GUTEN INIT und einer write Funktion, mit
RS485 Leitung.
https://github.com/konradb3/gripper-firmware/blob/master/uart.c