- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Text im I2C EEPROM speichern und wieder auslesen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381

    Text im I2C EEPROM speichern und wieder auslesen

    Anzeige

    Powerstation Test
    Hallo und nen guten Abend!

    Ich möchte über ein GLCD einen Text ausgeben der aus einen I2C EEPROM stammt. Der Text soll über einen Menüpunkt als eine Art "Hifetext" auswählbar sein.
    1. wie bekomme ich einen Text in das Eprom, wie kann ich das Eprom über eine PC beschreiben.
    2. welcher Weg wäre der beste das Eprom wieder auszulesen?

    Hat das schon mal jemand gemacht?

    Gruß MAT

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo MAT,

    Zu 1) Der Text kann mit den I2C-Schreibbefehlen in das EEPROM geschrieben werden. Wenn der PC (z.B. über RS232 oder USB) an deine uC-Platine angeschlossen ist, müßtest du ein uC-Prog schreiben, dass die Zeichen vom PC einliest und per I2C ins EEPROM schreibt.

    Zu 2) Über die I2C-Lesebefehle

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Hallo Dirk,

    danke für den Gedanken!
    Ich habe gestern etwas gegoogelt und man kann über PonyProg und einen Adapter ein EEPROM ext. flashen.
    Jetzt muss ich mir nur noch Gedanken über die Abfrage/Adressierung der Daten im EEPROM machen. Hast Du eine Idee wie ich den Text anlege?
    Die Abfrage mit hilfe der I2C Befehle kenne ich, mein Problem ist nur, dass ich noch kein Plan habe, wie ich einzelne Textelemente im EEPROM anlege und diese wieder raushole.
    Gruß MAT

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    ... man kann über PonyProg und einen Adapter ein EEPROM ext. flashen.
    Ja, klar. Wenn der Text sehr lang wird, ist das wohl eine Option.
    Sonst könnte man den Text einfacher als String(s) in Bascom anlegen und in das EEPROM schreiben.

    Hast Du eine Idee wie ich den Text anlege?
    Naja, man könnte erstens eine feste Zeilenlänge (des GLCDs) nehmen und den Text in diesen Blöcken speichern.
    Eine 2. Möglichkeit wäre, den Text als Bild zu speichern und die Bilder nacheinander ins GLCD zu laden.

    Gruß Dirk

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Hallo Dirk,

    die Idee mit der Anzeige über ein Bild habe ich ausprobiert und funst soweit auch => guter Tip! ABER! diese Bilder werden ja im Programm und dadurch im RAM gespeichert, was mir ja wieder Programmspeicher weg nimmt. Gibt es ne Möglichkeit die .bgf im internen EEPROM zu speichern und sie daraus wieder zurück zu holen?

    Gruß MAT

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    ABER! diese Bilder werden ja im Programm und dadurch im RAM gespeichert, was mir ja wieder Programmspeicher weg nimmt.
    Ja, die Bilder nehmen Programmplatz weg. Das ist kein Problem, solange dein Programm genug Platz hat. RAM nehmen die Bilder dadurch aber nicht weg, weil Programm (und Bild) im Flash und nicht im RAM sind. Du sprichst jetzt ja auch wohl vom internen Speicher eines uC (Flash und EEPROM)? Anfangs hattest du ein I2C-EEPROM erwähnt, das dann ja extern wäre ...

    Gibt es ne Möglichkeit die .bgf im internen EEPROM zu speichern und sie daraus wieder zurück zu holen?
    Ja, klar. Allerdings ist das interne EEPROM meist nicht sehr goß.
    Man kann das Bild anlegen mit:
    $eeprom
    Bild:
    $bgf "Bild.bgf"
    $data

    ... und Einlesen mit Showpice

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Moin Dirk,
    ich komme immer wieder durcheinander mit flash,ram....
    Ich meinte, und wie Du auch schon sagtest, den flashspeicher.
    Als Controller nehme ich einen mega644p und da die Hilfedaten etwas mehr werden, sind das schon einige Bilder, die ich einbinden muss.
    Ich habe in meinem Layout 2 externe EEPROM vorgesehen, von den ich eins für solche Anwendungen benutzen wollte und da mir die Idee mit den .bgf gefallen hat, würde ich diese entweder (vorrangig) im externen und wenn das nicht geht im internen EEPROM ablegen.

    Aber vielleicht finde ich noch einen Weg den Hilfetext als hex im externen EEPROM abzulegen.

    Gruß MAT

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Ich komme meiner Idee der Ausführung immer näher, nur jetzt hänge ich mal wieder fest.
    1. über PonyProg fülle ich ein I2C EEPROM mit meinem Text. Der Text liegt in
    Hex-Form vor.
    Das Eprom lese ich so aus:
    Code:
    For E_addr = &H0 To &H0D
              Call E_read(e_addr , E_dat)
              E_str1 = String(1 , E_dat)
              Print Hex(e_dat) ; " " ; Spc(10) ; E_str1 ; " " 
              Next E_addr 
    end if 
    '///////////////////////////////////////////////////////////////////////////////
    ' Routine to read the 24C65
    
    Sub E_read(byval E_addr As Word , E_dat_r As Byte)
        E_ah = High(e_addr)
        E_al = Low(e_addr)
        I2cstart
        I2cwbyte E_prom_w
        I2cwbyte E_ah
        I2cwbyte E_al
        I2cstart
        I2cwbyte E_prom_r
        I2crbyte E_dat_r , Nack
        I2cstop                                                                     '
    End Sub
    So kann ich mir schon mal die Hexwerte als Ascii ausgeben lassen, untereinander sehe ich die Buchstaben.

    Wie kann ich diese jetzt in einen String, also hintereinander und mit einer Printanweisung, mir ausgeben lassen???

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Wie kann ich diese jetzt in einen String, also hintereinander und mit einer Printanweisung, mir ausgeben lassen???
    Du könntest die empfangenen Bytes nacheinander in Byte-Variablen ablegen, die so definiert sind:
    Dim Bytevar1 As Byte
    Dim Bytevar2 As Byte
    ...

    und einen String passender Länge da drüber legen:
    Dim S As String * 15 At Bytevar1 Overlay

    Dann kannst du S ausgeben, wenn der String gefüllt ist.

    Anstelle mehrere Byte-Variablen kannst du evtl. besser ein Byte-Array nehmen.

    Gruß Dirk

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    hi Dirk,
    "Anstelle mehrere Byte-Variablen kannst du evtl. besser ein Byte-Array nehmen. "
    Das habe ich den ganzen Abend überlegt, aber wie? Daran verzweifle ich gerade. Dann könnte ich eine String über das Bytearray legen....
    Hast Du nen Vorschlag wie ich die einzelnen Byte in ein Array bekomme?

    Danke & Gruß

    MAT

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress