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



Teraz jest 11 sty 2025, o 00:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 14 cze 2014, o 10:17 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Witam, mam taki problem, ponieważ utworzyłem sobie strukturę o nazwie mysz, a w niej zawarłem zmienne takie jak pozycja myszy, przyciski i vid i pid.

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.


Natomiast mam warninga, że wszystkie zmienne są niewykorzystane, a jest i error - "byte0 undeclared (first use in this function)

proszę was o pomoc.
Pozdrawiam

_________________
Mam 16 lat, nie jestem zawodowcem ;)



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

Dołączył(a): 18 lut 2014
Posty: 53
Lokalizacja: Kraków
Pomógł: 0

A co z rejestrem GICR do obsługi przerwań zewnętrznych ?



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

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Poprawiony kod:

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

_________________
Mam 16 lat, nie jestem zawodowcem ;)



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

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

DamCos napisał(a):
Poprawiony kod:


Panowie, panowie .... no z taką oszczędnością słów - to ciężko dyskutować .... bo skoro poprawiony kod to działa czy nie działa ? wypadałoby chyba dopisać hmmm ?

A jeśli nie działa - to :

1. gdzie masz globalne zezwolenie na przerwania sei(); ???
2. gdzie masz pan pętlę główną programu ? bez niej (jako PODSTAWOWEGO składnika programu dokładniej funkcji main() .. będziesz miał bardzo dziwne efekty ... a wydaje mi się że już w innym wątku też tobie o tym podpowiadałem ;)

_________________
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 11:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 wrz 2012
Posty: 73
Pomógł: 2

W pierwszym poście w kodzie masz zadeklarowaną zmienną byte0 jako volatile, ale w int main(), musisz stworzyć ją jako globalną przed int main.



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

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

A więc: podziękuję panu Mirkowi za oświecenie z tą pętlą główną :D

Sheep: przerzuciłem te deklaracje "na górę" i wszystko działa.

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


Działa to tak:

Po podłączeniu zapala się czerwona dioda (PB1) sygnalizująca brak wykrycia myszki. Po wyświetleniu napisu "Myszka USB" program szuka myszki, tzn sprawdza, czy mysz zgłosiła się za pomocą przerwania. Jeśli tak, to zapala się zielona dioda. problem wciąż polega na tym, że po wyjęciu i włożeniu kabla do myszki program cofa się z powrotem na górę, tzn pojawia się napis "Mysz USB" i dioda robi się znów czerwona i tak dalej.

Czy wiecie panowie jak to naprawić?
Z góry dzięki :)

_________________
Mam 16 lat, nie jestem zawodowcem ;)



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

Dołączył(a): 02 wrz 2012
Posty: 73
Pomógł: 2

To medzia 16/32 tak?
Wygląda na to, że z jakiegoś powodu medzia przy odłączeniu dostaje reset, jak z filtracją zasilania u Ciebie?
A tak w ogóle, to po ustawieniu pinu PD3 na wejście ustaw ten pin na 0 instrukcją PORTB&=~(1<<PB3) skoro ustawiłeś MCUCR na zbocze narastające. Nie możesz ustawić tej myszki by wystawiała 0 i MCUCR na zboczę opadające?

Sheep



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

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Sheep napisał(a):
To medzia 16/32 tak?
Wygląda na to, że z jakiegoś powodu medzia przy odłączeniu dostaje reset, jak z filtracją zasilania u Ciebie?
A tak w ogóle, to po ustawieniu pinu PD3 na wejście ustaw ten pin na 0 instrukcją PORTB&=~(1<<PB3) skoro ustawiłeś MCUCR na zbocze narastające. Nie możesz ustawić tej myszki by wystawiała 0 i MCUCR na zboczę opadające?

Sheep


Atmega 32.

Jak mam ustawić myszkę na zbocze opadające? Raczej się nie da. Czy piny przerwań trzeba podciągać?

Dodałem 3x 100 uF i już nie spada napięcie (zasilam z programatora na czas testów).

------------------------ [ Dodano po: 4 minutach ]

[quote="DamCos"][quote="Sheep"]To medzia 16/32 tak?
Wygląda na to, że z jakiegoś powodu medzia przy odłączeniu dostaje reset, jak z filtracją zasilania u Ciebie?
A tak w ogóle, to po ustawieniu pinu PD3 na wejście ustaw ten pin na 0 instrukcją PORTB&=~(1<<PB3) skoro ustawiłeś MCUCR na zbocze narastające. Nie możesz ustawić tej myszki by wystawiała 0 i MCUCR na zboczę opadające?

Sheep

Atmega 32.

Jak mam ustawić myszkę na zbocze opadające? Raczej się nie da. No chyba, że z kostką 74LS04, bo akurat taką mam. Czy piny przerwań trzeba podciągać?

Dodałem 3x 100 uF i już nie spada napięcie (zasilam z programatora na czas testów).

_________________
Mam 16 lat, nie jestem zawodowcem ;)



Ostatnio edytowano 14 cze 2014, o 20:23 przez DamCos, łącznie edytowano 1 raz

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

Dołączył(a): 02 wrz 2012
Posty: 73
Pomógł: 2

Nie wiem jak ustawić myślałem, że można. Po prostu procesorowi "łatwiej" jest wykryć stan niski jako pin.


DamCos napisał(a):
Czy piny przerwań trzeba podciągać?


Jeśli miałbyś wykrywać stan niski to wtedy musisz podciągnąć, bo wtedy panowałby ciągle stan niski i przerwanie ciągle by się wykonywało, dlatego podciągasz pull upem. Jeśli przerwanie jest ustawione (tak jak teraz masz) na wykrywanie narastającego ( z 0 na 1) to musisz mieć port ustawiony na 0, logiczna jedynka wysterowana z myszki generuje przerwanie.

Łapiesz? :)

EDIT: popraw post bo zdublowałeś cytat.
EDIT2: przeciętna myszka zjada ok 100ma jeśli nie masz wodotrysków w postaci świecącej obudowy, 400ma zostaje na medzie co jest sporym zapasem, nadal Ci resetuje przy odłączeniu? to nie rób tego ;)



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

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

A ok, łapię :D
Po dodaniu kondensatorów nic się nie resetuje :)

_________________
Mam 16 lat, nie jestem zawodowcem ;)



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

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