mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR + I2C EEPROM


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo AVR Gemeinde ;-),

ich habe folgendes Problem. Ich versuche mit einen ATMega32 Bytes in 
einen externen EEPROM zu schreiben. Später wollte ich das selbe dann mit 
Messwerten und Daten aus einer EEPROM Chipkarte tuen.

Schreiben funktioniert nach langen theoretischen Simulieren und 
Datenblatt studieren, aber das lesen und per UART ausgeben scheitert 
immer wieder.

Ich werd es morgen mal in "Wirklichkeit" probieren wenn ich wieder in 
meinen Bastelkeller bin aber bisher war der Simulator (Proteus) auch 
immer sehr hilfreich. Laut Logfile und EEPROM Inhalt war das speichern 
erfolgreich un es wurde auch der richtige Inhalt wieder 
zurückgeschickt...

Hier mal mein Code in Bascom
$regfile = "m32def.dat"                                     ' ATMega32
$crystal = 1000000                                          ' 1MHZ
$baud = 2400                                                ' Baudrate

$hwstack = 32                                               ' default use 32 for the hardware stack

$swstack = 10                                               ' default use 10 for the SW stack

$framesize = 16                                             ' default use 40 for the frame space


'=====

Config Scl = Portc.0                                        ' Porteinstellungen
Config Sda = Portc.1
Config I2cdelay = 10

Declare Sub Write_eeprom(byval Adres As Byte , Byval Adres2 As Byte , Byval Value As Byte)
Declare Sub Read_eeprom(byval Adres As Byte , Byval Adres2 As Byte , Value2 As Byte)

Print "Startprogramm"
Print

' 1010 E2 E1 E0 RW = 10100000 = 160

Const Addressw = 160                                        'EEPROM SCHREIB ADRESSE
Const Addressr = 161                                        'EEPROM LESE ADRESSE


Dim Value As Byte                                           'Datenbyte
Dim Value2 As Byte
Dim Adres As Byte                                           'Byte der Adresse
Dim Adres2 As Byte
Dim Outputt As String * 1

Dim A As Byte



                                            '1 Byte schreiben
Call Write_eeprom(1 , 0 , &B01010000 )                      'schreiben
Print "Geschrieben"

Call Read_eeprom(1 , 0 , Value2 )                           'schreiben
If Value2 = &B01010000 Then
Print "P"
Else
Print "F"
End If



End

'sample of writing a byte to EEPROM 24C02
Sub Write_eeprom(adres As Byte , Adres2 As Byte , Value As Byte)
    I2cstart                                                'Start
    I2cwbyte Addressw                                       'EEPROM Adresse Schreib
    I2cwbyte Adres                                          'Speicheradresse
    I2cwbyte Adres2                                         'Speicheradresse                                         'Speicheradresse
    I2cwbyte Value                                          'Inhalt
    I2cstop                                                 'Stop
    Waitms 10                                               'Warten
End Sub


Sub Read_eeprom(adres As Byte , Adres2 As Byte , Value2 As Byte)
    I2cstart                                                'Start
    I2cwbyte Addressw                                       'EEPROM Adresse Schreib
    I2cwbyte Adres                                          'Speicheradresse                                         'Speicheradresse
    I2cwbyte Adres2                                         'Speicheradresse
    I2cstart
    I2cwbyte Addressr                                       'EEPROM Adresse Les
    I2crbyte Value2 , Nack                                  'read byte
    I2cstop                                                 'Stop
    Waitms 10                                               'Warten
End Sub

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.