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



Teraz jest 28 gru 2024, o 21:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 29 sie 2018, o 17:46 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Dzień dobry,

Pracuję właśnie nad zegarkiem NIXIE na ATMEGA8A i 6 lampach IN-4 i napotkałem następujący problem:

Zacząłem do multipleksowania lamp za pomocą programu z bluebooka o multipleksowaniu wyświetlaczy 7-SEG.

Przerobiłem go do współpracy z 6 NIXIE i tranzystorami NPN zamiast PNP. Przy częstotliwości taktowania 8 MHz z wewnętrznego oscylatora hula jak powinno - lampy nie migają, świecą ciągłym światłem.
Problem pojawił się kiedy podłączyłem do ATMEGA8A kwarc zewnętrzny 16 MHz wraz z dwoma kondensatorami 22pF. Ustawiłem fuse bity za pomocą mkAvrcalculator na kwarc zewnętrzny >8MHz. W Eclipse również zmieniłem kwarc na 16 MHz. Preskaler zmieniłem, jak powinno żeby ponownie uzyskać częstotliwość 300 Hz i... klops. 2 lampy świecą mrugając szybko jak nie wiem, a pozostałe śpią.

Kiedy odłączam kwarc, zmieniam wszystko na 8 MHz działa jak powinno. Proszę o pomoc. Co sprawdzić? Gdzie szukać?
Poniżej załączam kody pliku nagłówkowego i pliku .c
Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
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: 29 sie 2018, o 18:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

cześć
Pokaż ten kawałek kodu odpowiedzialny za ustawienia timera od multipleksowania.
Czy po zmianie częstotliwości w projekcie zrobiłeś "clean"?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 18:14 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Wrzuciłem. To ten drugi listing - nixie_tubes.c
Użyłem opcji clean, jeszcze raz build, wgrałem do Atmegi i niestety nic się nie zmieniło. Musiałem zrobić to wcześniej.

Dodam, że zauważyłem, że kiedy drastycznie zmniejszę wartość OCR2 to ruszaja 6 lamp, ale wciąż strasznie szybko migają.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 19:36 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Próbowałeś, jak pracuje z zewnętrznym kwarcem 8MHz?

Jak masz ustawiony fusebit CKOPT?
Powinien być zaprogramowany, wtedy oscylator pracuje z większą amplitudą i jest mniej podatny na zakłócenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 20:00 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Niestety z zewnętrznych kwarców posiadam tylko 16 MHz.
CKOPT był ustawiony na 0, zmieniłem na 1, ale bez efektów. Wciąż strasznie szybko migają tylko 4 lampy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 20:15 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Jeśli CKOPT był na 0, to tak powinien być (zaprogramowany oznacza 0).
Niemniej, jeśli na wewnętrznym oscylatorze 8MHz działa poprawnie, to warto sprawdzić ten sam program na zewnętrznym taktowaniu o tej samej częstotliwości. Wtedy byłaby względna pewność, że nie jest to wina programu.
Moim zdaniem objawy, które opisujesz, mogą wskazywać, że jest to wina zakłóceń (resetowanie mikrokontrolera).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2018, o 20:35 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Miałem na myśli, że wcześniej był niezaprogramowany. Po twojej sugestii go zaprogramowałem, ale to nic nie zmieniło.
Reset mam podłączony przez rezystor 10k do VCC. Może przez obecność przetwornicy wariuje?

Zauważyłem teraz w ciemności, że ostatnia cyfra żarzy się raz po raz nieznacznie. Mam zaprogramowany ten zegar wstępnie by zliczał, ale widzę, że to, co powinno być sekundą, trwa jakiś jej ułamek, bo bardzo szybko przełącza katody.

Katody mam na PORTB, oscylator też jest na PORTB, może jakoś tam ingeruje? Wydaje mi się, że dobrze maskuję PORTB.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 07:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Kurczę ustawienia timera masz ok.
Zrób prosty test i pomigaj diodą na którymś pinie co 1sek. będziesz wiedział czy zewnętrzny kwarc prawidłowo pracuje.
Mam na myśli wgranie prostego programu

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 08:12 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Tak zrobiłem. Przy 1 sekundzie opóźnienia dioda zmienia swój stan jak stroboskop :o



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 08:43 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Kod, który znajduje się na początku funkcji main() znajdujący się przed główną pętlą programu while(1) wykonywany jest tylko raz przy starcie. Wstaw tam zapalenie jakiejś diody (bez delay, po prostu zapal).
Dioda powinna się zapalić i świecić (pełnym światłem) przez cały czas działania programu. Jeśli będzie migać lub przygasać, będzie to oznaczać, że mikrokontroler się resetuje. Później pozostanie znalezienie przyczyny. Przetwornica może być jednym z głównych podejrzanych...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 08:55 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2590
Pomógł: 128

