logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zapisać ustawienia w pamięci 89C450, by przetrwały restart?

malpa 14 Cze 2006 17:43 1414 7
REKLAMA
  • #1 2728800
    malpa
    Poziom 11  
    Posty: 11
    witam

    procek 89c450.

    moj problem wyglada tak

    otoz w czasie dzialania programu jest mozliwosc zmiany ustawien (dokladnie 3 ->3bajty)

    chcialbym moc zapisac je w tym procku po ich zmianie, tak żeby po wlaczeniu i wylaczeniu zasilania uklad pamietal ostatnie ustawienia

    program jest w c

    czy jest taka mozliwosc
    jesli tak to prosze o jakies porady
  • REKLAMA
  • #2 2728835
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Może zastosuj jakąś pamięć typu EEPROM.
    Np. atmel 24c01.
  • REKLAMA
  • #3 2728847
    malpa
    Poziom 11  
    Posty: 11
    to musi sie oprzec na tym scalaku juz nic dodatkowego nie da sie dolozyc

    ale chyba taki procek oferuje taka mozliwosc
  • REKLAMA
  • #4 2729404
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Jaki masz dokładnie model tego procesora ?
    Podaj pełną nazwę/oznaczenie. ENL, MNL, QNL czy jeszcze coś innego ?
  • REKLAMA
  • Pomocny post
    #5 2729449
    RoBoS
    Poziom 15  
    Posty: 173
    Pomógł: 14
    Ocena: 1
    89c450 nie ma wewnetrznej pamieci EEPROM.
    trzeba uzyc zewnetrznej...
    Pelna nazwa moze ci jedynie powiedziec jaka obudowa, zakres temp. czy max czestotliwosc.
  • #6 2729750
    Sam Sung
    Poziom 33  
    Posty: 2025
    Pomógł: 227
    Ocena: 603
    malpa napisał:
    to musi sie oprzec na tym scalaku juz nic dodatkowego nie da sie dolozyc
    ale chyba taki procesor oferuje taka mozliwosc

    Owszem, można modyfikować zawartość pamięci Flash z poziomu programu. Poczytaj temat In-Application Programming by User Software na str. 23 w datasheecie do DS89C430-DS89C450.
  • #7 2732913
    malpa
    Poziom 11  
    Posty: 11
    a powstale jeszcze jeden problem

    #include <REG420.H>
    #include <absacc.h>
    #include <stdio.h>
    #include "lcd.h"
    #define LCD_LEN 16
    void set_timer(void)
    {
    TMOD=0x01;
    TF0=0;
    TH0=(-1843200)>>8;
    TL0=(-1843200);
    }
    void main (void) {
    LCD_INIT();
    LcdClrScr();

    set_timer();
    TR0=1;
    while(TF0==0)
    {
    WriteTextXY(0 , 0, "CZAS ODMIERZONY",1);
    }
    while (1) ;
    }

    kwarc 11,059

    co brakuje temu programowi zeby napis wyswietlil dopiero po jakims czasie (z moich wyliczen wychodzi zepowinno byc po 2 sekundach ale to nie jest najwazniejsze)
  • #8 2878003
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

LABEL_AI_GENERATED
Procesor 89C450 nie posiada wbudowanej pamięci EEPROM, co uniemożliwia bezpośrednie zapisywanie ustawień w pamięci wewnętrznej, które przetrwałyby restart zasilania. Aby zachować 3 bajty ustawień po wyłączeniu i ponownym włączeniu zasilania, należy zastosować zewnętrzną pamięć EEPROM, np. Atmel 24C01, komunikującą się przez magistralę I2C. Alternatywnie można rozważyć użycie innego mikrokontrolera, np. AVR, który oferuje wbudowaną pamięć EEPROM. Istnieje również możliwość modyfikacji zawartości pamięci Flash procesora z poziomu programu (In-Application Programming), jednak wymaga to szczegółowego zapoznania się z dokumentacją DS89C430-DS89C450. W przypadku konieczności zachowania danych bez zewnętrznej pamięci, można zastosować tryb uśpienia z podtrzymaniem zasilania bateryjnego, co jednak komplikuje układ. Dodatkowo pojawił się problem z implementacją timera w programie C dla kwarcu 11,059 MHz, gdzie wyświetlanie tekstu po określonym czasie wymaga poprawnej konfiguracji rejestrów i obsługi przerwań.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA