Gast
#283428
Hallo
Ich habe ein Problem mit dem Attiny2313 und dem EEprom lesen/schreiben.
Meine Routinne zu lesen:
unsigned char EEGET(int location) {
while(EECR & (1<<EEPE)); /* Check if EEPROM is ready*/
EEAR = location; /* Write EEPROM address register*/
EECR |= (1<<EERE); /* Set the read strobe*/
return EEDR;
}
und die zum schreiben:
void EEPUT(int location, unsigned char byte) {
while (EECR & (1<<EEPE)); /* Check if EEPROM is ready*/
EEAR = location; /* Write EEPROM address register*/
EEDR = byte; /* Write EEPROM data register*/
EECR |= (1<<EEMPE); /* Set master write enable signal*/
EECR |= (1<<EEPE); /* Set write strobe*/
}
Beide Routinen sind die denem Handbuch zum attiny2312 ähnlich.
Allerdings steht im Handbuch diese readRoutine:
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;
}
Das EEWE Bit gibt es aber meiner meinung nach nicht, ist wohl ein
fehler...
Wenn ich nun meine Routinen Teste mit:
EEPUT(1,5);
myDelay(); //mal kurz warten...
if (EEGET(1)== 5) {
PORTB |= (1<<PB3);
}
leuchtet die LED an PORTB3 nie... (ich kann sie manuell schalten,
richtungsregister usw. alles i.o.).
Ich bin am verzweiffeln mit diesem EEprom und hoffe auf Eure Hilfe!
Ach ja, ich verwende einen externen 10Mhz Quaz zur Taktung des
Tini2313, kann es sein das die 10Mhz Taktung das Problem für die EEprom
zugriffe ist? Was muss ich evtl. noch einstellen das das mit dem 10MHz
takt funktioniert?
Vielen Dank schon mal...
MfG dg1leo