Forum: Mikrocontroller und Digitale Elektronik Statusmeldungen durch LED (AT90CAN)


von scheldor (Gast)


Lesenswert?

Hallo allerseits,

Da ich neu in diesem Forum bin möchte ich mich zuerst für die viele 
Hilfe bedanken, die ich bereits als nicht Mitglied durch Beiträge 
erhalten habe.

Jetzt zu meinem Anliegen:
Ich arbeite im Moment mit einem At90can128 welcher bereits Nachrichten 
via Can empfängt. Dazu soll noch das uart kommen und es sollen Werte im 
Eeprom abgelegt und gelesen werden.

Zunächst möchte ich aber eine Funktion implementieren,  welche je nach 
Status einen blinkcode ausgibt. Z.B. Warte auf can Botschaft, error oder 
bereit.  Diese Funktionalität sollte möglichst im Hintergrund laufen, 
da ich Angst habe mir durch diese Geschichte meine Kommunikation zu 
stören.

Es wäre schön wenn ihr mir dafür eine Empfehlung geben könnten oder sind 
meine Bedenken unbegründet?

Gruß
Scheldor

von Rudolph (Gast)


Lesenswert?

Hast Du auch ein konkretes Anliegen, auf das man eingehen könnte?

Einen Portpin wirst Du ja sicher bedienen können und das delay() in 
einem halwegs komlexen Programm nichts zu suchen hat, weisst Du sicher 
auch.

von N. S. (scheldor)


Lesenswert?

Ein direktes Anliegen habe ich nicht. Ich möchte lediglich wieder fit 
mit Mikrocontrollern werden,  weil mein letzter kontakt schon eine Weile 
her ist.

Ich würde das blinken durch interrupts realisieren und die 
unterschiedlichen Takte durch flags wählen.

Allerdings weiß ich nicht ob das so gut ist,  da ja im schlimmsten Fall 
während des Timer Interrupt kein Interrupt durch den can oder uart 
Eingang ausgelöst werden.

von 6a66 (Gast)


Lesenswert?

Nico S. schrieb:
> Ich würde das blinken durch interrupts realisieren und die
> unterschiedlichen Takte durch flags wählen.

Gibt da verschiedene Arten, z.B.:

a) Interrupt der nur durch einen Timer immer tick-tack macht (wie die 
Unruh der Uhr) mit möglichst wenig Latenzzeit. Die Auswertung der 
Timerticks muss dann im Hauptprogramm dazu führen dass z.B. ein Zähler 
hochzählt (muss Du eben häufig genug daran vorbei kommen dass du keinen 
tick verpasst) und dann je nach Zählerstand verschiedene Blinkzeiten 
realisiert.

b) Interrupt zählt gleich mit (z.B. Teile einer Sekunde) und sagt dir 
wann die Blinkzeiten erreicht sind. Etwas höhere Latenzzeit aber dafür 
muss Hauptprogramm nicht so schnell reagieren können.

rgds

von Teo D. (teoderix)


Lesenswert?

Ich kenn Dein Prozessor nicht!
Man könnte(sollte) das normale Status blinken stoppen (IR sperren). 
Während der Datenübertragung, die für den CAN direkt in dessen Routine 
toggeln.
Falls die HW Deines Prozis das meiste selbständig erledigt, sollte die 
kurzen Störungen deiner LEDs nich auffallen/stören..... Ach, selbst 
wenn Du alles in SW machst, sollte das kaum auffallen und wenn, wen 
stört's :)  (Hautsache nicht dan CAN)

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.