Brauche Hilfe wie ich vorgehen soll =)

OP #1180951
Lesenswert?

Hi leute ich hab da mal ne frage.

also erst mal im Groben, ich habe einen ATmega16 einen Laderegler eine 
Solar anlage und eine 6 Stellige 7-Segment-Anzeige (multiplex)


Ich frage den Laderegler mit hilfe von RS232 ab, in dem ich ihm 46hex 
sende.
Der Laderegler antwortett mir auch gleich darauf. Die Strucktur sieht 
ungefähr so aus. R 1 3 , 3 5 | 4 , 6 <- Jede zeichen ist ein Eigenes 
Byte.

Diese 10 Byte Packe ich mir in den stack.. soweit bis da kein Problem.

Jetzt weiß ich nciht so richtig wie ich am schlauesten vorgehe. Die 
beiten werte also 13,35 volt und 4,6 Ampere müssen wieder aus dem Stack 
und miteinander multipliziert werden (damit ich die leistung in Watt 
habe).

Um den Wert dann an die Anzeige weiter zugeben muss der wert aber dann 
wieder in 6 Byte aufgeteilt werden.

wie würdet Ihr vorgehen..

Danke für eure Tips

schöne Grüße
OP #1180986
Lesenswert?

wie darf ich das verstehn?

erst die Daten aus dem Stack in Register schreiben, denn diese Register 
decementieren und dann 3 Register (24bit) hochzählen lassen?

dann das ganze multiplizieren und alles wieder rückwärts?

so hatte ich mir das auch vorgestellt. hatte aber die Hoffnung das es 
einfacher geht.
#1181027
Lesenswert?

> Diese 10 Byte Packe ich mir in den stack
ich würde sie in einem array speichern

schreibe ein funktion DisplayWatt(zeichen, position), die dir das 
entsprechende zeichen an der entsprechenden position auf dem display 
anzeigt

und dann in einem loop:
  WattWert = (array[1]*100 + array[2]*10 +..)*(...); //oder so ähnlich
  DisplayWatt(WattWert/100, 1);
  wait_some_ms;
  WattWert %= 100;
  DisplayWatt(WattWert/10, 2);
  wait_some_ms;
  WattWert %= 10;
  DisplayWatt(WattWert, 3);
  wait_some_ms;


ist zwar nicht sonderlich schön und schnell, aber funktioniert. (ich 
hoffe, ich habe in der eile keinen tipp/denk-fehler gemacht)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren