- Akku Tests und Balkonkraftwerk Speicher         
Seite 14 von 18 ErsteErste ... 41213141516 ... LetzteLetzte
Ergebnis 131 bis 140 von 173

Thema: Portbelegung auf ATMega für LCD1602

  1. #131
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Anzeige

    Praxistest und DIY Projekte
    Ich hab sehr wohl verstanden WIE Ziffern/Zahlen/Zeichen angezeigt werden können!
    Offenbar kann ich mich nicht so ausdrücken, dass ihr das so versteht, wie ich es meine!
    Die Rechenoperationen sind bis auf die ASCII-Umwandlungen durch (34515).
    Diese Registerinhalte 03 04 05 01 05 (15 bereits getrennt) müssen klarerweise noch in ASCII umgewandelt werden um sie anzeigen zu können.
    Es geht nur darum, dass die einzelnen Register nurmehr mit $30 addiert werden müssen, dann kann man sie einzeln anzeigen.
    Aber 40 oder 15 mit $30 addiert ergibt kein anzeigbares Zeichen!! Zumindest nicht die Ziffer, die es sein soll!
    Also auf "low-nibble" = 04!
    Und 15 trennen auf 01 05!
    Hast mich jetzt??
    Geändert von HeSt (15.01.2019 um 11:48 Uhr)

  2. #132
    HaWe
    Gast
    Hast mich jetzt??
    sorry, leider nein.
    Alle ASCII-Zeichen ab dec 48 ($30) sind anzeigbar, und natürlich dürfen es dezimal nur die Werte 48-57 sein (48+0 bis 48+9).
    Wschl muss es dir ein asm-Progger erklären.

  3. #133
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Damit ich die Zahl 34515 auf dem LCD anzeigen kann, muss ich jede einzelne Ziffer dieser Zahl (jede Ziffer steht in einem eigenen Register) in anzeigbare Zeichen umwandeln = Ziffer + $30:
    3 = $33, 4 = $34, 5 = $35, 1 = $31 und 5 = $35.
    Entweder ich geb das zusammengefasst als String aus (wobei ich nicht weiß, wie ich das zu einem String zusammenstellen kann) oder eben jedes einzeln.
    Ein "03" oder "05", .... wie es im Register steht ist nicht anzeigbar!
    Jetzt??
    Geändert von HeSt (15.01.2019 um 11:46 Uhr)

  4. #134
    HaWe
    Gast
    Jetzt??
    nein, sorry, ich muss mich ausklinken, (edit) deine Rechnungen sind sogar ok (so rechne ich selber ja auch), aber dein Problem ist für mich als C-Programmierer so als wäre es in sumerischer Keilschrift geschrieben
    Geändert von HaWe (15.01.2019 um 11:28 Uhr)

  5. #135
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Ist ja auch gut !!
    avr_racer verstehts schon

  6. #136
    HaWe
    Gast
    letzter Versuch - kannst du direkt nacheinander die Konstanten
    $30
    $31
    $32
    $33
    $34
    ausgeben?
    Wenn nein, funktioniert deine lcd-Ausgabe nicht.
    Wenn ja, hast du dich vlt oben verrechnet bei der Dezimalstellen-Zerlegung...
    Geändert von HaWe (15.01.2019 um 11:37 Uhr) Grund: typo

  7. #137
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Alle $xx ja,
    §33 ist nicht anzeigbar.

    C und Assembler sind nicht identisch!!
    Vergiss es!

  8. #138
    HaWe
    Gast
    typo, sollte ntl $33 heißen.

    Aber dann liegt wohl der 2. Fall vor (Rechenfehler)
    C erzeugt denselben Maschinencode wie asm und rechnet mit denselbern Registerwerten.

  9. #139
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    174
    Zitat Zitat von HeSt Beitrag anzeigen
    @avr_racer

    Hab mich mit deinem "Mathe.asm" Programm auseinander gesetzt.
    Vieles ist mir jetzt klar(er), alles noch nicht ...
    Was ich gefunden hab, hab ich dir bereits in der PN geschrieben.
    PN

    Zitat Zitat von HeSt Beitrag anzeigen
    Was mir noch nicht klar ist, wozu die SWAPs in HEX_DEC gut sein sollen?
    Das macht die Umwandlung in ASCII schwieriger!
    Beispiel:
    34515: 03 40 05 15 (besser: 03 04 05 01 05 ohne swap und ZE getrennt)
    Der Swap dient der Zuordung der richtigen Stelle
    1Mio, 100tsder, 10tsder, Tausender, Hunderter, Zehner, Einer.
    Das hängt davon ab wie man es betrachtet. Wenn ich rechne möchte ich das Ergebnis als ganzes sehen um evtl Fehler usw zu erkennen und spart Bytes. Somit habe ich eine reine Zahlenroutine nur für die Ausgabe von Zahlen.
    Wenn man jeder Ziffer der einzelnen Stellen jeweils ein Byte zuordnet kann man das gern machen um es dann mit $30 zu addieren um es quasi als LCD-Ziffer schon parat und abrufbereit zu haben, erfordert je nach Ergebnis aber eben schonmal bis zu 10byte.
    Problem wirds geben wenn man das zu früh macht und evtl mit dem Ergebniss weiter rechnen muss...

    Ich spare mir das indem ich dafür eine reine Zahlenroutine habe die dann High/Lowbyte auftrennt und $30 dazu addiert

    Zitat Zitat von HeSt Beitrag anzeigen
    Wie kann ich ZE gemeinsam in ASCII umwandeln/anzeigen?
    Da ich die Ziffern am LCD einzeln ausgebe, müssen die getrennt sein.
    Das ist zumindest mein Gedankengang.
    Oder liege ich hier falsch?
    Nun ich nehme an das ZE als Buchstaben zu betrachten sind und Buchstaben brauchen nicht mehr gewandelt werden.
    Mach mal einen Doppelklick auf ein Register, dort hast du jetzt mehrere Möglichkeiten einen Wert einzugeben und in HEX/DEZ/OCT/BIN/TEXT darstellen zu lassen. Also klicke mal TEXT an und gebe Z oder E ein. Dann klickst auf Bin oder HEX oder DEZ, da steht dann der Zahlenwert im jeweiligen Zahlensystem. Mal einen Wert von E oder Z als BIN anzeigen lassen und nix machen
    Wechsel zur PDF des LCD. Dort ASCII-Tabelle suchen und mal die UPPER und LOWER 4Bit ansehen und vergleichen nun sollte eigentlich ein EUREKA die Synapsen befeuern
    Selbst dein Bildschirm beinhaltet diesen Zeichensatz.


    Zitat Zitat von HeSt Beitrag anzeigen
    Diese Registerinhalte 03 04 05 01 05 (15 bereits getrennt) müssen klarerweise noch in ASCII umgewandelt werden um sie anzeigen zu können.
    Es geht nur darum, dass die einzelnen Register nur mehr mit $30 addiert werden müssen, dann kann man sie einzeln anzeigen.
    absolut korrekt.

    Zitat Zitat von HeSt Beitrag anzeigen
    Aber 40 oder 15 mit $30 addiert ergibt kein anzeigbares Zeichen!! Zumindest nicht die Ziffer, die es sein soll!
    Also auf "low-nibble" = 04!
    Und 15 trennen auf 01 05!
    Hast mich jetzt??
    40 als DEZ + $30 = $58 in binär 0101 1000 und sollte eigentlich das X sein
    15 als DEZ + $30 = $3F in binär 0011 1111 und sollte eigentlich das ? sein

    $40 + $30 = $70 in binär 0111 0000 müsste das p sein
    $15 + $30 = $45 in binär 0100 0101 müsste das E sein


    Zitat Zitat von HeSt Beitrag anzeigen
    Damit ich die Zahl 34515 auf dem LCD anzeigen kann, muss ich jede einzelne Ziffer dieser Zahl (jede Ziffer steht in einem eigenen Register) in anzeigbare Zeichen umwandeln = Ziffer + $30:
    3 = $33, 4 = $34, 5 = $35, 1 = $31 und 5 = $35.
    Entweder ich geb das zusammengefasst als String aus (wobei ich nicht weiß, wie ich das zu einem String zusammenstellen kann) oder eben jedes einzeln.
    Ein "03" oder "05", .... wie es im Register steht ist nicht anzeigbar!
    Jetzt??
    Die erste Spalte, also $00 bis $0F, sind die Adressen für eigens zu erstellende Zeichen im CHARAKTER-ROM... Heißt du würdest jetzt im Zeichenvorrat-Ram deine eigenen Zeichen adressieren...
    Als Assembler "String" wäre das eine Schleife.
    Heißt du könntest diese Zahl im RAM ablegen um die Register frei zu machen somit dann gesichert. Und schreibst dir eine Unterroutine wo du dir die gesicherte Zahl in dein/e Register schreibst, $30 dazu addieren gefolgt von LCD_DATA. Vorher solltest du eine Adresse (00 bis 0F) + $80 für Zeile 1 oder für Zeile 2 ($40 bis $4F) + $80 definieren auf die bzw ab die das LCD mit dem setzen der Zeichen beginnen soll.

    1. Adresse auf LCD setzen mit LCD_Command
    2. Zeichen/Ziffer laden + bearbeiten
    3. Zeichen mit LCD_DATA an LCD senden
    4. bei weiteren Zeichen Sprung zu 2 solange bis EndeBedingung erkannt wurde die musst du dann für dich kreieren

    Zitat Zitat von HeSt Beitrag anzeigen
    Ist ja auch gut !!
    avr_racer verstehts schon
    *LACHT*
    Geändert von avr_racer (15.01.2019 um 15:49 Uhr)

  10. #140
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Ich möchte euch allen für eure Hilfe und Geduld danken!
    Programm ist fertig - umgewandelt.
    Ein paar kleine Schreib- und Definitionsfehler waren noch drin.
    Die LCD-Funktionen hab ich - soweit mit dem T24 auf dem Miniboard möglich - getestet.
    Schaut alles gut aus.
    Demnächst wird die Platine entworfen.
    Dann gehts weiter ...
    Bei diesem Projekt hab ich wieder viel gelernt! Und auch die Scheu vor einem LCD verloren
    Es ist doch viel einfacher damit, wenn man immer wieder - zumindest anfangs - an ein paar Parametern "drehen" muss ...

    PS:
    Hab bei meiner alten MC20 Funke das LCD (ist um einiges größer als das neue 1602er) entfernt und bei meinem T24 Test probiert - läuft einwandfrei
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken LCDs.jpg  
    Geändert von HeSt (18.01.2019 um 07:48 Uhr)

Seite 14 von 18 ErsteErste ... 41213141516 ... LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 11:18
  2. CCPRO M128: Portbelegung
    Von Dirk im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 22.05.2009, 22:26
  3. Portbelegung bei diesem Display [erledigt]
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 18.11.2006, 18:12
  4. Portbelegung ATmega32
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 15.11.2006, 19:59
  5. Antworten: 4
    Letzter Beitrag: 12.11.2006, 16:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad