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



Teraz jest 4 lut 2025, o 17:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 14 cze 2014, o 19:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Witam.

Zdecydowałem się założyć temat bo już sam nie wiem czy ja czegoś nie widzę w kodzie czy coś źle robię, czy po prostu "coś" jest nie tak.

Opis problemu:
Problem powstał przy tworzeniu większego projektu, kiedy dla ułatwienia projektowania PCB, należało między innymi zmienić piny klawiszy z PA0 - PA3 na PB0 - PB3. Po zmianach w programie i wgraniu wsadu zaczęły się "krzaki" w postaci samo włączającego się menu, lataniu po nim, itd. Początkowo podejrzewałem błędy w płytce, zestawiłem więc identyczny układ połączeń na ATB. Efekt ten sam. Po zmianie tylko portu klawiszy na piny PA0-PA3 wszystko działa jak należy.

Zestawiłem więc prosty układ złożony z klawiszy i diód, oraz napisałem program testujący.

Zestaw testowy: ATB GLS 1.04
Mikrokontroler: atmega16A
Taktowanie: rezonator kwarcowy 16 MHz
Środowisko: eclipse Juno + Atmel Toolchain

Obrazek

Pominąłem na schemacie filtrację zasilania, ponieważ zapewnia to zestaw ATB.

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


Efekt działania jest taki, że
- dioda kontrolna miga szybko (ok. 50 ms)
- miga również dioda LED2, wolniej niż dioda kontrolna
- nie ma reakcji na działanie klawiszy

Po zakomentowaniu funkcji SuperDebounce odpowiadającej za obsługę klawisza KEY2, wszystko działa jak należy.
Po zmianie pinów na port A też wszystko działa jak należy.

Tworzyłem nowy project w Eclipse, napisałem od nowa kod na innym komputerze, testowałem kod na 2 mikrokontrolerach. Efekty są takie same.

Czy ktoś jest w stanie powiedzieć co to za czary albo gdzie popełniam jakiś błąd ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2014, o 21:03 
Offline
Użytkownik

Dołączył(a): 26 mar 2012
Posty: 26
Pomógł: 0

Może za późna pora ale w kodzie nic nie widzę. Nie znam płytki ATB, może coś jest podpięte pod pin KEY2? Sprawdź czy jest na nim stan wysoki, a przyciśnięcie przycisku ściąga go do 0. Nie widzę w kodzie abyś używał tego pinu do innych zastosowań. Czasem z rozpędu w większych projektach pin przycisku zamaskuje się w kodzie włączając PWM albo inną funkcję pinu. Tutaj tego nie widzę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2014, o 22:46 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

xpower napisał(a):
Zdecydowałem się założyć temat bo już sam nie wiem czy ja czegoś nie widzę w kodzie czy coś źle robię, czy po prostu "coś" jest nie tak


Masz nową wersję książki w twardej oprawie ? czy starszą tą w miękkiej ? - to ważne bo w starszej był jeszcze mały babolek w tej funkcji - i z tego co zamieściłeś to właśnie nagłówek z tym babolkiem używasz. Brakuje jeszcze jednego ważnego argumentu do funkcji .... zajrzyj w razie czego na stronkę:

http://atnel.pl/uaktualnienia-programow-do-dvd.html

tam jest link do pobrania poprawionej wersji tej funkcji

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2014, o 22:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Sprawdziłem Twój projekt na moim zestawie ( Mega16, 16Mhz ....) wraz z:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i działa bez zarzutu.

edit... widzę, że jak się gramoliłem z kodem to kol.Mirek już był :)

Pozdr.



Ostatnio edytowano 14 cze 2014, o 22:52 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2014, o 22:52 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

Niestety może być problem przy kilku klawiszach - jak mówię brak jednego argumentu przekazywanego do tej funkcji ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2014, o 22:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

.... testowałem " full wypas" - 4xLED + 1xLED + 4xKEY :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2014, o 23:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

mirekk36 napisał(a):
xpower napisał(a):
Zdecydowałem się założyć temat bo już sam nie wiem czy ja czegoś nie widzę w kodzie czy coś źle robię, czy po prostu "coś" jest nie tak


Masz nową wersję książki w twardej oprawie ? czy starszą tą w miękkiej ? - to ważne bo w starszej był jeszcze mały babolek w tej funkcji - i z tego co zamieściłeś to właśnie nagłówek z tym babolkiem używasz. Brakuje jeszcze jednego ważnego argumentu do funkcji .... zajrzyj w razie czego na stronkę:

http://atnel.pl/uaktualnienia-programow-do-dvd.html

tam jest link do pobrania poprawionej wersji tej funkcji


Tak, mam starszą wersję książki w miękkiej oprawie (tą po poprawkach w druku).

