unsigned Int mit C18 übertragen

OP #3554142
Lesenswert?

Hallo zusammen,

ich würde gerne einen RTC (PCF8583 oder DS1337) mittels RS-232 stellen.

Die Uhrzeit und das Dateum sind im Baustein als unsigned int 
gespeichert. Die Funktionien funktionieren auch problemos.

Nun würde ich gerne eine Funktion hizufügen. Datum und Uhrzeit per PC 
(RS-232 Schnittstelle) einstellen.

Leider kann der C18 keine unsigned int direkt empfangen, und die CAST 
Funktion arbeitet nicht sauber. Hat jemand eine Idee?  Bin gerade mit 
einem Array am experimentieren.

Danke und Gruß
Ingo
Gast #3554143
Lesenswert?

Ingo Schick schrieb:
> Nun würde ich gerne eine Funktion hizufügen. Datum und Uhrzeit per PC
> (RS-232 Schnittstelle) einstellen.

Bei Verwendung der RS-232 Schnittstelle wirst du dich auf die 
Übertragung von einzelnen Bytes einrichten müssen, d.h. du mußt deine zu 
übertragenden Daten in eine Kette von Bytes umformen, mit Start- 
und/oder Stopzeichen versehen, übertragen und beim Empfänger den 
Übertragungsrahmen wieder von den Nutzdatenbytes trennen. Dann kannst du 
wieder deine unsigned int, wieviele Bytes auch immer die bei C18 haben, 
zusammensortieren und damit deine RTC füttern.
Gast #3554150
Lesenswert?

Ingo Schick schrieb:
> Leider kann der C18 keine unsigned int direkt empfangen,

Wie sollte er auch? Bei RS232 werden einzelne Bytes übertragen.

> und die CAST Funktion arbeitet nicht sauber.

Was immer das heißen mag...

> Hat jemand eine Idee?

Am elegantesten ist es, bei sowas gar nicht direkt Binärdaten, sondern 
Text zu übertragen. Dann kannst du zur Not auch mal von Hand mit einem 
seriellen Terminal dran. Das hat den Vorteil, daß du die µC-Seite der 
Übertragung erstmal komplett fertig machen kannst, ohne die andere 
gleichzeitig zu bauen. Wenn man eine Übertragung programmieren muß, bei 
der beide Seiten von Anfang an vorhanden sein müssen, mußt du bei einem 
Fehler immer erst rausfinden, auf welcher Seite der jetzt aufgetreten 
ist.
Gast #3554200
Lesenswert?

Ingo Schick schrieb:

> (PCF8583 oder DS1337)

> Die Uhrzeit und das Dateum sind im Baustein als unsigned int
> gespeichert.

> und die CAST Funktion arbeitet nicht sauber

vielleicht habt ihr (du, der Compiler und die Hardware) unterschiedliche 
Ansichten, was ein unsigned int ist. Die Bausteine benutzen das 
BCD-Format, das kann man nicht sinnvoll casten.
Gast #3554533
Lesenswert?

Ingo Schick schrieb:
> Du Umwandlung von Integer nach BCD funktioniert.

na, das ist doch schon die halbe Miete für die RS-232-Übertragung. Vom 
Terminalprogramm auf dem PC kommen ASCII-Zeichen an. Jedes Zeichen 
entspricht genau einer BCD-Ziffer aus der RTC. Du musst nur noch aus der 
ASCII-Eins eine BCD-Eins machen indem du '0' (0x30) subtrahierst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren