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



Teraz jest 25 lut 2025, o 17:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 12 lut 2015, o 17:06 
Offline
Nowy

Dołączył(a): 21 sty 2015
Posty: 6
Pomógł: 0

Witam
Chciałbym wykonać program, który by zmieniał wartość liczby na wyświetlaczu 7 seg, ale nie za bardzo wiem jak...

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


Zawiera ona wartości liczbowe w systemie szesnastkowym do ustawienia portu, tak by wyświetlić konkretną liczbę (te sprawdziłem każde z osobna i działają).
Całość będzie oparta na przerwaniach.
Naciskając jeden z dwóch przycisków wybieramy dodanie, lub zmniejszenie wartości liczby. Gdy na wyświetlaczu pojawia się wartość 9 i dodajemy wartość, nie przechodzi do zera. Tak samo z odejmowaniem przy zerze.

Nie wiem co mogę dalej zrobić, jak mogę wykorzystać tą tablicę... Czy mógłby ktoś mi podsunąć jakiś pomysł?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2015, o 17:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 mar 2014
Posty: 356
Lokalizacja: Pruszków
Pomógł: 15

Witaj

Proponował bym obejrzeć sobie dwa poradniki

http://mirekk36.blogspot.com/2014/05/mikrokontrolery-avr-jak-zaczac-wprawki.html
http://mirekk36.blogspot.com/2014/06/wprawki-w-c-z-diodami-led-i-klawiszem.html

Ja dzięki nim nauczyłem się używać tablic :)
No chyba, że Kolega potrzebuje gotowe rozwiązanie to proszę o napisanie w dziale rybnym.

Pozdrawiam Paweł.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2015, o 18:46 
Offline
Nowy

Dołączył(a): 21 sty 2015
Posty: 6
Pomógł: 0

Dzięki wielkie - kolega wyżej!

Ale problemów ciąg dalszy... Mogę tylko zwiększać liczbę.

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


Zauważyłem, że na pinie INT0 nie działa nawet przerwanie z inkrementacją. Z dekrementacją też nie działa.
Oba piny INT0 i INT1 są połączone wg. poradników Mirka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2015, o 18:50 
Offline
Użytkownik
Avatar użytkownika

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

a dlaczego używasz int0 i int1 to jakiś zamierzony cel ?

nie lepiej zdefiniować sobie klawisze i napisać funkcje ?


zobacz tak

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

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2015, o 19:02 
Offline
Nowy

Dołączył(a): 21 sty 2015
Posty: 6
Pomógł: 0

Jestem akurat przy nauce obsługi przerwań. Uznałem, że to ćwiczenie które wykonuję, będzie ok, dlatego ich używam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2015, o 19:10 
Offline
Użytkownik
Avatar użytkownika

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

do nauki przerwań bardziej pobawiłbym się np nie dokładnym zegarkiem na przerwaniach lub zastąpieniem delay poprzez przerwanie bądź eliminację drgań styków na przerwaniach

przerwania int zostaw na później to nie jest dobry pomysł na przycisk.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2015, o 19:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

@majster ma rację ja tylko dodam
że zwiększanie i zmniejszanie mogą Ci działać ale
przez drgania styków przycisków mogą przyjmować skrajne
wielkości.
Nie wiem jakich przycisków używasz ale kiedyś z ciekawości
obejrzałem przycisk w akcji na oscyloskopie to po jednym przyciśnięciu
potrafił drgać 20 i więcej razy :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2015, o 10:25 
Offline
Użytkownik
Avatar użytkownika

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

Przetestuj sobie jeszcze 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.



Nie mniej nie jest to optymalne rozwiązanie ale na testy powinno ci wystarczyć.


Przyglądnij się jeszcze inicjalizacji przerwań int bo cosik mi tu nie pasuje.

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


czy nie 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.


Autor postu otrzymał pochwałę

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2015, o 13:29 
Offline
Nowy

Dołączył(a): 21 sty 2015
Posty: 6
Pomógł: 0

Słuszna uwaga. Teraz INT0 i INT1 działają jak należy. Dzięki



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2015, o 13:55 
Offline
Użytkownik
Avatar użytkownika

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

Cieszę się że mogłem pomóc nie mniej nie od razu zauważyłem tę różnicę w kodzie :)

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



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 8 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