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

DS89C450 – zapis danych do pamięci nieulotnej w C (Keil)

pawelob 16 Sie 2007 02:13 1434 4
REKLAMA
  • #1 4182509
    pawelob
    Poziom 14  
    Posty: 163
    Pomógł: 2
    Ocena: 3
    Witam,

    Mam pytanie : jak zapisać w C (kompilator Keil) dane programu (nie chodzi o kod programu, ale o dane) do pamięci nieulotnej w DS89C450?

    Z góry dzięki za informacje
  • REKLAMA
  • #2 4182952
    aster11
    Poziom 19  
    Posty: 211
    Pomógł: 36
    Ocena: 1
    Mikrokontroler DS89C450 nie ma wydzielonej nieulotnej pamięci danych (EEPROM/FLASH) jako takiej. Można jednak dla nieulotnego przechowywania danych wykorzystywać pamięć programu, gdyż architektura mikrokontrolera pozwala na przeprogramowywanie tej pamięci (dokładniej górnej jej połówki) przez wykonywany kod (In-Application Programming). Szczegóły opisane są w datasheet na str. 23-24.

    Osobiście nie wykorzystywałem tej możliwości. Może to być nieco bardziej kłopotliwe, niż wykorzystanie mikrokontrolera z wydzieloną nieulotną pamięcią danych, ale niekoniecznie.
    Układy '51 programuję w SDCC, nie w Keil. Nie wiem jak jest tam ze wsparciem dla mechanizmu IAP akurat dla DS89C450. Podejrzewam, że dla tej dość egzotycznej opcji nie będzie tam specjalnego wsparcia i trzeba będzie samodzielnie przygotować odpowiednie funkcje, pozwalające na zapis i odczyt IAP.
  • REKLAMA
  • #3 4187824
    pawelob
    Poziom 14  
    Posty: 163
    Pomógł: 2
    Ocena: 3
    Trudno, wykorzystanie tej pamięci nieulotnej może być trudne, muszę zostać przy Keilu bo czas mnie ciśnie. Dlatego kupiłem pamięć 24C01 i prawdopodobnie napiszę interfejs szeregowy (takie SPI), to nie jest takie trudne. No i daje mi gwarancję, że będę miał pamięć nieulotną dla danych.

    DS89C450 to ciekawa maszyna, będę z niej korzystał i to często - wpisywanie programu przez RS-232 jest dla mnie bardzo ważne. Jednak do mojego aktualnego problemu (ale w przyszłości, na dzisiaj będzie 450-ka) i innych prostszych raczej wezmę coś mniejszego (zwłaszcza w sensie wymiarów). Kontrolery w obudowie DIP-40 przy wykorzystaniu 9 linii I/O są zwyczajnie za duże.

    Myślałem coś o AVR, mają pamięć nieulotną dla danych bez problemu. Podobno. Być może Dallas też oferuje mniejsze uK (coś w obudowie DIP20), poszukam. Słyszałem też co nieco o PIC, ale nie znam szczegółów. Cokolwiek, co można programować w C i przez STK200/300 - kosztuje około 25 pln.
  • REKLAMA
  • #4 4188080
    aster11
    Poziom 19  
    Posty: 211
    Pomógł: 36
    Ocena: 1
    Ściśle mówiąc 24C01 komunikuje się przez I2C (TWI), nie przez SPI - jakkolwiek jedno i drugie to interfejsy szeregowe :D

    Napisanie podstawowych funkcji obsługi I2C oraz funkcji dostępu do zewnętrznego EEPROM to raczej większy nakład pracy niż oprogramowanie IAP w DS89C450 - gdybyś obie rzeczy miał robić od zera:!: Jednakże dostęp do zewnętrznej pamięci EEPROM przez I2C to "klasyka" i na pewno znajdziesz gotowe biblioteki (w internecie lub od kolegów). Wygrywa więc zewnętrzny EEPROM. Z drugiej strony za wykorzystaniem pamięci FLASH z mikrokontrolera i IAP przemawia większa prostota sprzętowa. W tej rozgrywce mamy zatem 1:1. Gdyby uzasadnienia ograniczały się do wyżej wymienionych, ja wybrałbym IAP.

    Wydaje się jednak, ze górę bierze tu inna zasadnicza kwestia - liczba przeprogramowań. Dla FLASH w DS89C450 gwarantowane jest 10'000, dla 24C01 standardowo 1000'000 przeprogramowań - 100-krotna różnica to bardzo dużo. Dodatkowo, jeżeli nawet "zajeździsz" pamięć zewnętrzną, to jej wymiana będzie za pewne znacznie mniej kłopotliwa, niż wymiana mikrokontrolera. Tak więc wykorzystanie IAP proponowałbym dla zapisu danych, które w zamyśle mają być modyfikowane "kilkakrotnie" - dane konfiguracyjne, kalibracyjne, preferencje użytkownika, itp. Jeżeli potrzebne jest przechowywanie danych, które nieustannie zmieniają się w czasie pracy urządzenia (nastawy potencjometrów cyfrowych, wirtualnych przycisków, itp.), to raczej lepiej sprawdzi się zewnętrzny EEPROM.
  • #5 4201736
    pawelob
    Poziom 14  
    Posty: 163
    Pomógł: 2
    Ocena: 3
    Dzięki za zwrócenie uwagi na to, że tam nie ma SPI tylko i2c. Zmarnowałbym tylko czas pisząc niewłaściwy protokół.

    Pozdrawiam
REKLAMA