www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe wie ich vorgehen soll =)


Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ATmega16 ist dick genug, deshalb atoi und itoa, dann Zeichenweise 
pulen...

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte 'dick genug für C', da gibts für sowas fertige Funktionen. 
Deine Zeichenkette dann halt in einem Puffer halten.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Anselm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Darf ich mal dumm fragen wie du die 7-Segment Anzeige ansteuerst?
Manuell vom µC aus oder mit einem fertige IC?

Gruß Anselm

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi danke schon mal für die Tips. also ich hab noch nichts mit AVR und C 
gemacht bis jetzt ist das Progrramm in ASM.

also ich steuer die anzeige über n IC an also ein 4511 (bitte schlagt 
mich nicht dafür aber ich brauche jeden Pin an diesem Controller)

Autor: Ulf Cramme (parabol1337)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so =) habe heute mein Ganzes Programm von ASM in C umgeschrieben.

Meiner Meinung noch ist C weitaus einfacher  so mal ich in viel PHP 
programmiere. Strucktur ist teilweise leicht gewöhnungsbedürftig aber im 
ganzen Danke schon mal

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.