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



Teraz jest 21 sty 2026, o 13:43


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 26 wrz 2014, o 21:22 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Witam,
mam pewien problem z wyświetlaczem, a mianowicie chciałbym aby na wyświetlaczu 7 segmentowym po przyciśnięciu przycisku liczba wyświetlana wzrastała o 1. Kolejno od 0 do 9 i w kółko. Z tym, że po przyciśnięciu przycisku z kodem jak poniżej zupełnie nic się nie dzieje. Jeśli zmienię typ zmiennej j wyskakują krzaki. Jestem początkujący w programowaniu AVRów i nie bardzo orientuję się gdzie może być błąd. Dla mnie wszystko wygląda w miarę logicznie ale działać nie chce :P
Proszę o pomoc.

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



Ostatnio edytowano 26 wrz 2014, o 21:28 przez Vroobee, łącznie edytowano 1 raz

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

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

Vroobee napisał(a):
bit_is_clear


polecam ci jak najszybciej zapomnij o takich "wynalazkach" i zakop je pół metra pod ziemią - jeśli chcesz pisać dobrze i wygodnie programy. Zajrzyj lepiej do Bluebooka na funkcję SuperDebounce() ... a jeśli jeszcze na tym etapie jest to za trudne to koniecznie poczytaj i zobacz to:

http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

_________________
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: 26 wrz 2014, o 23:00 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Rozumiem, z artykułem już się zapoznałem. Ale czy to może być powodem braku inkrementacji zmiennej ? Czy ten kod (nie licząc felernego bit_is_clear, którego notabene nauczyli mnie na studiach) ma szanse na powodzenie, czy może rozwiązać to w jakiś inny sposób ?

P.s. niestety nie jestem posiadaczem bluebook'a, czego żałuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2014, o 23:17 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

a na studiach juz nie ucza jak rozwiazywac problemy?
- czy sprawdziles czy przerwanie dziala dobrze
- czy sprawdziles czy reczne ustawienie zmiennej j na wartosc inna niz 0 dziala dobrze



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2014, o 23:27 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Oczywiście, że sprawdzałem.
1) jeśli chodzi o przerwanie, timera użyłem do multiplikacji ponieważ docelowo mają być 4 wyświetlacze. Wszystko działa sprawnie (przynajmniej tak mi się wydaje). Możliwe jest ustawienie różnych cyfr na różnych wyświetlaczach, odliczanie cyfr w górę i w dół. Chyba, że poprawne działanie to coś innego.
2) zmiana wartości zmiennej j również działa. Jeśli zmienię ją nie ważne czy w momencie inicjacji zmiennej czy później w bloku programu, zawsze wyświetla wartość zadeklarowaną przeze mnie. Tylko jak dołączę do tego inkrementację zupełnie przestaje i wyświetla tylko stan początkowy (czyli 0).
Działa nawet coś takiego (przy niezmienności reszty kodu):
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: 27 wrz 2014, o 08:22 
Offline
Użytkownik
Avatar użytkownika

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

Kolego poszukaj na forum bo juz temat byl poruszany i w tamtym temacie napisalem kod ze wcisniecie klawisza zwieksza zmienna o 1 w zakresie od 0 do 9 na wyswietlaczu 7segment.

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 09:18 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Vroobee napisał(a):
Oczywiście, że sprawdzałem.
1) jeśli chodzi o przerwanie, timera użyłem do multiplikacji ponieważ docelowo mają być 4 wyświetlacze. Wszystko działa sprawnie (przynajmniej tak mi się wydaje). Możliwe jest ustawienie różnych cyfr na różnych wyświetlaczach, odliczanie cyfr w górę i w dół. Chyba, że poprawne działanie to coś innego.
2) zmiana wartości zmiennej j również działa. Jeśli zmienię ją nie ważne czy w momencie inicjacji zmiennej czy później w bloku programu, zawsze wyświetla wartość zadeklarowaną przeze mnie. Tylko jak dołączę do tego inkrementację zupełnie przestaje i wyświetla tylko stan początkowy (czyli 0).
Działa nawet coś takiego (przy niezmienności reszty kodu):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Owszem działa bo jedyna rzecz jak ma się stać to wyświetlenie cyfry 4, więc nie ważne czy wciśniesz przycisk na krótko czy też na dłużej i tak do wykonania jest tylko ta jedna i ta sama operacja.
Zobacz jak na Mirka blogu jest opisana sprawa "drgających styków" i w jaki sposób jest ten problem rozwiązany