A ja polecam zakup nawet najprostszego analizatora logicznego - wcale nie są drogie a jak poogladasz filmiki Mirka co dzięki nim można zrobić to od razu wpadniesz na pomysł, jak je wykorzystać do poszukiwania źródła problemu w swoim układzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 09:26 
Offline
Użytkownik

Dołączył(a): 22 kwi 2017
Posty: 99
Lokalizacja: Piła
Pomógł: 4

Bardzo fajne urządzonko, nie raz rozwiązał moje wątpliwości.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 09:40 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Odłączyłem przetwornicę, odłączyłem NIXIE. Kiedy wrzuciłem diodę na jeden pin (zupełnie nowy program) przed nieskończoną pętlę, żeby ustawić ją na stałę, rzeczywiście dalej działa jak stroboskop. Skąd ten reset w takim razie? Atmega jest zasilana z programatora, jest filtracja zasilania, jest reset przez rezystor do VCC. Przyczyną może być ten oscylator?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 09:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

andrews napisał(a):
Kod, który znajduje się na początku funkcji main() znajdujący się przed główną pętlą programu while(1) wykonywany jest tylko raz przy starcie. Wstaw tam zapalenie jakiejś diody (bez delay, po prostu zapal).
Dioda powinna się zapalić i świecić (pełnym światłem) przez cały czas działania programu. Jeśli będzie migać lub przygasać, będzie to oznaczać, że mikrokontroler się resetuje. Później pozostanie znalezienie przyczyny. Przetwornica może być jednym z głównych podejrzanych...


Tak trzeba zrobić ale myślę, że na wewnętrznym oscylatorze efekt przy złym zasilaniu byłby ten sam.
Ja bym wgrał do procka coś takiego
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

sprawdził ponownie ustawienie taktowania w programie i fusy.
Przecież to musi działać i podłączona dioda miga co sekundę.

Wrzuć jakieś zdjęcia lub schemat


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 09:51 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Dziaba napisał(a):
Skąd ten reset w takim razie?

Jeśli to "zupełnie nowy program", w którym nie ma nic poza zapaleniem diody, wyeliminowałeś źródła zakłóceń i ewentualne problemy z zasilaniem, to obstawiłbym omyłkowe włączenie watchdoga (zaprogramowany fusebit WDTON). Podczas zmiany taktowania na zewnętrzne musiałeś zmieniać fusebity, więc mogłeś się pomylić.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2018, o 09:59 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 9
Lokalizacja: Wejherowo
Pomógł: 0

Wgrałem. Za każdym razem, kiedy chcę migać diodą co 1s lub kiedy ustawiam ją na stałe w pętli nieskończonej lub poza, dioda wciąż miga jak pokręcona.

Tutaj są ustawienia:
mkAvrCaclucator
Obrazek

Eclipse Mars
Obrazek

Zauważyłem też, że mimo, że jest to ATMEGA8A to mkAvrCalculator i eclipse wykrywają ją jako ATMEGA8, powinno tak być?

------------------------ [ Dodano po: 5 minutach ]

andrews napisał(a):
Dziaba napisał(a):
Skąd ten reset w takim razie?

Jeśli to "zupełnie nowy program", w którym nie ma nic poza zapaleniem diody, wyeliminowałeś źródła zakłóceń i ewentualne problemy z zasilaniem, to obstawiłbym omyłkowe włączenie watchdoga (zaprogramowany fusebit WDTON). Podczas zmiany taktowania na zewnętrzne musiałeś zmieniać fusebity, więc mogłeś się pomylić.


Zbawco! Rzeczywiście, w jakiś sposób musiałem zaznaczyć ten fuse bit :o Chociaż nie przypominam sobie, żebym to robił rzeczywiście był zaznaczony. Spróbuję na nowo zmontować NIXIE i powiadomię o wynikach.

------------------------ [ Dodano po: 11 minutach ]

Działa. Wszystkie 6 NIXIE pięknie się wyświetla, chociaż poświata jest inna niż przy wewnętrznych 8MHz, ale to już spróbuję dopasować częstotliwością multipleksowania. Bardzo dziękuję wszystkim za pomoc!



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: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO