- 3D-Druck Einstieg und Tipps         
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
    68
    Beiträge
    699

    EEPROM schreiben und lesen beim ASURO

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Gibt es bereits ein einfaches Beispiel zum Schreiben bzw. Lesen des EEPROM im ASURO? Ich habe bisher nur diesen Thread gefunden:
    https://www.roboternetz.de/phpBB2/ze...ghlight=eeprom

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    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
    61
    Beiträge
    5.799
    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');
    Bild hier  
    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
    Milda
    Alter
    38
    Beiträge
    4.064
    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);
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Das kann man alles dem Beispielcode entnehmen
    Bild hier  
    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
  •  

12V Akku bauen