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



Teraz jest 16 lis 2024, o 01:29


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 17 sty 2021, o 17:58 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Witam

Mam problem z klawiszami podłączonymi do PORTU C
z którego jest już sterowany wyświetlacz LCD
po magistrali sprzętowej I2C z pinów SDA - SCL
Klawisze są podłączone do pinów PC2,PC3,PC4
te wyjścia procka są ustawione jako wejścia dla
klawiszy
Program nie zgłasza błędów niby jest OK ale
mimo że klawisz nie jest wciśnięty do GND to cały czas
zachowuje się tak jak by był i wywołuje mi funkcję
zamieszczoną w obsłudze klawisza

Czy ktoś z kolegów może podpowiedzieć dlaczego tak jest ?

OTO KOD
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: 17 sty 2021, o 18:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 187
Pomógł: 10

Proszę pokazać schemat w jaki sposób zostały podłączone klawisze do mikrokontrolera. Jaki to mikrokontroler?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2021, o 19:16 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Procek to Atmega 32A

a schemat to niema nawet co rysować zwykły mikro przełącznik
jednym końcem podłączony do wyjść procka a drugim do GND

Ten sam fragment kodu działa poprawnie na porcie D
Dlatego nie rozumiem dlaczego nie działa na porcie C
może ma to związek z I2C na tym porcie
A le to by było nie logiczne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2021, o 19:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 187
Pomógł: 10

miki53 napisał(a):
Procek to Atmega 32A


Podany mikrokontroler domyślnie ma włączony interfejs JTAG. Wyprowadzenie interfejsu JTAG znajdują się na pinach 24, 25, 26 i 27 (obudowa DIP40). Wspomniane piny korespondują odpowiednio do PC2, PC3 PC4 i PC5. Rozwiązanie to wyłączenie interfejsu JTAG.

Aby wyłączyć interfejs JTAG w mikrokontrolerze Atmega32A należy w rejestrze MCUCSR dla bitu JTD (bit nr 7), wpisać wartość 1.

Obrazek


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2021, o 23:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1029
Lokalizacja: Trójmiasto
Pomógł: 189

Draxter32 napisał(a):
Aby wyłączyć interfejs JTAG w mikrokontrolerze Atmega32A należy w rejestrze MCUCSR dla bitu JTD (bit nr 7), wpisać wartość 1.
Lub poprostu wyłączyć go w fusebitach i z głowy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2021, o 18:22 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Niestety to nic nie daje, funkcje zawarte w obsłudze klawiszy
są nadal wywoływane tak jakby klawisz był wciśnięty


Tak mam ustawione ten rejestr
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 sty 2021, o 19:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1029
Lokalizacja: Trójmiasto
Pomógł: 189

Czytałeś ze zrozumieniem opis wyłączenia JTAGa poprzez rejestr MCUSR? Bo coś mi się wydaje że nie do końca. Zgodnie z tym, co jest napisane na obrazku wrzuconym przez kolegę Draxter32 należy dwukrotnie zapisać bit JTD do rejestru MCUCR w przeciągu 4 cykli zegarowych. Pojedynczy zapis:
miki53 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

nie wyłączy JTAGa!
Wyłącz go jak pisałem wyżej w fusach i po problemie.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2021, o 19:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

Kiedyś dawno temu wyłączałem JTAGa przez wpis do rejestru. Tak, jak zauważył xentis, dopiero dwukrotne wpisanie tego polecenia powoduje, że to zadziała (miałem na tych pinach podłączony wyświetlacz 16x2 i działał poprawnie)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 08:18 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Podwójne wpisanie do rejestru pomogło, klawisz zaczął działać
Pojawił się nowy efekt , po wciśnięciu i przytrzymaniu klawisza
włącza się i wyłącza a ma przy pierwszym naciśnięciu ma diodę włączyć
przy drugim wyłączyć
Te sekwencje odbywają się przy jednorazowym naciśnięciu

Co najciekawsze że ten efekt przeniósł się również na port PD7
Macie jakieś pomysły jak z tą zarazą walczyć ? ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 11:31 
Offline
Moderator
Avatar użytkownika

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

Problem stary jak świat AVRów, wałkowany na każdym prawi forum i na naszym milion razy ;) wyłącza się JEDEN fusebit w MkAvrCalculatorze w atmegach które go mają i po problemie

Obrazek


Autor postu otrzymał pochwałę

_________________
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: 19 sty 2021, o 11:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 187
Pomógł: 10