Podmieniłem kod SuperDebounce na ten z lekcji 17, zmodyfikowałem pętlę while

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


Po załadowaniu zapala się LED3, brak reakcji na wciśnięcie KEY2.

Z uwagi na godzinę zawieszam kombinacje z tym do rana bo skoro @kicajek sprawdzał to u siebie z podmienionym kodem debounce i działało tzn, że o czymś musiałem zapomnieć.
Nawiasem mówiąc byłem pewny działania kodu debounce z projektu wielozadaniowego bo stosowałem go już nie raz i wszystko było ok.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 07:25 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

ok tzn ja nie do końca rozumiem problemu .... czy to oznacza że np na PORTA wszystko działa ci w porządku a na PORTB nie działają niektóre klawisze ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 09:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Dokładnie tak Mirku.

Zaraz będę to testował z SuperDebounce z lekcji 17.

No to tak od początku, wraz z materiałem dowodowym. :D

Przyciski podpięte pod PORT B PB0-PB3
SuperDebounce z lekcji 19


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





Przyciski podpięte pod PORT A PA0-PA3
SuperDebounce z lekcji 19



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





Przyciski podpięte pod PORT B PB0-PB3
SuperDebounce z lekcji 17


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




Przyciski podpięte pod PORT A PA0-PA3
SuperDebounce z lekcji 17


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





W przypadku kodu SuperDebounce z lekcji 17, którego żywcem skopiowałem, można zauważyć, że klawisze działają z opóźnieniem, a do tego niezależnie od portu klawiszy, zapala się dioda LED3.
Po zmianie fragmentu

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


efekt jest taki, że
- klawisze reagują szybciej (o to chodziło)
- po starcie programu nie zapala się samoczynnie dioda LED3 :shock:
- KEY2 na porcie B nadal nie działa

Wszystko wskazuje na uwalony PB1 Atmegi, do którego podłączony jest klawisz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 12:30 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

Wiesz czego ja NAJBARDZIEJ nie rozumiem ?

w pierwszym przypadku - ten pierwszy filmik gdzie masz podpięte pod PORTB

dioda LED sama ci miga ....

a ty z UPOREM godnym podziwu - dokonujesz jakichś przepastnych dalszych prób z klawiszami, superdebounce, ba! z wieloma klawiszami naraz z timerami programowymi, konfigurowaniem przerwań .... matko jedyna - panie kolego ... halo halo

jakby mi się coś takiego zdarzyło to powiem ci co ja bym zrobił - a ty przemyśl sobie na przyszłość jak warto podchodzić do problemów właśnie w ten sposób ... bo inaczej będziesz tracił nie tylko dni ale miesiące nad rozwiązaniem takich problemów - hmmmm błahych problemów. Jak zawsze mówię - trzeba sobie zawsze dzielić problem na DWA etapy i połówkami eliminować - a nie siedzieć z tym samym kodem albo go przekonfigurowywać i po chwili mieć wszystkiego dosyć


1. pomyślałbym sobie .... OOOO! dioda LED sama miga - a przecież w programie tego nie robię

2. muszę więc sobie odpowiedzieć na DWA PODSTAWOWE PYTANIA.

a.) czy to problem sprzętowy (obojętnie co to dalej miałoby znaczyć)
b.) czy to problem programowy

/* czyli już mam pierwszy podział problemu na DWA - rozumiesz? */

3. wybór sprawdzania pierwszej połówki czy drugiej jest dowolny - ok sprawdźmy najpierw czy to problem programowy

4. odpalę to samo na innych całkiem pinach najlepiej na innym porcie

5. DZIAŁA NA INNYM porcie i pinach .... więc WYWALAM z głowy myślenie że coś z programem nie tak - po co dalej tym sobie głowę zawracać .... od razu mam PODPOWIEDŹ .... problem leży po stronie sprzętowej


6. No dobra - skoro po stronie sprzętowej to znowu trzeba go podzielić na DWA !!! jak ? prosto ....

a.) albo to coś z prockiem
b.) albo to coś z połączeniami

/* zgodzisz się ? */


7. no to sobie patrzę i myślę ... hmmm łatwiej będzie sprawdzić najpierw połączenia - czyli np wyjmuję procka, odpinam wszystko od pinów PORTB i sprawdzam piszczykiem czy nie są np zwarte przez przypadek co czegoś innego - innego sygnału - no cokolwiek .... powinny być nie podłączone do niczego .... po sprawdzeniu - JUŻ MAM PROBLEM Z GŁOWY tzn tą jedną połówkę

8. no to teraz czy to wina procka ? ..... hmmm jak to sprawdzić ? i znowu dzielę problem na DWA !!!

a.) albo mam inny procek pod ręką to wymieniam i sprawdzam - jak działa to już doszedłem do prawdy
b.) jeśli nie mam innego procka to jeszcze nie tragedia - mogę przecież każdy PIN z osobna sprawdzić programowo ale nie na żadnym tam takim moim rozbudowanym programie bo bym KOTA DOSTAŁ ... więc piszę prosty projekt TEST w eclipse i ustawiam po kolei każdy pin na WYJŚCIE i włączam miganie diodą LED co 1 sekundę - sprawdzam czy działa .... Jeśli któryś nie działa - no to też już jesteśmy w domu - pomimo że to smutna wiadomość że pin jest uwalony

jeśli KAŻDY PIN działa i dioda MIGA - hmm dziwne - bo w moim programie jest inaczej ... no to jeszcze sprawdzę jak pin reaguje jako WEJŚCIE np na klawisz i też byle prostym testem sprawdzam - jeden klawisz i jedna dioda bez żadnego superdebounce

hmmm jeśli nie działa ? to też po tym wszystkim mogę podejrzewać procka

no ale co zrobić gdy KAŻDY PIN z OSOBNA działa jako WE i jako WY a w moim programie nie działa to TYLKO NA PORTB ?

no to też już mam podpowiedź ..... kurza melodia - to nie jest więc związane z obsługą klawiszy bo na innych portach działa - tylko być może gdzieś zostawiam jakiś czeski błąd i migam wciąż diodą na jakimś PINB ale chyba dalej dość to już pownien być pryszcz co ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 12:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Jtag wylaczony?

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 13:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

mirekk36 napisał(a):
Wiesz czego ja NAJBARDZIEJ nie rozumiem ?
dioda LED sama ci miga ....
a ty z UPOREM godnym podziwu - dokonujesz jakichś przepastnych dalszych prób z klawiszami, superdebounce, ba! z wieloma klawiszami naraz z timerami programowymi, konfigurowaniem przerwań .... matko jedyna - panie kolego ... halo halo


Mirku to nie jest pierwszy raz kiedy rozwiązuję jakiś tego typu problem, albo debuguję kod.
Te "dalsze próby" jak to nazwałeś wniknęły z podmiany kodu SuperDebounce... w ostatnim przypadku już zgłupiałem czy to od kodu czy od części sprzętowej.
Skoro podmieniam debounce, zmieniam port czyli teoretycznie eliminuję błędy w programie i podejrzenie uwalonego portu a dioda, która powinna być wygaszona, zaświeca się... :roll:

majster napisał(a):
Jtag wylaczony?

Tak.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 13:49 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

xpower napisał(a):
teoretycznie eliminuję błędy w programie i podejrzenie uwalonego portu a dioda, która powinna być wygaszona, zaświeca się...


No tak - ale już w tym momencie właśnie odpuszczam sobie inne testy i koncentruję się tylko na jak najprostszym sprawdzeniu pinu ... o to mi chodziło ;) ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 17:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Mirku ale to że led sam mruga to przyczyna jest znana :)

Zobacz na film kolega ostatniego leda podpiął pod PD0 i może w kodzie ma UARTA i dlatego sama mruga ? :)

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 18:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

Dioda led podpięta pod PD1 zastosowana została jako kontrolka działania programu w mikrokontrolerze (czy czasem uC gdzieś nie zabłądzi :P ) i nie ma nic wspólnego z UARTem, którego obsługi w tym kodzie nie ma. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

xpower napisał(a):
Dioda led podpięta pod PD1 zastosowana została jako kontrolka działania programu w mikrokontrolerze (czy czasem uC gdzieś nie zabłądzi :P ) i nie ma nic wspólnego z UARTem, którego obsługi w tym kodzie nie ma. ;)


no ale dokładnie przez o że została kontrolką to sobie mryga ? ot tak ?

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 19:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2012
Posty: 119
Pomógł: 3

@majster ale o co Ci chodzi ? :P

Dioda kontrolna działa dobrze, tak jak ma działać i myślę, że Mirek nie miał jej na myśli ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 20:24 
Offline
Użytkownik

Dołączył(a): 26 mar 2012
Posty: 26
Pomógł: 0

Już kilka postów wyżej pytałem: " Czy odpowiedni pin portu B jest podciągnięty do 5V", mam tu na myśli pomiar miernikiem!? Drugi testy czy przyciskając przycisk ściągamy go do masy?
Kolejny prosty test, za pomocą IF (przyciśnięto przycisk) zapal led, sprawdzam sprzęt ;)
Wszystko będzie jasne...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 cze 2014, o 20:33 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27352
Lokalizacja: Szczecin
Pomógł: 1042

xpower napisał(a):
i myślę, że Mirek nie miał jej na myśli ;)


Dokładnie ... na pierwszym filmiku widać że zanim zaczniesz klikać klawiszami to ta dioda z lewej sobie sama miga ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO