Witam!
Chciałem zasięgnąć rady bardziej doświadczonych kolegów. Sprawa wygląda następująco - skonstruowałem dość proste urządzenie, które jest licznikiem impulsów (z licznika energii elektrycznej). Oczywiście w dalszej perspektywie będzie miało nieco więcej funkcji niż zliczanie impulsów. Problem tkwi w tym co zrobić ze zmienną przechowującą liczbę impulsów podczas zawieszenia układu? Układ ma za zadanie odpowiadać innemu urządzeniu przez TWI, gdy zostanie zapytany o liczbę dotychczas zliczonych impulsów. Czasem podczas komunikacji dochodzi do zwieszenia - układ przestaje odpowiadać po TWI i pomaga jedynie manualny reset, ale wtedy niestety zaczyna zliczać od nowa. Żeby nie musieć resetować go ręcznie pomyślałem sobie że w miejscu gdzie jest kod odpowiedzialny za odpowiadanie użyję watchdoga, który jak coś sam zajmie się resetem, ale wtedy tak czy inaczej tracę dane. Odrębnym problemem jest też utrata zasilania (brak prądu). Może jakieś pomysły jak się przed tym zabezpieczyć - chciałbym aby licznik zliczał "ciągle"? Myślałem nad wbudowanym EEPROMem, ewentualnie jakąś zewnętrzną pamięcią, ale zapisywanie po każdym impulsie danych do tej pamięci dość szybko może ją unicestwić (ewentualnie zapis co kilka impulsów?). Poniżej przedstawiam fragment kodu odpowiedzialny za odpowiadanie po TWI (okrojony o zbędne w tym przypadku rzeczy i bez wspomnianego watchdoga, którego umieszczę jak zlokalizuję kłopotliwe miejsce):
z góry dzięki
pozdrawiam
herszt
Chciałem zasięgnąć rady bardziej doświadczonych kolegów. Sprawa wygląda następująco - skonstruowałem dość proste urządzenie, które jest licznikiem impulsów (z licznika energii elektrycznej). Oczywiście w dalszej perspektywie będzie miało nieco więcej funkcji niż zliczanie impulsów. Problem tkwi w tym co zrobić ze zmienną przechowującą liczbę impulsów podczas zawieszenia układu? Układ ma za zadanie odpowiadać innemu urządzeniu przez TWI, gdy zostanie zapytany o liczbę dotychczas zliczonych impulsów. Czasem podczas komunikacji dochodzi do zwieszenia - układ przestaje odpowiadać po TWI i pomaga jedynie manualny reset, ale wtedy niestety zaczyna zliczać od nowa. Żeby nie musieć resetować go ręcznie pomyślałem sobie że w miejscu gdzie jest kod odpowiedzialny za odpowiadanie użyję watchdoga, który jak coś sam zajmie się resetem, ale wtedy tak czy inaczej tracę dane. Odrębnym problemem jest też utrata zasilania (brak prądu). Może jakieś pomysły jak się przed tym zabezpieczyć - chciałbym aby licznik zliczał "ciągle"? Myślałem nad wbudowanym EEPROMem, ewentualnie jakąś zewnętrzną pamięcią, ale zapisywanie po każdym impulsie danych do tej pamięci dość szybko może ją unicestwić (ewentualnie zapis co kilka impulsów?). Poniżej przedstawiam fragment kodu odpowiedzialny za odpowiadanie po TWI (okrojony o zbędne w tym przypadku rzeczy i bez wspomnianego watchdoga, którego umieszczę jak zlokalizuję kłopotliwe miejsce):
Kod: text
z góry dzięki
pozdrawiam
herszt
