- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 29 von 29

Thema: Probleme mit eeprom Speicherchip

  1. #21
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Anzeige

    Praxistest und DIY Projekte
    also ich hab natürlich mein lcd konfiguriert, d.h. die ports zugewiesen, usw.
    den lcd_i2c.lib habe ich weggelassen, ich verwende ja kein i2c-LCD.

    Ich habe praktisch deinen source 1:1 übernommen und zusätzlich noch ein
    print "adresse"; address; "value"; Temp_w
    nach deinem Auslesebefehl und AUsgabebefehl an das LCD eingegeben.

    am pc-monitor wird mir dann folgendes ausgegeben:
    adresse: 251 value: 44975
    adresse: 253 value: 44975
    ....usw value bleibt immer gleich 44975

    am meinem Display wird während dessen folgendes ausgegeben:
    "EEPROM TEST
    SCHREIBE"
    und dann:

    "EEPROM Txxxxx
    Schreibexxxxxxxx"

    x steht für diese seltsamen "japanischen Schriftzeichen".

    in der Zeile Schreibexxxxxxxx ändern sich diese Schriftzeichen im 1 sekundentakt regelmäßig wie oben beschrieben.

    Ja, so siehts bei mir aus. Nicht so toll.

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Sende bitte Deinen Code genau so, wie er jetzt aussieht.

    Henrik

  3. #23
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    hier ist mein code:
    Code:
    $regfile = "m32def.dat"
    
    $crystal = 9000000
    
    $baud = 9600
    
    $hwstack = 64
    $swstack = 64
    $framesize = 64
    
     Portd.5 = 1
     Config Portd.2 = Output                                    'leds
     Config Portd.3 = Output
     Config Portd.4 = Output
     Config Portd.5 = Input                                     'taster
      Portd.5 = 1
    
    
     Config Lcd = 16 * 2
     Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.7
     Config Lcdbus = 4
     Config Lcdmode = Port
    
    Portc.6 = 0                                                 'display rw bei Bascom immer 0
    Config Portc = Output                                   'display
    Reset Portc.1                                               'write mode for display
    Initlcd
    Cursor Off
    Cls
    
    
    
    $lib "i2c_twi.lbx"                                          'Hardware I2C
    Config Twi = 100000
    'SDA und SCL definieren
    Config Sda = Portc.0
    Config Scl = Portd.7
    Portc.0 = 1
    Portd.7 = 1
    I2cinit
    
    '-------------------------------------------------------------------------------
    '$lib "Lcd_i2c.lib"                                         'i2c Treiber für das LCD
    'Dim _lcd_e As Byte                                          'Nötig für die Enable Auswahl
                                                              'lcd_e = 128                                 'Für LCDs mit 1 Controller
    'Waitms 200
    
    
    '-------------------------------------------------------------------------------
    'Config Adc = Single , Prescaler = Auto                      'Für Analogtastatur
    'Config Portd.3 = Output                                     'Für LED1
    'Config Portd.4 = Output                                     'Für LED2
    
    'Beep Alias Portc.2                           'für Mega32
    'Beep Alias Portb.0                                          'für Mega8
    
    
    '-------------------------------------------------------------------------------
    Const Pcf8591 = 144                                         'DA-AD-Wandler auf Basis
    Const Eeprom2 = 166                                         'Eeprom2 auf Basis
    Const Eeprom1 = 174                                         'Eeprom1 oder Ram auf Basis
    Const Eeprom0 = 160                                         'externes Cip Card Eeprom0
    Const Pcf8574_1 = 64
    Const Tda8444 = 78                                          'DA-Wandler auf Extension-Platine
    Const Pcf8574_lcd = 112                                     'Portextension für LCD
    Const Pcf8583_rtc = 162                                     'RTC auf Extension-Platine
    
    Const Max520 = 94                                           'für MAX520 (extern)
    Const Keyboard = 0                                          'ADC-Nr. für Analogtastatur
    
    
    '-------------------------------------------------------------------------------
    
    
    Declare Function Read_eeprom(byval Dev As Byte , Byref Address As Word)as Byte
    Declare Function Read_eeprom_word(byref Address As Word)as Word
    
    Declare Sub Write_eeprom(byval Dev As Byte , Byref Address As Word , Byval Wert_
    As Byte)
    Declare Sub Write_eeprom_word(byref Address As Word , Byref Value As Word)
    
    Dim Address_low As Byte                                     'Address ist hier überlappend
    Dim Address_high As Byte                                    'dimensioniert, um High- und Low-
    Dim Address As Word At Address_low Overlay                  'Byte einfach ansprechen zu können.
    
    Dim Value_low As Byte                                       'Dito mit Value
    Dim Value_high As Byte
    Dim Value As Word At Value_low Overlay
    
    Dim Wert As Byte
    Dim Temp_w As Word
    Dim I As Word
    
    
    '------------------------------ Demodurchlauf ----------------------------------
    Cls                                                         'Intro
    Lcd "EEPROM TEST"
    Locate 2 , 1
    Lcd "SCHREIBE"
    Wait 2
    
    Value = 0
    For Address = 250 To 500                                    'von Adresse 250 bis 500
      Call Write_eeprom_word(address , Value)                   'value  ins EEprom schreiben.
      Print "adresse: " ; Address ; "   Value: " ; Value        'Value zur Abwechslung
      Value = Value + 20
    
      Next                                                      'um 20 erhöhen
    
    '-------------------------------------------------------------------------------
    Wait 2
    Cls
    Lcd " LESE"
    
    For Address = 250 To 500                                    'die Werte wieder auslesen
      Temp_w = Read_eeprom_word(address)
      Locate 2 , 1
      Lcd "A: " ; Address ; " " ; "W: " ; Temp_w ; "   "
      Waitms 200                                                'Pause, damit man was sieht
      Print "adresse: " ; Address ; "   Value: " ; Temp_w
    
      Next
    
    Locate 1 , 1
    Lcd "FERTIG"
    '------------------------ Ende Demodurchlauf -----------------------------------
    End
    
    
    
    '------------------------ Funktionen und Subs ----------------------------------
    
    '-------------------------------------------------------------------------------
    '- Word (value) auf 2 aufeinander folgende EEprom Adressen schreiben
    
    Sub Write_eeprom_word(byref Address As Word , Byref Value As Word)
    Call Write_eeprom(eeprom1 , Address , Value_low)
    Incr Address
    Call Write_eeprom(eeprom1 , Address , Value_high)
    End Sub
    '-------------------------------------------------------------------------------
    '- Word von 2 aufeinanderfolgenden EEprom Adressen lesen
    '- Der gelesene Wert ist der Rückgabewert der Funktion
    
    Function Read_eeprom_word(byref Address As Word)as Word
    Value_low = Read_eeprom(eeprom1 , Address)
    Incr Address
    Value_high = Read_eeprom(eeprom1 , Address)
    Read_eeprom_word = Value
    End Function
    
    '-------------------------------------------------------------------------------
    '- Byte (wert) auf EEprom Adresse (address) speichern
    
    Sub Write_eeprom(byval Dev As Byte , Byref Address As Word , Byval Wert As Byte)
    
    I2cstart
    I2cwbyte Dev
    I2cwbyte Address_high
    I2cwbyte Address_low
    I2cwbyte Wert
    I2cstop
    Waitms 10
    
    End Sub
    '--------------------------------------------------------
    '- Byte von EEprom Adresse (address) lesen
    '- Der gelesene Wert ist der Rückgabewert der Funktion
    
    Function Read_eeprom(byval Dev As Byte , Byref Address As Word)
    Dim Devread As Byte
    Devread = Dev + 1
    
    I2cstart
    I2cwbyte Dev
    I2cwbyte Address_high
    I2cwbyte Address_low
    I2cstop
    I2cstart
    I2cwbyte Devread
    I2crbyte Read_eeprom , Nack
    I2cstop
    
    End Function

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Na also - Danke.

    1) Liegt Dein EEprom1 auch wirklich wie bei mir auf der I2C-Busadresse 174? Wenn nein, bitte anpassen!

    2) Immer noch Probleme? Nimm probehalber das Hardware I2C raus.

    UPS und Edit:
    Das kann bei M32 und Harware I2C ja nicht sein:
    Config Sda = Portc.0
    Config Scl = Portd.7



    Wir kommen der Sache schon auf die Schliche.

    Grüße
    Henrik

  5. #25
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    Das kann bei M32 und Harware I2C ja nicht sein:
    Config Sda = Portc.0
    Config Scl = Portd.7


    doch...in Bascom kannste die ports selber bestimmen....lol

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Zitat Zitat von pebisoft
    Das kann bei M32 und Harware I2C ja nicht sein:
    Config Sda = Portc.0
    Config Scl = Portd.7


    doch...in Bascom kannste die ports selber bestimmen....lol
    Bevor einfach strukturierte Poster wie Du so laut lachen: Bei Hardware I2C eben nicht.
    Man, war das schön als Du Postingverbot hattest und Dir wenigstens immer wieder neue Namen und Anmeldungen einfallen lassen musstest.

    Henrik

  7. #27
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Absolut super

    jetzt klappt es.

    zu 1: musste ich ändern in Adresse 160. (weiß allerdings nicht wer diese adresse festlegt, in früheren codes hat sie jedenfalls funktioniert)

    doch dann ging immer noch nichts.

    wie in hreis punkt 2. empfohlen habe ich die hardware I2C rausgenommen - und jetzt gehts wie geschmiert.

    die ports sda=c.0 und scl=d.7 sind bei meinem board so fixiert. da kann ich nichts machen.

    also vielen vielen dank an die beteiligten
    insbesondere hrei und rage empire.
    jetzt ist diese hürde genommen und ich kann weitermachen, toll.


    @hrei:
    warum schreibtest du eigentlich probehalber?
    ("nimm probehaber das hardware-i2c raus")
    kann ich das nicht getrost dann ganz weglassen, wenn es so klappt?

    Holger

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Hallo Holger,

    Zitat Zitat von xxrider
    @hrei:
    warum schreibtest du eigentlich probehalber?
    ("nimm probehaber das hardware-i2c raus")
    kann ich das nicht getrost dann ganz weglassen, wenn es so klappt?

    Holger
    Probehalber deshalb, weil wenn ein umlegen der Ports auf die Hardwareports möglich gewesen wäre, ich diese Methode aus Effizienzgründen bevorzugen würde. So wie die Dinge bei Dir liegen, geht das nicht, also bleibe getrost bei Software I2C.

    Software I2C hat neben der freien Zuweisbarkeit der Ports noch einen weiteren Vorteil: Es ist weniger zetkritisch. Selbst bei größeren Leitungskapazitäten, die eine höhere Anstiegszeit der positiveb Flanken auf dem Bus zur Folge haben, kann Software I2C noch funktionieren, während Hardware I2C kläglich scheitert.
    Hier hilft eben bisweilen probieren, wenn kein Speicheroszilloskop zur Verfügung steht, mit dem sich das I2C-Busverhalten messen lässt.

    Ach so, die Adresse mit der eine I2C-Komponente angesprochen wird, hängt von der Beschaltung der variablen Adressleitungen ab. In Deinem Fall liegen A0, A1 und A2 auf 0, bei mir auf 1. Siehe hierzu das/die Datenblätter der jeweiligen Komponente(n).

    Viele Grüße
    Henrik

  9. #29
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    alles klar, Henrik
    thanx nochmal,

    viele Grüße von
    Holger

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

LiFePO4 Speicher Test