Witam,
czy ktoś z szanownych kolegów wie może jak poradzić sobie z problemem konieczności zapisania do pamięci stałej informacji o tym w którym dokładnie momencie wykonywania programu zostało w skutek np. awarii odcięte zasilanie, tak aby po ponownym dostarczeniu zasilania program mógł się wykonać dalej od miejsca przerwania go?
Chodzi o sytuację w której jeżeli mamy manipulator z zaprogramowaną sekwencją ruchów (do określenia położenia wykorzystujemy sygnał z enkoderów) i jeżeli zabraknie prądu w połowie programu to po wznowieniu program powinien się wykonać do końca od momentu przerwania. Np. zapisanie stanów liczników, program countera i co tam jeszcze będzie potrzebne.
Nie wiem czy jest możliwość po wykryciu przez procesor spadku napięcia zapisać jeszcze taką informację do pamięci czy już od razu się procek zresetuje.
Jeżeli jednak jest możliwość zapisu jeszcze czegoś do pamięci to w jaki sposób to wykonać- tzn. jak, to że procek wykrył spadek napięcia przełożyć na to aby wykonał jeszcze przed resetem procedurę obsługi takiej awaryjnej sytuacji.
Myślałem jeszcze nad takim łopatologicznym rozwiązaniem że po każdym impulsie z enkodera i każdej fazie ruchu jest zapisywana jakaś zmienna do pamięci (taki rejestr) i po starcie procka zawsze byłby sprawdzany ten niby rejestr. Proszę zwrócić uwagę na problem gdy tak niefortunnie się złoży, że zasilanie zostanie odcięte w momencie kiedy sygnał z enkodera dociera już do procka, ale jeszcze nie zostało to zapisane w pamięci.
Myślałem jeszcze o możliwości opóźnienia resetu procka dodając prosty układ (taki jak na rysunku) gdzie odpowiednio duży kondensator mógłby podtrzymać zasilanie dostatecznie długo aby procek wykonał jeszcze parę instrukcji, a układ z opornikami i odprowadzeniem sygnału np. pod wejście INT0 powoduje na tym odprowadzeniu szybszy spadek i informuje procesor że spada napięcie zanim się sprzętowo zorientuje. Dałoby to trochę cennego czasu, ale nie wiem czy to w ogóle ma sens.
Będę bardzo wdzięczny za wszelką pomoc.
czy ktoś z szanownych kolegów wie może jak poradzić sobie z problemem konieczności zapisania do pamięci stałej informacji o tym w którym dokładnie momencie wykonywania programu zostało w skutek np. awarii odcięte zasilanie, tak aby po ponownym dostarczeniu zasilania program mógł się wykonać dalej od miejsca przerwania go?
Chodzi o sytuację w której jeżeli mamy manipulator z zaprogramowaną sekwencją ruchów (do określenia położenia wykorzystujemy sygnał z enkoderów) i jeżeli zabraknie prądu w połowie programu to po wznowieniu program powinien się wykonać do końca od momentu przerwania. Np. zapisanie stanów liczników, program countera i co tam jeszcze będzie potrzebne.
Nie wiem czy jest możliwość po wykryciu przez procesor spadku napięcia zapisać jeszcze taką informację do pamięci czy już od razu się procek zresetuje.
Jeżeli jednak jest możliwość zapisu jeszcze czegoś do pamięci to w jaki sposób to wykonać- tzn. jak, to że procek wykrył spadek napięcia przełożyć na to aby wykonał jeszcze przed resetem procedurę obsługi takiej awaryjnej sytuacji.
Myślałem jeszcze nad takim łopatologicznym rozwiązaniem że po każdym impulsie z enkodera i każdej fazie ruchu jest zapisywana jakaś zmienna do pamięci (taki rejestr) i po starcie procka zawsze byłby sprawdzany ten niby rejestr. Proszę zwrócić uwagę na problem gdy tak niefortunnie się złoży, że zasilanie zostanie odcięte w momencie kiedy sygnał z enkodera dociera już do procka, ale jeszcze nie zostało to zapisane w pamięci.
Myślałem jeszcze o możliwości opóźnienia resetu procka dodając prosty układ (taki jak na rysunku) gdzie odpowiednio duży kondensator mógłby podtrzymać zasilanie dostatecznie długo aby procek wykonał jeszcze parę instrukcji, a układ z opornikami i odprowadzeniem sygnału np. pod wejście INT0 powoduje na tym odprowadzeniu szybszy spadek i informuje procesor że spada napięcie zanim się sprzętowo zorientuje. Dałoby to trochę cennego czasu, ale nie wiem czy to w ogóle ma sens.
Będę bardzo wdzięczny za wszelką pomoc.