- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Adressierung die X'te

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Xeus,
    also lesen und löschen hab ich überprüft, und mit 000 gelöscht. einwandfrei.
    wie hast du festgestellt, daß wirklich 000 im EEprom steht?

    das mit r/w bit versteh ich nicht, weil das löschen ist doch nichts anderes als schreiben und da verwend ich doch die selben adressen
    stimmt, und wie hast du jetzt geprüft, was im EEprom drinsteht??

    vor mir liegt das orginal datenblatt von atmel,
    ein Link wäre schön gewesen.
    In dem Datenblatt, das ich gepostet habe, wird Pin3 (A2) benutzt.

    Gruß, Michael

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    40
    Beiträge
    366
    Lesen:
    Code:
    Cls
     Print "Lese"
     Locate 1 , 1
     Lcd "Lese"
     Call Lese
     Locate 2 , 1
     Lcd Str(x)
     Locate 3 , 1
     Lcd "Lesen beendet ERR" ; Err
     Print "Lesen beendet ERR" ; Err
    
    
    
    Sub Lese
    I2cinit
    I2cwbyte &HA2
    I2cwbyte &HA3                                               'Speicherstelle im EEPROM
    I2cwbyte &HA2
    I2cstart
    I2cwbyte &HA3
    I2crbyte X , Nack
    I2cstop
    End Sub
    das datenblatt befindet sich im anhang

    gruß

    xeus
    Angehängte Dateien Angehängte Dateien

  3. #13
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hallo,
    Du machst da einen Fehler beim schreiben.
    S1 = 111
    I2cinit
    I2cstart
    I2cwbyte &HA2
    I2cwbyte &HA3 'Speicherstelle im EEPROM
    I2cwbyte &HA2
    I2cwbyte S1

    I2cstop
    Versuche das mal:
    I2cstart
    I2cwbyte &HA2 'Adresse des Eeprom zum schreiben
    I2cwbyte $Hxx 'Speicherstelle H Byte im Eeprom
    I2cwbyte $Hxx 'Speicherstelle L Byte im Eeprom
    'Da ja 0-7FFF möglich ist, muß ein Word geschrieben werden.
    I2cwbyte value 'den eigentlichen Wert schreiben
    I2cstop

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    40
    Beiträge
    366
    wie läuft das denn mit dem high and low woher bekomme ich iese werte?

  5. #15
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    wie läuft das denn mit dem high and low woher bekomme ich iese werte
    Ganz einfach
    1. Speicherstelle ist 0000 (also H Byte und L Byte =0)
    letzte Speicherstelle ist 07FF (also H Byte =07 und L Byte =FF)

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    40
    Beiträge
    366
    ist es möglich eine routine dafür zu machen, das ich 4 bytes schreib, und das sich danach l und h erhöt?

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Hallo!

    @Xeus
    Schau Dir mal mein Beispielprogramm an:

    http://www.henrik-reimers.de/control...are.htm#eeprom

    Da wird das mit Overlay und überlappenden Variablen (Byte/Word) aufgedröselt.

    Grüße
    Henrik

  8. #18
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    ist es möglich eine routine dafür zu machen, das ich 4 bytes schreib, und das sich danach l und h erhöt?
    Wenn ich mich nicht irre, wird nach dem schreiben, die Speicherstelle automatisch erhöht.

    I2cwstart
    i2cwbyte $HA2
    i2cwbyte $H00
    i2cwbyte $H00 '1. Speicherstelle im Eeprom
    for i=1 to 4
    i2cwbyte value 'Wert 1-4 in Speicherstelle 0000-0003 vom Eeprom
    next
    i2cstop

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    40
    Beiträge
    366
    kann sich bitte mal jemand den code anschauen was daran falsch ist

    Code:
     $regfile "m16def.dat"                                      ' use the byte lib since we do not need longs
    $crystal = 20000000
    $baud = 19200
    
    
    
    
    
     '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    'config
    'I²C
    Config I2cdelay = 5                                         '
    Config Sda = Portc.1
    Config Scl = Portc.0
    
    'Display Setup
    Config Lcdpin = Pin , Db4 = Porta.6 , Db5 = Porta.5 , Db6 = Porta.4 , Db7 = Porta.3 , E = Porta.7 , Rs = Porta.2       ' Natürlich so wie es wirklich angeschlossen ist (4-Bit-Modus)
    Config Lcd = 20 * 4
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    
    
    
    
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    'Subs
    'Uhr
    Declare Sub Gettime
    Declare Sub Settime
    
    
    'Speicher
    Declare Sub Speichern
    Declare Sub Write_eeprom(byval Dev As Byte , Byref Address As Word , Byval Wert_
    As Byte)
    Declare Sub Lösche
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    
    
    
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    'Variablen und Konstanten
    'Uhr
    Dim S as byte, m as byte, h as byte ,d as byte
    Dim Wm As Byte , Yd As Byte , Month As Byte
    
    'Speicher
    Const Ff = &H0D                                             'Steuerzeichen Formfeed
    Const Lf = &H0A                                             'Steuerzeichen Linefeed
    Const Pu = &H2E 'Punkt
    Const Dp = &H3A 'Doppelpunkt
    Const Le = &H20 'Leerzeichen
    Const Ko = &H2C 'Komma
    Const Adr = 162                                             'Adresse Eeprom
    Dim Adrcount As Word                                        'Zähler Speicherplatz Eeprom
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Dim Hi As Byte
    Dim L As Byte
    
    
    
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    'Uhr Variablen setzen
     S = 0
     m = 0
     h = 0
     d = 1
     Month = 1
     Wm = 1
     Yd = 1
     ddrd = &B00010000
     Cls
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    ' Program start
    Call Settime
    
    
    Print Chr(27) ; "[2J";                                      'clear screen
    Print "PCF8583 Clock Sample"
    
    
    Do
       Call Gettime
       Print Chr(27) ; "[2;2f";
       Print Hex(h) ; ":" ; Hex(m) ; ":" ; Hex(s) ; " Err:" ; Err
       Wait 1
       Loop
    End
    
    
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    'subs
    ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    Sub Settime
     S = Makebcd(s)                                             'Sek
     M = Makebcd(m)                                             'Min
     H = Makebcd(h)                                             'Std
     D = Makebcd(d)                                             'Tag
     Month = Makebcd(month)                                     'Monat
    
     'Setzen der vorgebenen Werte
    
     I2cstart
     I2cwbyte &HA0                                              'Schreibmodus
     I2cwbyte 0                                                 'select control register
     I2cwbyte 8                                                 'set year and day bit for masking
     i2cstart
     I2cwbyte &HA0                                              'Schreibmodus
     I2cwbyte 2                                                 'Sekundenregister auswählen
     I2cwbyte S                                                 'Sek schreiben
     I2cwbyte M                                                 'min schreiben
     I2cwbyte H                                                 'std schreiben
     I2cwbyte D                                                 'tag schreiben
     I2cwbyte Month                                             'monat schreiben
     i2cstop
    End Sub Settime
    
    Sub Gettime
     'Aktuelle Werte auslesen
    
    '---------------------- sekunden --------------------
     i2cstart
     I2cwbyte &HA0
     i2cwbyte 2  'Sek register auswählen
     i2cstart
     I2cwbyte &HA1
     i2crbyte s,nack  'lese sek
    '---------------------- minuten --------------------
     i2cstart
     I2cwbyte &HA0
     i2cwbyte 3  'min register auswählen
     i2cstart
     I2cwbyte &HA1
     i2crbyte m,nack  'lese min
    '---------------------- stunden --------------------
     i2cstart
     I2cwbyte &HA0
     i2cwbyte 4  'Std register auswählen
     i2cstart
     I2cwbyte &HA1
     i2crbyte h,nack  'lese std
    '---------------------- tag --------------------
     i2cstart
     I2cwbyte &HA0
     i2cwbyte 5  'tag register auswählen
     i2cstart
     I2cwbyte &HA1
     i2crbyte yd,nack 'lese jahr und tag
    '---------------------- wotag --------------------
     i2cstart
     I2cwbyte &HA0
     i2cwbyte 6  'mon register auswählen
     i2cstart
     I2cwbyte &HA1
     i2crbyte wm,nack 'lese wochentag und monat
    
     i2cstop
    End Sub Gettime
    
    
    
    Sub Speichern
    Hi =(high)adrcount
    L=AdrCount
    I2cstart
    I2cwbyte Adr
    I2cwbyte H 'Speicherstelle im Eeprom
    I2cwbyte L
    I2cwbyte D
    I2cwbyte Pu
    I2cwbyte Month
    I2cwbyte Le
    I2cwbyte S
    I2cwbyte Dp
    I2cwbyte M
    I2cwbyte Le
    I2cwbyte FF
    I2cwbyte LF 'damit ist die Formatierung auch im Eeprom
    I2cstop
    End Sub Speichern

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    40
    Beiträge
    366
    habs jetzt hingekriegt.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen