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
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
Siehe Asuro-Band II Seite 21 und 22
Lieber Asuro programieren als arbeiten gehen.
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.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; }
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!
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);
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!
Lesezeichen