Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 kwi 2026, o 17:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 18 lip 2015, o 15:13 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Witam,
jestem w trakcie robienia prostej zabawki dla dziecka (sygnalizator uliczny), ale niestety walczę już ze ścianą ponad pół roku. Obecnie musiałem zrezygnować z jednej dość istotnej dla mnie funkcji (tylko jeden przycisk pod INT0), ale co zrobić. Uprościłem kod do minimum, ale i tak zachowuje się inaczej niż bym chciał.
Co ma robić:
włączać czerwony LED po 1s. wciśniętego przycisku
wyłączać czerwony LED jeśli przycisk puszczono

A jak działa:
żółty LED cały czas miga sygnalizując, że przycisk nie jest wciśnięty - to jest ok
nic się nie dzieje, jeśli łączę PB0 z masą :shock:

Całość sterowana jest watchdogiem z częstotliwością 8Hz.

Kod starałem się oczyścić ze wszystkich niepotrzebnych śmieci.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2015, o 15:23 
Offline
Użytkownik

Dołączył(a): 01 sty 2014
Posty: 116
Pomógł: 14

Spróbuj bezpośrednio odczytywać stan pinu bez filtrowania drgań styków.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2015, o 15:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zamiast PORTB powinno być PINB.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2015, o 15:34 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

jacekk232 napisał(a):
Zamiast PORTB powinno być PINB.

Dzięki, działa. Miałem tak wcześniej (tylko cały program był trochę inaczej napisany), ale już zacząłem szukać po necie i wyszło mi, że tak też mogę odczytywać.
Później podeślę wersję, która miała działać na przerwaniu INT0 - na niej bardziej mi zależy. Teraz już nie mam siły myśleć :?
W międzyczasie robiłem próby z podpinaniem się pod PB5 (który miałem wolny), ale zorientowałem się, że to RESET :lol:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lip 2015, o 22:01 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Podrzucam wersję z obsługą INT0 do wstawania ze stanu uśpienia (podczas normalnej pracy jest wyłączany), oprócz tego praca teraz też odbywa się z usypianiem procka pomiędzy kolejnymi wywołaniami z WDT. Mam wrażenie, że ta wersja i tak jest mocno niestabilna. Co którąś poprawkę w kodzie działa albo i nie :roll: Na przykład teraz nie chce mi się już procek obudzić :evil:
EDIT: pomogło ponowne wywołanie ustawie watchdoga przy wyjściu z Deepsleep'a

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO