-         

Ergebnis 1 bis 6 von 6

Thema: EEPROM schreiben und lesen beim ASURO

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    61
    Beiträge
    674

    EEPROM schreiben und lesen beim ASURO

    Anzeige

    Gibt es bereits ein einfaches Beispiel zum Schreiben bzw. Lesen des EEPROM im ASURO? Ich habe bisher nur diesen Thread gefunden:
    http://www.roboternetz.de/phpBB2/zei...ghlight=eeprom

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Siehe Asuro-Band II Seite 21 und 22
    Lieber Asuro programieren als arbeiten gehen.

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Code:
    #include "../inc/asuro.h"
    
    void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
    {
      /* Wait for completion of previous write */
      while(EECR & (1<<EEWE))
        ;
      /* Set up address and data registers */
      EEAR = uiAddress;
      EEDR = ucData;
      /* Write logical one to EEMWE */
      EECR |= (1<<EEMWE);
      /* Start eeprom write by setting EEWE */
      EECR |= (1<<EEWE);
    }
    unsigned char EEPROM_read(unsigned int uiAddress)
    {
      /* Wait for completion of previous write */
      while(EECR & (1<<EEWE))
        ;
      /* Set up address register */
      EEAR = uiAddress;
      /* Start eeprom read by writing EERE */
      EECR |= (1<<EERE);
      /* Return data from data register */
      return EEDR;
    }
    int main(void) {
    unsigned i;
    unsigned char c;
    Init();
    /*
    EEPROM_write(509,'m');
    EEPROM_write(510,'i');
    EEPROM_write(511,'c');
    */
    SerWrite("\n\n\rInhalt des EEPROMS\n\r10.3.2007 (code by dalmator)\n\n\r",54);
    for (i=0;i<512;i++) {
    	StatusLED(RED);
    	c=EEPROM_read(i);
    	StatusLED(GREEN);
    	SerWrite(&c,1);
    }
    while (1);
    return 0;
    }
    Das basiert auf einem Thread von damaltor der es aus dem ATMega8-PDF-Handbuch kopiert hat. Ich kann den Thread nur leider mal wieder nicht finden.

    gruß

    mic

    [Edit]
    Achtung! Bitte passt das Programm erst an euren asuro an!
    Ich möchte nicht in die EEProms aller asuros "gestempelt" werden.
    EEPROM_write(509,'m');
    EEPROM_write(510,'i');
    EEPROM_write(511,'c');

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    genau, im datenblatt sind jeweils asm- und c-sources für alle relevanten teile des prozis drin (ADC, EEPROM, TIMER, COUNTER, PWM...)

    der oben genannten funktion eeprom__write muss übergeben werden:

    -die daten (uidata) ACHTUNG: NUR EIN UNSIGNED CHAR; NICHT MEHR ALS 255 ALSO!

    die adresse (uiaddress) ist ein wert von 0 bis 511 (nicht von 1 bis 512). er beschreibt die "speicherzelle".

    die lesen-funktion braucht nur die adresse (0-511) und gbt den gelesenen wert zurück (funktioniert also wie pollswitch. variable = eeprom_read(adresse);
    kleinschreibung ist cool!

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Das kann man alles dem Beispielcode entnehmen

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

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