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

Ile czasu bede miał na zapisanie danych z procka do Flash

Tarf 13 Cze 2006 19:22 1661 13
REKLAMA
  • #1 2726133
    Tarf
    Poziom 11  
    Posty: 46
    Pomógł: 1
    Witam
    Zrobiłem schemat jak na rysunku poniżej
    Zasilam dwa mikroprocesory atmega128 i atmega162, razem cały układ ciągnie coś około 160mA. Układ z rezystorem wymyśliłem po to żeby sprawdzić kiedy zaniknie mi napięcie zasilania na J1, wtedy na INT1(jak na rysunku) pojdzie stan niski i od tego momentu będę miał ileś czasu żeby zapisać dane z atmega162 do pamięci Flash zanim rozładuje się kondensator C7 (4700uF).
    Chyba że coś poknociłem i to nie zadziała.
    Przeglądnijcie proszę ten schemat.
    Ile czasu będę miał na zapisanie danych do Flash ?
    Pozdrawiam
    Załączniki:
    • schemat.GIF (7.44 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 2726237
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Mogę się mylić, nie wiem ile masz tych danych, ale szanse są kiepskie.
    Zapis do pamięci flash jest bardzo powolny.
  • REKLAMA
  • #3 2726279
    kamyczek
    Poziom 38  
    Posty: 3994
    Pomógł: 394
    Ocena: 571
    ile masz tych danych i gdzie je chcesz zapisac ? sadze ze lepszy był by układ z baterią litową lub akumulatorkiem 4,8v zapis trwa chwilkę . jak chcesz zmierzyć czas jaki mega działa to napisz testowy program który zmienia mp co 1ms stan na którymś porcie od momentu wykrycia zmiany na int0 podłącz licznik impulsów zrób kilka testów oczywiście zailając licznik z innego źródła i sie dowiesz praktycznie ile pracuje mega z całą resztą na kondziołku ... wynik pomniejsz sobie o 1/4 dla bezpieczeństwa i zostanie ci czas do wykorzytania
  • REKLAMA
  • #4 2726391
    Tarf
    Poziom 11  
    Posty: 46
    Pomógł: 1
    To jest pamięć podłączona po SPI, tak że komunikacja z nią nie trwa zbyt długo.
    Mogę jeszcze zwiększyć kondensator.
    Tylko chciałem wiedzieć orientacyjnie na ile mogę liczyć czasu.
    Jeśli ktoś potrafi to orientacyjnie policzyć, byłbym wdzięczny.
  • #5 2726423
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Nikt "orientacyjnie" nie jest w stanie tego określić.
    Nikt "zdalnie" nie wie jaki pobór ma cały twój układ.
    Jedyna możliwość to test jaki zaproponował kamyczek.
  • #6 2726426
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    To Ci w ogole nie zadziała, w momencie, w którym dostaniesz sygnał na INT1 procesor już bedzie w liściach. Żeby miało szansę zdać egzamin musiąłbyś conajmniej wstawić diodę pomiędzy C1, a C(diabli wiedzą, nei widać na schemacie). Po zaniku napięcia C1 się szybko rozładuje (albo C1 musi być mniejsze, albo musisz go obciążyć), a podtrzymanie chwilowe będzie z energii zgromadzonej w C7 i pojemności na wyjściu układu.
  • REKLAMA
  • #7 2727259
    Tarf
    Poziom 11  
    Posty: 46
    Pomógł: 1
    A dobrze będzie gdy dam diodę przed C1?
    Nie będę musiał go rozładowywać.
  • #8 2727276
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Tarf napisał:
    A dobrze będzie gdy dam diodę przed C1?
    Nie będę musiał go rozładowywać.
    To będzie zależało od tego, co podłączysz do gniazda. Jak tylko wyprostowane, ale nie wygładzone napięcie z transformatora, to będziesz miał 50 przerwań na sekundę, co wybitnie wpłynie na zużycie pamięci, lepiej jest dołożyć dodatkową pojemność. Można się pokusić o zastosowanie transoptora, wbudowana dioda będzie rozładowywała kondensator.
    Alternatywna propozycja - pamięci typu FRAM - są szybkie i nie wymagają zasilania do przechowywania danych.
  • #9 2727700
    mrq80
    Poziom 15  
    Posty: 57
    Pomógł: 15
    Hej,

    Kiedyś miałem podobny problem. Aby sprawdzić ile danych możesz zapisać, możesz uruchomić program podobny do tego poniżej. Program ten (a właściwie jego fragment) w pętli zapisuje liczbę do pamięci EEPROM. Zapis jes uruchamiany przrerwaniem INT0, a zapisywana liczba jest w kolejnych krokach zwiększana o 1. Później musisz tylko odczytać tę liczbę i będziesz wiedział ile danych możesz zapisać. No i oczywiście powinieneś uwzględnić jakiś "margines bezpieczeństwa".

    
    SIGNAL	(SIG_INTERRUPT0)
    {
    	unsigned int i=0;
    	cli();
    
    	while(1)
    	{
    		eeprom_write_word((void*)(address), i);
    		eeprom_busy_wait();
    		i++;
    	}
    
    }
    


    Jeśli chodzi o stronę układową to ja zrealizowałem to troszeczkę inaczej.
    Zastosowałem układ DS1813 (standardowo wykorzystywany do resetu procesora). DS1813 bada napięcie poprzez dzielnik rezystancyjny. Jeśli napięcie spadnie poniżej ustalonej wartości - DS1813 generuje sygnał INT0, zaś AVRek ma jeszcze czas na zapisanie danych. Być może moje rozwiązanie to troche przerost formy nad treścią, tymniemniej działa poprawnie. Poniżej fragment układu.
    Załączniki:
    • EEPROM storage.gif (4.44 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #10 2728837
    shg
    Poziom 35  
    Posty: 2289
    Pomógł: 339
    Ocena: 135
    Jeżeli na podstawi tego schematu będziesz robił płytkę to zwróć uwagę na fakt, że w gnieździe zasilania podłączyłeś się do pinu, który jest od zasilania odłączany w momencie włożenia wtyczki.

    A Flashowi moze sie nie spodobać, że napięcie zasilania będzie stopniowo spadać podczas zapisu.
  • #11 2729130
    jacobsek
    Poziom 22  
    Posty: 419
    Pomógł: 61
    Ocena: 24
    Witam.
    Jesli masz normalny zasilacz to ja robiłem taki układzik i działa,różnica jest taka że zasilam transoptor bezpośrednio z przemiennego napięcia i podaję po wtórnej stronie transoptora na procka,dokładnie to miałem to zrobione w ten sposób:w określonym czasie sprawdzam ilość impulsów przychodzących z transoptora i jeśli jest ich mniej niż ustalone to wykonuję skok do procedury zapisu awaryjnego.Bez problemu to działa bo impulsy ze strony przemiennej zanikają natychmiast po zaniku zasilania a kondzio podtrzymuje napięcie,u mnie to działa z filtrem 2200u więc przy 4700 będzie jeszcze lepiej.
    Pozdrawiam
  • #12 2734608
    Tarf
    Poziom 11  
    Posty: 46
    Pomógł: 1
    Dzięki wszystkim za pomoc.
    Jak rozwiąże problem to postaram się to opisać w tym wątku.
  • #13 2862312
    ewsd75
    Poziom 13  
    Posty: 90
    Ocena: 20
    Proponuje zaglądnąć do literatury. Książka Pana Pawła Hadam " Projektowanie systemów mikroprocesorowych" tam jest przykład jak rozwiązać Twój problem z zanikiem zasilania. ( gotowy schemat i kawałek skryptu w języku C).
  • #14 3103043
    Tarf
    Poziom 11  
    Posty: 46
    Pomógł: 1
    Niestety z powodu braku czasu nie pokonałem problemu i przypuszczam że się już tym nie zajmę. Temat uważam za zamknięty. Dziękuję wszystkim za pomoc.

Podsumowanie tematu

✨ Dyskusja dotyczy czasu, jaki jest dostępny na zapisanie danych z mikrokontrolera Atmega162 do pamięci Flash po zaniku napięcia zasilania. Układ zasilany jest z dwóch mikrokontrolerów Atmega128 i Atmega162, pobierających około 160 mA, z kondensatorem 4700 µF mającym podtrzymać zasilanie chwilowo po zaniku napięcia. Użytkownik pyta o orientacyjny czas zapisu danych do pamięci Flash podłączonej przez SPI. W odpowiedziach podkreślono, że czas zapisu do pamięci Flash jest powolny i trudno go dokładnie określić bez testów praktycznych, gdyż zależy od poboru prądu całego układu i pojemności kondensatora. Sugerowano wykonanie testu mierzącego czas działania mikrokontrolera na kondensatorze poprzez generowanie impulsów i pomiar ich liczby. Wskazano, że sygnał przerwania INT1 może pojawić się zbyt późno, gdy procesor już nie będzie działał, dlatego zalecano zastosowanie diody zabezpieczającej przed rozładowaniem kondensatora C1. Poruszono też kwestie stabilności napięcia zasilania podczas zapisu do Flash oraz możliwość zastosowania pamięci FRAM jako alternatywy, która jest szybsza i nie wymaga zasilania do przechowywania danych. Jeden z uczestników opisał własne rozwiązanie z wykorzystaniem układu DS1813 do monitorowania napięcia i generowania sygnału resetu. Zwrócono uwagę na konieczność uwzględnienia marginesu bezpieczeństwa i testowania układu w praktyce. Ostatecznie autor tematu nie rozwiązał problemu z powodu braku czasu. Polecono literaturę, m.in. książkę Pawła Hadama „Projektowanie systemów mikroprocesorowych” zawierającą przykłady rozwiązań problemu zaniku zasilania.
Wygenerowane przez model językowy.
REKLAMA