RS232 Daten im Mikrocontroller Puffern

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 30 12 2025  09:43:27      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
RS232 Daten im Mikrocontroller Puffern

    







BID = 45253

Benedikt

Inventar

Beiträge: 6241
 

  


Ich möchte ein Flash EPROM mit einem uC programmieren. Die Daten kommen über RS232 vom PC.
512kByte seriell zu übertragen dauert recht lange, weshalb ich mit 115200Baud arbeiten möchte´.
Das Problem ist nun:
Flash ERPOMs werden häufig Seitenweise beschrieben (Eine Seite hat 64 bis 512Bytes, je nach EPROM)
Das Programmieren läuft folgendermaßen ab:

- Programmierbefehl senden (3Bytes an bestimmte Adressen)
- Daten Senden (64 bis 512 Bytes)
- warten bis die Seite programmier ist (ca. 10ms)

- Programmierbefehl senden (3Bytes an bestimmte Adressen)
- usw.

Zwischen den übertragenen Bytes dürfen max. 100us liegen, sonst bricht das EPROM die Datenübertragung ab und programmiert nicht übertragene Bytes mit FF.
Man muss also erst die Daten im uC Puffern, und dann Seitenweise an das Flash übertragen.
Während der Übertragung der Daten ans Flash EPROM werden Daten vom PC empfangen und müssen zwischengespeichert werden. Diese werden im Moment im oberen RAM Bereich (128Bytes) des 80C52 abespeichert.
Diese 128 Bytes reichen aber nicht aus. Ich könnte die Daten auch im externen RAM (8kByte) ablegen, aber das Umschalten des Datenpointers (zwischen Flash Adresse und RAMPuffer), und die 16bit Adresszähler verschlingen eine Menge Rechenzeit, die bei 115200Baud = 11520Byte/s sowiso schon recht knapp ist (maximal 160 Befehle pro Byte).

Kennt jemand eine schnelle Datenpufferroutine, mit etwa 256 bis 1kByte Puffergröße ?

BID = 45315

McMorton

Neu hier



Beiträge: 42
Wohnort: Lippe
Zur Homepage von McMorton

 

  

So eine Datenpufferroutine kenn ich auch nicht.
Aber ich stand letztens vor einem ähnlichen Problem.
Habe das ganze dann anders gelöst:
PC sendet erste Daten. Die speichere ich irgentwo (z.B. Puffer).
Dann sende ich dem PC erst einen Befehl für die nächsten Daten.

So bekomme ich genug Zeit um die Daten zu verarbeiten.

Wird natürlich dadurch etwas langsamer. Aber die ganze Prozedur ist zeitunkritisch.

BID = 45731

MeisterEIT

Gelegenheitsposter



Beiträge: 56
Wohnort: koblenz
Zur Homepage von MeisterEIT

hi,
wie wäre es denn mit einem µP mit mehr SRam?
dann einfach ein array mit 512 stellen und fertig.

aber 115200 baud sind 115200 bit/s, also 14400 byte/s oder irre ich mich da jetzt?
weil dann hab ich was verpasst.
grüsse

[ Diese Nachricht wurde geändert von: MeisterEIT am  2 Jan 2004  1:25 ]

BID = 45737

Benedikt

Inventar

Beiträge: 6241

115200Baud = 115200bit/s= 11520byte/s, da 1 Byte= 10 Bit (= 8 Datenbit + 1 Start und 1 Stop Bit)

Mehr RAM ist kein Problem, aber der 80C52 hat intern nur 256 Bytes und die reichen nicht.
Wenn ich das exteren RAM ansteuere, muss ich den Datenpointer zwischen den normalen Flash EPROM Adressen, dem Start des Puffers und dem Ende des Puffers umschalten. Das dauert zulange.
Im Moment läuft die Schaltung einwandfrei mit 19200Baud. Das Programmieren dauert leider recht lange. Bei höhren Baudraten gehen Daten verloren.
Im Moment existiert im RAM ein 1kByte Ringpuffer der ununterbrochen gefüllt wird. Zwei Zähler merken sich die Schreibadresse für neue Daten und die Adresse wo die gefufferten Daten beginnden. Die Differenz ist die Länge der gepufferten Daten. Sobald genügend Daten im Puffer sind, werden diese an das Flash EPROM übertragen.
Diese Datenübertragung dauert leider recht lange, weshalb einige Daten verloren gehen (trotz Unterbrechung durch einen Interrupt sobald serielle Daten empfangen werden).


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 4 Beiträge verfasst
© x sparkkelsputz        Besucher : 188006246   Heute : 1926    Gestern : 8349    Online : 252        30.12.2025    9:43
6 Besucher in den letzten 60 Sekunden        alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0250391960144