http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html

Tak na próbę, spróbuj dodać jakieś opóźnienie _delay_ms() po poleceniu j++;


Tak teraz patrzę na Twój kod, a gdzie zerujesz zmienną "kanal" ? Bo z tego co widzę to w przerwaniu jest on inkrementowana, więc na mój rozum "case 0" wykona się raz przy starcie programu, a potem już się nie wykona bo zmienna "kanal" będzie miała wartość różną od zera.

_________________
http://www.marcingibas.pl



Ostatnio edytowano 27 wrz 2014, o 09:25 przez Marcin_G, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 09:22 
Offline
Użytkownik
Avatar użytkownika

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

post78545.html#p78545 zobacz ten temat nawiązujący do wideo:


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 09:36 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

no to teraz wystarczy zainteresowac sie przyciskiem. juz dwa razy w temacie padl link do drgan stykow. tam tkwi diabel. :)
sugeruje poczytac. dobra tresciwa lektura



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 10:46 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Zainteresowałem się przyciskiem i DZIAŁA :) na razie na jednym wyświetlaczu. Teraz próby z resztą :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 10:50 
Offline
Użytkownik
Avatar użytkownika

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

Pokaż kolego kod to coś ci podpowiemy co i jak czy w dobrą stronę teraz idziesz ...


Autor postu otrzymał pochwałę

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 12:19 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Proszę bardzo.
Na razie wszystko działa tak jak oczekiwałem, że będzie działać :) jedyny mankament jest taki, że np. jeśli wszędzie są wyświetlone jedynki i chcę zmienić na jednym wyświetlaczu cyfrę na 2 to na którymś obok na sekundę zapalają się segmenty z cyfry 2.

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: 27 wrz 2014, o 14:05 
Offline
Moderator
Avatar użytkownika

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

Vroobee napisał(a):
PORTD = KEY1|KEY2|KEY3|KEY4|KEY5|KEY6|KEY7|KEY8|KEY9;   //podciagniecie na stan wysoki na przyciskach


no no nooo... 9 klawiszy na 8-bitowym porcie D, tego jeszcze nie był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: 27 wrz 2014, o 15:25 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

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


:P z rozpędu się napisało.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 15:58 
Offline
Użytkownik
Avatar użytkownika

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

Ze tak zapytam na co ci 9 nacisi jak mozna to zrobic na 3?

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2014, o 16:35 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Chciałem żeby każdy wyświetlacz mógł mieć osobne zliczanie w górę i w dół i osobny przycisk od zerowania. Wyświetlacze są 4, 4 x 2 = 8 no i dodatkowo zerowanie. Nie bardzo wiem jak coś takiego rozwiązać na 3 :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2014, o 09:14 
Offline
Użytkownik
Avatar użytkownika

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

1 przycisk gora, 2 przycisk dol, 3 przycisk przelaczanie wyswietlacza. Dluzsze przytrzymanie przycisku 3 zerowanie danego wyswietlacza.

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2014, o 08:51 
Offline
Użytkownik

Dołączył(a): 25 wrz 2014
Posty: 137
Lokalizacja: Konin/Poznań
Pomógł: 0

Przy następnej okazji pomyślę nad tym rozwiązaniem bo nie jest wcale głupie :) Dzięki majster ;)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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