Forum: Mikrocontroller und Digitale Elektronik Übergabe an ISR


von Thomas H. (Gast)


Lesenswert?

Hallo Freunde !

An was kann es liegen, dass ich aus meinen Unterprogramm eine Werte an 
meiner ISR übergeben kann?

void IncBCD(char Value*)

{

  Value* = Value* + 1;

  if ((Value* & 0x0F) == 0x0A)

  {

    Value* += 6;

  }



}

von Karl H. (kbuchegg)


Lesenswert?

Thomas H. schrieb:
> Hallo Freunde !
>
> An was kann es liegen, dass ich aus meinen Unterprogramm eine Werte an
> meiner ISR übergeben kann?

Die Frage solltest du nochmal überdenken.

Wenn du es kannst, dann wohl, weil du es korrekt programmiert hast.

von Karl H. (kbuchegg)


Lesenswert?

Thomas H. schrieb:
> Hallo Freunde !
>
> An was kann es liegen, dass ich aus meinen Unterprogramm eine Werte an
> meiner ISR übergeben kann?

Wenn ich mir da jetzt allerdings ein 'NICHT' dazudenke, dann ist das 
eine Variation von 'funktioniert nicht'.
Um das zu beantworten, hast du zu wenige INformationen geliefert. Die 
Funktion ist gut und schön, aber man kann auch Fehler beim Aufrufer 
machen.
Ganz zu schweigen von der ersten Fragestellung, die sich stellt: Was 
genau bedeutet eigentlich 'funktioniert nicht'

von Thomas H. (Gast)


Lesenswert?

ich möchte meine Uhrzeit stellen...

  if (!(key_port&(1<<key_left)))

  {

        IncBCD(Stunden);

        DisplayTime();

  }

mit diesem Befehl übergebe ich die Stunden.... In meinem Unterprogramm 
siehe Oben möchte ich verhindern das z.B bei 20 Sonderzeichen oder 
Buchstaben erscheinen... Leider kann ich es via. Unterprogramm nicht 
nutzen...

schmeiße ich den "Umwandel" code jedoch direkt in die ISR so klappt 
es... Also denke ich mal, dass die Werte von meinem Unterprogramm nicht 
zurück gegeben werden ?!

von c-hater (Gast)


Lesenswert?

Thomas H. schrieb:

> An was kann es liegen, dass ich aus meinen Unterprogramm eine Werte an
> meiner ISR übergeben kann?

Da hapert es aber gewaltig mit der Grammatik (der deutschen Sprache)...

Und der gepostete Quelltext scheint auch irgendwie nicht zum Thema zu 
passen. Weit und breit keine ISR zu sehen...

Sonst könnte man ja vielleicht noch erraten, was du eigentlich tun 
wolltest und warum das nicht funktioniert oder auch was du nicht haben 
wolltest, was aber trotzdem passiert...

Kurzfassung: Lerne deutsch oder schreibe in einer Sprache, die du 
beherrschst. Sonst wird das nix.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas H. schrieb:
> schmeiße ich den "Umwandel" code jedoch direkt in die ISR so klappt
> es...
Gut, das ist doch toll. Fertig.

Du könntest natürlich deinen verbastelten Code einfach hier mal als *.c 
Anhang beifügen, dann könnte man dir evtl. was raten und müsste nicht 
dauernd raten...

von W.S. (Gast)


Lesenswert?

Thomas H. schrieb:
> void IncBCD(char Value*)

Bei einer solchen Deklaration kann der Compiler nichts falsches 
finden. Normalerweise hat eine ISR ja auch ein entsprechendes Merkmal 
wie __isr oder _interrupt oder sonstwas, das sie eindeutig als 
Interrupt-Routine ausweist. Wenn du das korrekt hingeschrieben 
hättest, wäre die Welt in Ordnung und dein Compiler würde das Argument 
anmahnen.

W.S.

von Thomas E. (thomase)


Lesenswert?

Thomas H. schrieb:
> Hallo Freunde !
Hallo!
> An was kann es liegen, dass ich aus meinen Unterprogramm eine Werte an
> meiner ISR übergeben kann?
>
> void IncBCD(char Value*)

*Hier fehlt die Fußnote. Oder was soll das Sternchen bedeuten?

mfg.

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.