www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mailbox system beim programmieren (Ablaufmanager)


Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

und hier wieder eine frage:

wer von euch kennt das sog. "Mailbox-System" beim programmieren?
also es geht darum, dass mehrere daten und ereignisse gespeichert
werden sollen und sich dabei nichts in die quere kommen darf/soll, aber
auch keine funktion blockiert werden darf.
d.h., wenn sensor(a) alle 10 sekunden speichert, aber gerade eine
andere funktion von sensor(b) auf den speicherbus zugreift und diesen
blockiert (für längere zeit), dürfen die daten von sensor(a) nicht
verloren gehen. also muss eine art briefkasten (mailbox), also ein
extra speicherbereich festgelegt werden, in den sensor(a) seine daten
ablegen kann und automatisch, wenn der bus wieder frei ist, alles was
darin liegt anschliessend (nachträglich) gespeichert wird.

ich hoffe das war nicht allzu verwirrt beschrieben...
hat sowas jemand schon mal programmiert oder sonstwie erfahrungen
damit?

also bei mir geht es um eine pumpen-elektronik, die zB minutenweise
daten speichert, diese nach 60min zu stunden mittelt, nach 24h zu
tageswerten und alle 30tage zu monatswerten; und diese dann alle in
ringspeichern unterbringt. zusätzlich können aber auch ereignisse oder
serviceroutinen eintreten, die je nach priorität den bus belegen
können, während wieder eine speicherung fällig wäre.

oh jee... jetz blick ich bald selbst nicht mehr durch... :-P

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner eine idee oder erfahrung?  :-(

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
push

schade; letzter versuch... keiner ne ahnung?

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wäre es mit einem Multitasking-System? Da ist genau das was Du
suchst schon eingebaut:

* Für jeden Sensor einen Task
* Für Dein Speichersystem einen Task

Die Sensoren schicken Messages mit ihren zu speichernden Daten an den
Speichertask.

Multitaskingsysteme die das liefern, sind u.a.:

proc realtime kernel von Jan Eric Nilsen
(www.nilsenelektronikk.no)

freeRTOS

Viel Spass, Stefan

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, aber ich entwickel nur ein kleines teil des ganzen systems. das
ganze drumherum wie µC, bus, sensoren, etc. und alles, was der
prozessor sonst noch machen soll, ist vorgegeben.
ich denke also an so eine art speicherverwaltung, bzw.
ablaufsteuerung.
sowas wie ein briefkasten, in den jeder teilnehmer, seine daten (mit
bestimmter priorität) reinwerfen kann, dies durch einen interrupt
erkannt wird und dann wenn zeit ist, im eeprom gespeichert wird.
hierbei ist es halt wichtig, das bestimmte ereignisse absoluten vorrang
haben, aber während eines anderen, nicht so wichtigen speichervorganges
auftreten können, der dann kurzzeitig unterbrochen werden sollte.

Autor: Aleksej (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es wirklich so aussieht, wie du es beschrieben hast, dann geht ja
nicht anders als die Daten direkt an dem Sensor zu speichern. Es gibt
verschiedene Moeglichkeiten, du koenntest z.B. einen kleinen MC
implementieren oder was fertiges nehmen, fuer die Temperatur z.B.
DS1615 von Maxim. Der kann so was: "...Logs up to 2048 consecutive
temperature measurements in read-only nonvolatile memory "

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht kannst du es nochmal etwas genauer erläutern. Begriffe wie
Speicherbus und Sensor sind zu allgemein. Und was meinst du mit
"Speicherbus blockieren"? Um welche Zeitspannen geht es da, wo
irgendwas nicht erfolgen kann? Werden Sensoren gepollt oder per
Interrupt verarbeitet? Was für ein Prozessor, welche
Programmiersprache?

Ein Programm, was nicht in der Lage ist, alle paar Sekunden einen
Sensor zu bedienen, ist von meinem Gefühl vom Design irgendwie schief.

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

also:
prozessor ist ein Renesas M32C85 und programmiert wird in C.
bus ist ein I2C mit ca. 100kHz und Sensoren werden allemöglichen (als
hausnummer mal ca. 20 stück).

mit blockieren meine ich:
die pumpe um die es hier geht, wird zu warm, d.h. ein sensor meldet die
temperatur (alle paar sekunden) und ab einem grenzwert wird "alarm"
gegeben => EREIGNIS 1 (soll wie alle anderen im über I2C angebundenen
EEPROM gespeichert werden).
gleichzeitig fällt die drehzalhl ab, meldung => EREIGNIS 2.
und dummerweise will gerade zu dem zeitpunkt ein servicetechniker mit
einem externen zugriff das EEPROM auslesen => EREIGNIS 3.

das zB sollte dann schon geregelt sein, das erst die wichtigen daten
festgehalten werden (EREIGN.1), aber die anderen dadurch nicht verloren
gehen.
zu den zeiten, das speichern eines 128byte blockes braucht <=20ms.
das auslesen des gesamten speichers <=10sek.

ich habe also jede menge daten in ringspeichern (tempereaturen) und
ereigniszählern (fehler), so dass das 512kbit EEPROM gut genutzt wird.
somit könnten sich also auch einige dieser daten beim speichern in die
quere kommen, sollten mehrere zur selben zeit gespeichert werden.
deshalb hatte ich an so eine art briefkasten gedacht, in den die
sensoren zB ihre pakete reinwerfen und die dann von dort ins eeprom
geschrieben werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.