Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zapis do EEPROM w Bascomie

monokrysztal12 24 Jul 2011 20:30 2063 7
  • #1
    monokrysztal12
    Level 13  
    Czy jeżeli w Bascomi-e, w przerwaniu, umieszczę procedurę zapisu do pamięci EEPROM (jednokrotny zapis-jest flaga) a owe przerwanie od timera jest wywoływane co ok. 3,5ms, to czy owy zapis przebiegnie poprawnie ?(czas zapisu to ok. 4ms). Co w tym czasie będzie robił program - zostanie zatrzymany (także kolejne przerwania aby nie przeszkodziły), czy zapis będzie trwał, a procesor w tym czasię będzie już wykonywał inne rozkazy? Zapisywana jest zmienna bajtowa.
  • Helpful post
    #2
    atom1477
    Level 43  
    Program się zawiesi bo na czas zapisu program jest zatrzymywany w pętli oczekującej na zakończenie zapisu (tak robi BASCOM a domyślam się że mówisz o BASCOMowej funkcji zapisującej a nie jakiejś własnej).
    Kolejne przerwania od Timera będą wywoływane tuż po poprzednim a więc program główny będzie praktycznie stał w miejscu.
    O zajeżdżaniu pamięci EEPROM nie wspomnę.
    Jednym słowem na to co chcesz zrobić brak słów.

    PS. Jednokrotny zapis w przerwaniu rozumiem jako jeden zapis na przerwanie.
    Jeżeli chodziło o jeden zapis w jednym egzemplarzu przerwania to już będzie lepiej. Jedno przerwanie od Timera (kolejne po przerwaniu z zapisem EEPROMu) opóźni się o 0,5ms a po za tym nic strasznego się nie powinno stać.
  • #3
    monokrysztal12
    Level 13  
    Chodziło mi że dana zostanie zapisana tylko 1 raz (w trakcie przerwania) w czasie całkowitego włączenia urządzenia aby można było później (po zaniku napięcia zasilającego) odtw. stan układu)...
  • #5
    monokrysztal12
    Level 13  
    zapisuje przy każdorazowej zmianie parametrów, przypisuje przy włączeniu (wcześniej podałem przykładową sytuację)
  • Helpful post
    #7
    emarcus
    Level 38  
    monokrysztal12 wrote:

    Czy jeżeli w Bascomi-e, w przerwaniu, ............

    ......... czy zapis będzie trwał, a procesor w tym czasię będzie już wykonywał inne rozkazy? Zapisywana jest zmienna bajtowa.


    Wpis wartości zmiennej do EEPROM nie odbywa sie samoczynnie, jak powiedzmy przesączanie wody przez lejek(!). Tego wpisu dokonuje processor; nie ma tam pośrednika (chyba jedynie timery i to nie we wszystkich trybach mogą pracować bez udziału processora). Zabiera to trochę czasu, ale nie aż tak dużo jak podajesz (4 ms!!!).
    Jeżeli wpisu (do EEPROM) dokonujesz w przerwaniu to zajmie to 150 do 200 cykli zegara, zależnie od wielkości zmienej i procedury jaką wpiszesz w przerwaniu. Jest tu już wliczona obsługa stosu. Zatem czas liczony w jednostkach przyswojonych przez ludzi (us, ms, etc.) będzie zależał od f- taktowania processora. Możesz ten process w duzym stopniu skrócic: - zamiast generować specjalne przerwanie dla wpisu, wstawisz tą operację w program główny (Do.....Loop) uwarunkowaną wystąpieniem flagi generowanej gdzies w programie...
    Stracisz priorytet operacji wpisu, kilka taktów na sprawdzanie flagi, ale zyskujesz na czasie pomijając obsługę stosu w przerwaniu (co najmniej 64 cykle) i nie 'zawieszasz' interraptów na czas wykonania całego przerwania.

    e marcus
  • #8
    monokrysztal12
    Level 13  
    Dziękuję za odpowiedzi.