Forum: Mikrocontroller und Digitale Elektronik Generelle Frage zu Programmsicherheit


von Tristan (Gast)


Lesenswert?

Hallo Freunde der Elektronik,

ich habe eine generelle Frage zum Mikrokontroller. Sollte man bei
Verwendung eines LCD's dieses von Zeit zu Zeit programmtechnisch neu
initialisieren? Oder reicht einmal initialisieren aus? Welche andere
Möglichkeit bleibt um die ordnungsgemäße Funktion des LCD's zu
überprüfen?

Ich hoffe auf viele Hinweise...

Tristan

von Marko (Gast)


Lesenswert?

die ordnungsgemäße Funktion sieht man für gewöhnlich ...
hatte bisher och keine Probleme das ein LCD seine Initialisierung
vergessen hätte ... mal abgesehen von Stecker raus ziehen ;o)

von blubber (Gast)


Lesenswert?

Ich geh mal vom 0815 Display aus

Meistens haben die ein CGRAM, wenn du keine Zeichen selbst generierst
machs so: Schreib einen Code ins RAM, warte und lies ihn wieder - wenn
das geht weißt du dass es noch funktioniert.

Gruß Andreas

PS: Du könntest auch in den "nicht genutzten Speicher" schreiben
(z.B. einzeiliges Display mit 16 Zeichen hat Speicherbereiche die sich
beschreiben lassen, aber nicht angezeigt werden - weil eben die gleice
Hardware eingebaut wird) - ob da allerdings wirklich Ram dahinter hängt
weiß ich nicht...

von Dietmar (Gast)


Lesenswert?

@Tristan:

Fang jetzt bloß nicht an, ein einfaches Register 2 mal zu schreiben,
sonst drehst du irgendwann am Rad. Das gibt ein Ding ohne Ende.

Man kann vielleicht, in längeren Zeitabständen, vielleicht nachts um
12, wenn es nicht stört, den ganzen Controller mal neu initialisieren.

Anfangs habe ich auch mal geglaubt, bei so einem µC könnten die
Register unstabil werden, und man müsse sie von Zeit zu Zeit mal wieder
erneuern, z.B. Interruptfreigaben, müsse was gegen Programmabsturz tun,
usw..

Aber, allen Ernstes: Glaubst du denn, daß du auf diese Art und Weise
noch eine komplexere Softwareentwicklung bewältigt bekommst?

Im Grunde, muß jedes Bit zu jeder Zeit glaubwürdig sein, sonst kann man
ja eine größere Anwendung von Anfang an vergessen. Es könnte zu jeder
Zeit jedes Bit einen Fehler hervorrufen. Bei Programmierung in
Hochsprache wie z.B. C, bekommt man ja erst recht nicht mehr mit, was
sich auf Maschinensprachenebene abspielt.

Beim Displaycontroller, kann man das genau so handhaben.

Hat ein Peripheriebaustein noch eine Readback-Funktion für
initialisierte Register, kann man die natürlich nutzen.

Wenn ich sehe, was sich im meinem ARM7-Controller alles abspielt???

Vielleicht ist eine Betriebsspannungsüberwachung (Spannungs-Watchdog,
µC-Supervisor) in der Schaltung eher angebracht, denn kurze
Spannungseinbrüche killen Daten???

Natürlich, geben vorwiegend amerikanische Halbleiterhersteller in den
Datenblättern an, daß man sich für sichere Anwendungen etwas anderes
suchen soll. Na ja, ein gebadeter Yorkshire-Terrier zum Trocknen in der
Mikrowelle kann in den USA mal schnell einige Millionen Dollar Regreß
fordern. Das ist alles Juristerei.

Gruß

Dietmar

von Volker (Gast)


Lesenswert?

na ja, so abwegig ist das ganze nicht,
ich hatte mal Probleme mit der CPU einer Kleinserie. In unbestimmten
Abständen war nur noch Schrott auf den Diplays zu sehen. Die Frage war
nun, warum und was kann man dagegen tun. Zunächst habe ich
softwaremäßig das Display alle paar Minuten neu initialisiert, so
konnte man wieder zur richtigen Anzeige kommen.
Später fand ich auch den Grund für die Fehlfunktionen. Es lag am
PLCC-Sockel, der an den Eckkontakten (waren die relevanten
Display-Steuersignle) Kontaktprobleme hatte. Seit wir die Controller
einlöten
ist nichts mehr passiert.
Seit diesem Vorfall habe ich jegliches Vetrauen in PLCC-Sockel
verloren.
Wenn die Leitungen zum Display sehr lang sind, kann durch
Störeinstrahlung ähnliches passieren.
Allerdings sollte man schlechte Hardware nicht mit Software
kompensieren wollen.

Gruß Volker

von Unbekannter (Gast)


Lesenswert?

> Seit diesem Vorfall habe ich jegliches Vetrauen in
> PLCC-Sockel verloren.

Nicht nur PLCC-Sockel. Sockel machen immer irgendwann Probleme. Bei mir
kommt schon langer kein Sockel mehr auf eine Platine. Nur wenn es
wirklich unbedingt sein muss.

Wenn ein Baustein defekt ist, nützt ein Sockel nämlich auch nicht viel,
da man den Baustein beim Ausbauen sowieso mechanisch zerstören kann.
Dann kann man den Baustein auch ohne Gefahr für die Platine ausbauen
und hinterher einen neuen einlöten.

Klar, dauert etwas länger, aber man spart sich einen Haufen Ärger mit
magischen Sockel-Problemen (Temperatur, Luftfeuchte, Vibrationen, ...)

von Tristan (Gast)


Lesenswert?

Vielen Dank an euch für Eure Meinungen und Vorschläge. Ich werde rein
zur Sicherheit einfach nach einer gewissen Zeit eine Neuinitialisierung
vornehmen. Schaden kann es ja nicht.

Viele Grüße

Tristan

von Michael (Gast)


Lesenswert?

Bei Anwendungen (z.B. KFZ) kann ein zyklisches Initialisieren der
LCD-Controllers sinnvoll sein, wenn Störungen (ESD) zu erwarten sind
('Elektrischer Kunststoff-Sitz'). Je nach Controller wird das Bild
dabei nicht gestört, sodaß einmal pro Sekunde sinnvoll ist.

von Dietmar (Gast)


Lesenswert?

@Volker, Unbekannter, Tristan, Michael:

Natürlich, kann man bei bekannten Fehlerquellen zyklisch neu
initialisieren. Dann sollte man aber gelegentlich die Fehlerursache
abschaffen.

Beim Display macht eine Initialisierung sicher kein Problem, wenn es
das Programm zeitlich zuläßt.

Was macht man denn, wenn der Controller selbst in einer PLCC-Fassung
steckt, und das EPROM (Programmspeicher) und vielleicht noch ein CPLD
oder GAL ebenfalls?

Hier stürzt doch die gesamte Anwendung ab, kommt noch nicht mal der
Watchdog zum Zuge, da ist nicht mehr viel mit neu initialisieren.

Fest einlöten ist gut, wenn man sicher ist, daß der Baustein nie
gewechselt werden muß. Bei neueren Controllern mit Flash und ISP (JTAG,
etc.) ist das auch kein Problem mehr.

Gruß

Dietmar

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.