Hallo AVR-Freunde!
Habe folgendes Thema als Lösung anzubieten:
Internes EEPROM und externes EEPROM 24C512 mit ATmega128 unter BASCOM-AVR
Bei der Bearbeitung meines Projektes - ich bin dabei eine Wintergartensteuerung mit allem möglichen Schnick-Schnack zu bauen - stellte ich mir folgende Aufgabenstellung:
- Für die Wintergartensteuerung erfasse ich einige Umweltgrößen wie Windgeschwindigkeit, Temperatur, Regen, Luftfeuchtigkeit, Lichthelligkeit.
- Diese Umweltdaten möchte ich zum späteren Download und Auswertung (z.B. mit Excel) in einem externen EEPROM (ausgewählt habe ich den 24C512 mit I2C (TWI) Schnittstelle) mitloggen.
- Für die internen Programmeinstellungen möchte ich das interne EEPROM des AVR verwenden.
Hierbei habe ich mir Gedanken über die folgenden Bedingungen gemacht:
- Verwendung des internen HW-I2C-Interface (TWI) des ATmega128.
- Das interne EEPROM kann nur 100.000 beschrieben werden.
- Das externe EEPROM kann 1.000.000 beschrieben werden.
- Byteweise Adressierung und Zugriff auf das EEPROM.
Dabei hat sich dann die hier vorgestellte Lösung entwickelt:
- Ich verwende die HW-TWI-Schnittstelle des ATmega mit den Signalleitungen SCL und SDA direkt am ATmega
- Entwickelt wurde der Prototyp mit dem ATMEL STK500 + STK501
- Zum Einsatz kommt ein ATmega128 der extern mit 16 MHz getacktet wird.
- Das interne EEPROM ist wegen der Begrenzung von Schreibzyklen ungeeignet.
- Die hier vorgestellte Lösung bietet einige prinzipielle Zugriffsfunktionen auf das interne und externe EEPROM.
- Zum Test ist das Ganze in eine "Debug-Testumgebung" eingebaut so dass man die einzelnen Funktionen leicht aufrufen und testen kann.
- Die Basisfunktionen lassen sich einfach extrahieren und weiterverwenden.
- Konfiguration von PullUp-Widerständen und verwendeter I2C-Adresse über Jumper.
Bemerkungen:
- Mit dem BASCOM-AVR ist die Einbindung des TWI-Interface denkbar einfach!
- Soll nicht die ATmega interne TWI-Schnittstelle verwendet werden so kann man das EEPROM ab jedem beliebigen Port anschließen. BASCOM übernimmt die Emulation der TWI Schnittstelle. Bis auf die Konfiguration kann der Code so übernommen werden.
So, genug der vielen Worte. Wenn Ihr Fragen habt bitte melden.
Ansonsten findet Ihr den kommentierten Code als Download.
Weiter habe ich den aktuellen Schaltplan und ein Bild des Prototyps mit angehängt, so wie ich das ganze selbst in Betrieb genommen habe.
Viel Spass beim EEPROMen und ausprobieren,
Grüße an die AVR-Welt,
Markus
Habe folgendes Thema als Lösung anzubieten:
Internes EEPROM und externes EEPROM 24C512 mit ATmega128 unter BASCOM-AVR
Bei der Bearbeitung meines Projektes - ich bin dabei eine Wintergartensteuerung mit allem möglichen Schnick-Schnack zu bauen - stellte ich mir folgende Aufgabenstellung:
- Für die Wintergartensteuerung erfasse ich einige Umweltgrößen wie Windgeschwindigkeit, Temperatur, Regen, Luftfeuchtigkeit, Lichthelligkeit.
- Diese Umweltdaten möchte ich zum späteren Download und Auswertung (z.B. mit Excel) in einem externen EEPROM (ausgewählt habe ich den 24C512 mit I2C (TWI) Schnittstelle) mitloggen.
- Für die internen Programmeinstellungen möchte ich das interne EEPROM des AVR verwenden.
Hierbei habe ich mir Gedanken über die folgenden Bedingungen gemacht:
- Verwendung des internen HW-I2C-Interface (TWI) des ATmega128.
- Das interne EEPROM kann nur 100.000 beschrieben werden.
- Das externe EEPROM kann 1.000.000 beschrieben werden.
- Byteweise Adressierung und Zugriff auf das EEPROM.
Dabei hat sich dann die hier vorgestellte Lösung entwickelt:
- Ich verwende die HW-TWI-Schnittstelle des ATmega mit den Signalleitungen SCL und SDA direkt am ATmega
- Entwickelt wurde der Prototyp mit dem ATMEL STK500 + STK501
- Zum Einsatz kommt ein ATmega128 der extern mit 16 MHz getacktet wird.
- Das interne EEPROM ist wegen der Begrenzung von Schreibzyklen ungeeignet.
- Die hier vorgestellte Lösung bietet einige prinzipielle Zugriffsfunktionen auf das interne und externe EEPROM.
- Zum Test ist das Ganze in eine "Debug-Testumgebung" eingebaut so dass man die einzelnen Funktionen leicht aufrufen und testen kann.
- Die Basisfunktionen lassen sich einfach extrahieren und weiterverwenden.
- Konfiguration von PullUp-Widerständen und verwendeter I2C-Adresse über Jumper.
Bemerkungen:
- Mit dem BASCOM-AVR ist die Einbindung des TWI-Interface denkbar einfach!
- Soll nicht die ATmega interne TWI-Schnittstelle verwendet werden so kann man das EEPROM ab jedem beliebigen Port anschließen. BASCOM übernimmt die Emulation der TWI Schnittstelle. Bis auf die Konfiguration kann der Code so übernommen werden.
So, genug der vielen Worte. Wenn Ihr Fragen habt bitte melden.
Ansonsten findet Ihr den kommentierten Code als Download.
Weiter habe ich den aktuellen Schaltplan und ein Bild des Prototyps mit angehängt, so wie ich das ganze selbst in Betrieb genommen habe.
Viel Spass beim EEPROMen und ausprobieren,
Grüße an die AVR-Welt,
Markus