Na kilku stronach pamieci chcę zapisac po kilka danych.
Walcze 4 dni i nie wiem o co chodzi.
Otóż zapisuje swoje dane na pierwszej stronie w kółko.
O ile rozumiem to: 24C04 ma 32 strony po 16 bajtów, mogę zapisac dane skwencyjnie, nie wychodząc poza strone - bo przewinie sie do poczatku strony i dane nadpisze.
Wiec, jesli wpisuje 11 bajtów na danej stronie, to po STOPie- EEPROM je zapisuje w ciagu max 5 ms. I dalej, rozumiem, że mogę zaadresować strone nastepną i zapisać nastepną paczke danych. Jeżeli dobrze kombinuje to wypociłem to co poniżej i dane zapisywane są w kółko na pierwszej stronie, ponieważ nr_alarm po odczycie ma wartość 13 (pod adresem 0x0000). Gdzie bład.
addr,nr_alarm -to plikowe STATIC Co robie żle ?.
Walcze 4 dni i nie wiem o co chodzi.
Otóż zapisuje swoje dane na pierwszej stronie w kółko.
O ile rozumiem to: 24C04 ma 32 strony po 16 bajtów, mogę zapisac dane skwencyjnie, nie wychodząc poza strone - bo przewinie sie do poczatku strony i dane nadpisze.
Wiec, jesli wpisuje 11 bajtów na danej stronie, to po STOPie- EEPROM je zapisuje w ciagu max 5 ms. I dalej, rozumiem, że mogę zaadresować strone nastepną i zapisać nastepną paczke danych. Jeżeli dobrze kombinuje to wypociłem to co poniżej i dane zapisywane są w kółko na pierwszej stronie, ponieważ nr_alarm po odczycie ma wartość 13 (pod adresem 0x0000). Gdzie bład.
void EE_init(void)
{
addr=ALARMY_POCZ; // =0x10 to poczatek 2-giej strony pamieci gdzie chcę zapisac liczby
ret=twi_start(EEPROM+TWI_WRITE); // czy wykonano START
if (ret)
{
//Bład połaczenia
return 0;}
else
{
adresEE(FLAGA_ZAP_EE); // (0x01) pod tym adresem odczytuje flagę
twi_start(EEPROM+TWI_READ);
if(twi_readNak()==1)
{ // eeprom ZAPISANY WARTOSCIAMI DOMYSNYMI
twi_stop();
// to wychodze z funkcji
}
else
{
twi_stop();
do // teraz na 13 stronach chcę zapisac wertosci domyslne.
{
twi_start(EEPROM+TWI_WRITE);
adresEE(addr); // j/w 0x0010
twi_write(nr_alarm); // nrumer alarmu
twi_write(0x00); // Flaga start
twi_write(0x00); // Flaga stop
twi_write(0x01); // Dot. SLAVE 1-99
twi_write(0x00); // Dot. urzadzenia: 1-3 przekaźniki 4-sygnał
twi_write(0x00); // Godz. Startu
twi_write(0x00); // Min. Startu
twi_write(0x07); // Dzień Startu
twi_write(0x00); // Godz. zatrzymania
twi_write(0x00); // Min. zatrzymaia
twi_write(0x07); // Dzień zatrzymania.
twi_stop();
_delay_ms(55); // wg. noty max 5ms. wydłzyłem do 55
nr_alarm++; //
addr+=16; // przejdz do nastepnej strony EEPROM
}while (!(addr>ALARMY_KONIEC)); // ALARMY_KONIEC to 208 (0xD0)
nr_alarm=0;
addr=0;
}//end if
}//end if ret
//twi_start(EEPROM+TWI_WRITE);
//adresEE(FLAGA_ZAP_EE);
//twi_write(0x01);
//twi_stop(); _delay_ms(5);
} // end EE-init
addr,nr_alarm -to plikowe STATIC Co robie żle ?.