miki53 napisał(a):
Podwójne wpisanie do rejestru pomogło, klawisz zaczął działać

To dobra wiadomość. Gratulacje!

miki53 napisał(a):
Podwójne wpisanie do rejestru pomogło, klawisz zaczął działać
Pojawił się nowy efekt , po wciśnięciu i przytrzymaniu klawisza
włącza się i wyłącza a ma przy pierwszym naciśnięciu ma diodę włączyć
przy drugim wyłączyć
Te sekwencje odbywają się przy jednorazowym naciśnięciu

Co najciekawsze że ten efekt przeniósł się również na port PD7
Macie jakieś pomysły jak z tą zarazą walczyć ? ;)

Brzmi jak Switch Debouncing. Nie analizowałem kodu zamieszczonego w pierwszym poście ale czy drgania styków są eliminowane w jakikolwiek sposób?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 11:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

Trzeba śledzić zarówno wciśnięcie jaki zwolnienie przycisku oraz dodać maszynę stanów która ma warunek uprzedniego zwolnienia przycisku. Warto też zaprowadzić jakiś porządek w KODzie, czyli przede wszystkim wydzielić funkcjonalność przycisku do odrębnego modułu i go zuniwersalizować.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


KOD podzielony na strawne kawalki. Każdy switch ma swoją, a zarazem typową konfigurację. Coś wreszcie widać.


Autor postu otrzymał pochwałę

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 13:00 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

fofex napisał(a):
Trzeba śledzić zarówno wciśnięcie jaki zwolnienie przycisku oraz dodać maszynę stanów która ma warunek uprzedniego zwolnienia przycisku. Warto też zaprowadzić jakiś porządek w KODzie, czyli przede wszystkim wydzielić funkcjonalność przycisku do odrębnego modułu i go zuniwersalizować.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


KOD podzielony na strawne kawalki. Każdy switch ma swoją, a zarazem typową konfigurację. Coś wreszcie widać.


Fajnie napisany kod. Podoba mi się


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 14:47 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Dzięki wszystkim za pomoc i zainteresowanie się moim problemem

Efekt wielokrotnego powtarzania wyzwalania klawisza przy jednokrotnym naciśnięciu będę
musiał wyeliminować sobie w inny sposób

Zastanawiam się dlaczego ten efekt rozszerzył się na PORT D
kiedy przed wyłączeniem interfejsu JTAG był tylko na PORCIE C



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 15:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

A gdzie w pliku main.c masz funkcję główną programu? Powinna wyglądać tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

U ciebie jest ale bez argumentu (void) w linii 36.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 19:16 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Czy można wyeliminować wpływ interfejsu JTAG np PORT D
a konkretnie na pin PD7 ?

Jeśli tak to jak ?

Patrząc na PDF to PORT D nie powinien reagować na JTAG
ale jednak PD7 reaguje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2021, o 20:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1029
Lokalizacja: Trójmiasto
Pomógł: 189

miki53 napisał(a):
Czy można wyeliminować wpływ interfejsu JTAG np PORT D
Ale JTAG to nie jakiś szkodnik co to, gdy go przepędzisz z jednego miejsca idzie w drugie. Jeśli został wyłączony to definitywnie i na pewno nie przeniósł swoich sygnałów na inne piny. Tym bardziej na PORTD. Na pinie PD7 jedyne co jest dodatkowo to wyjście Compare Match timera2. Może przypadkowo włączyłeś ten timer w tryb, który steruje pinem PD7?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sty 2021, o 09:02 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

xentis napisał(a):
miki53 napisał(a):
Czy można wyeliminować wpływ interfejsu JTAG np PORT D
Ale JTAG to nie jakiś szkodnik co to, gdy go przepędzisz z jednego miejsca idzie w drugie.


:lol: :lol: :lol: Dobre :lol: :lol: :lol:

Pokaż cały aktualny kod, może się pomyliłeś w konfiguracji tego pinu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sty 2021, o 10:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

miki53 napisał(a):
po wciśnięciu i przytrzymaniu klawisza
włącza się i wyłącza a ma przy pierwszym naciśnięciu ma diodę włączyć
przy drugim wyłączyć

Zastanów się co się dzieje gdy ta sama zmienna key_lock jest zastosowana przy różnych przyciskach.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sty 2021, o 11:48 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 423
Lokalizacja: Puck
Pomógł: 7

Dzięki fofex

Zmiana nazwy dla zmiennej key_lock pomogła i wszystko działa normalnie :D



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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