-
11. Data: 2014-05-02 16:24:11
Temat: Re: Atmega i podciąganie wejść
Od: sundayman <s...@p...onet.pl>
> 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.
-
12. Data: 2014-05-02 19:34:19
Temat: Re: Atmega i podciąganie wejść
Od: "Jan" <k...@p...net>
Użytkownik "sundayman" napisał w wiadomości grup
dyskusyjnych:lk0a19$n8f$...@n...news.atman.pl...
> 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.
Perfidna sytuacja.
Swojego czasu miałem wejścia PIC zwierane na przekaźniku odległym o 5-6
metrów. Kabel działał jak antena a PIC:
1. dla zwolenników Pawłowa - jak radio
2. dla zwolenników prawdy historycznej: jak wykrywacz burz.
Oczywiście PIC wariował przy każdej burzy.
-
13. Data: 2014-05-08 15:05:31
Temat: Re: Atmega i podciąganie wejść
Od: g...@s...invalid (Adam Wysocki)
sundayman <s...@p...onet.pl> wrote:
> To był tylko jeden taki przypadek
Ale wewnętrzny pullup padł na amen, czy wyłączył się do najbliższego
resetu (prądowego)?
> 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.
Może dla pewności XOR-uj te dane z czymś (w każdej komórce z czymś
innym), inaczej np. błędne ustawienie któregoś bitu w kilku komórkach
jednocześnie będzie niezauważone.
--
SELECT finger FROM hand WHERE id = 3;
http://www.chmurka.net/