-
Data: 2014-05-02 16:24:11
Temat: Re: Atmega i podciąganie wejść
Od: sundayman <s...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]
> Jak możesz, to napisz coś więcej o tym zdarzeniu. Sam używam
> wewnętrznego podciągania (na razie bez problemów) i mnie nastraszyłeś.
Swego czasu (coś z rok temu) opisywałem. W skrócie to tak ;
sterownik (wtedy miał tylko wewnętrzne podciąganie) zainstalowany na
ulicy, w PLASTYKOWEJ dużej skrzyni instalacyjnej przy torach
tramwajowych. No jakby ta skrzynia była metalowa, to pewnie by się to
nie zdarzyło...
Sam sterownik też jest w obudowie plastykowej - no więc ekranowania
zasadniczo brak.
Była burza - w pobliżu - chyba jakieś kilkadziesiąt metrów wg. ustaleń -
przywalił piorun (nie bezpośrednio w urządzenie - normalnie w
piorunochron na pobliskim budynku chyba) - no i zaczęły się dziać cuda -
jak gdyby jakiś duch zaczął obsługiwać klawiaturę sterownika :)
Okazało się, po dochodzeniu, że impuls elektromagnetyczny spowodował, że
w MCU (atmega128) "odłączyło" się właśnie podciąganie klawiatury. Wtedy
linie wejściowe "zawisły w powietrzu", no zaczęło się
losowe uruchamianie klawiszy - bo sam program dział nadal poprawnie.
Dało się to ustalić, bo sterownik ma rejestr zdarzeń, i można było
odczytać, co się dokładnie działo - od pewnej chwili po prostu było
widać , że są naciskane klawisze, chociaż nikt tego nie robił :)
To był tylko jeden taki przypadek - ale skończyło się na dość poważnym
problemie, ponieważ "duch elektrostatyczny", losowo naciskając te
"wirtualne klawisze" zdołał wykonać kilka całkiem niepożądanych czynności :)
Żeby zapobiec temu na przyszłość, zastosowałem zabezpieczenie programowe
(hasło przed wejściem w menu) + rezystory zewnętrzne.
Dodatkowo zwracam uwagę na konieczność (w poważniejszych zastosowaniach)
nadmiarowego zapisywania danych w pamięci ERAM !
Niestety, nie można mieć specjalnie zaufania do tej pamięci i trzymanie
tam istotnych parametrów tak "po prostu" może skończyć się kłopotem.
Jak się to robi ?
Każdą daną zapisuje się np. w 5 komórkach.
Następnie przy każdym odczycie (albo nawet okresowo po prostu)
sprawdzamy, że wszystkie 5 komórek ma tą samą daną. Jeśli nie -
odczytujemy, która wartość jest w największej ilości komórek.
Czyli np. zapisaliśmy pierwotnie liczbę 5.
Podczas odczytu mamy w ERAM;
komórka 1 = 5
komórka 2 = 184
komórka 3 = 5
komórka 4 = 5
komórka 5 = 5
Wtedy wiadomo, że "5" jest zapisane najwięcej razy - więc zapisujemy
ponownie wszystkie komórki tą wartością.
Oczywiście - może się teoretycznie zdarzyć, że nie da się tego zrobić,
bo np. będzie tak;
komórka 1 = 5
komórka 2 = 184
komórka 3 = 5
komórka 4 = 2
komórka 5 = 2
I wtedy dupa blada :) No ale wtedy wiadomo, że coś bardzo poważnie się
wysypało i trzeba alarmowo wyłączyć cały interes na wszelki wypadek.
W praktyce aż taka wywałka się nie zdarza raczej, i to w mocno
nieprzyjaznym środowisku (silne zakłócenia).
Osobiście stosuję zapis w 10 komórkach, rzecz jasna tylko chodzi o
najważniejsze dane, których przekłamanie może spowodować poważne kłopoty.
Następne wpisy z tego wątku
- 02.05.14 19:34 Jan
- 08.05.14 15:05 Adam Wysocki
Najnowsze wątki z tej grupy
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
Najnowsze wątki
- 2025-07-23 Gdańsk => Programista Delphi <=
- 2025-07-23 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-23 Warszawa => Starszy inżynier DevOps (AWS) <=
- 2025-07-23 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-23 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-23 Wrocław => Senior Key Account Manager IT <=
- 2025-07-23 Trójmiasto => Head of Social Media <=
- 2025-07-23 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-23 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-07-23 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-23 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-23 Kraków => Kotlin Developer <=
- 2025-07-23 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-23 Warszawa => Java Developer <=
- 2025-07-23 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=