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



Teraz jest 11 lut 2025, o 15:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 23 gru 2014, o 14:22 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 4
Pomógł: 0

Witam.
To mój pierwszy post więc proszę o wyrozumiałość. Zacząłem się trochę bawić w ćwiczenia z niebieskiej książki multi_led.
Zmodyfikowałem kod programu pod atmegę 8 tylko podłączyłem sobie ośmiocyfrowy wyświetlacz led i chciałbym mieć taki licznik do czy od 0-99999999. Siedzę już drugi dzień i nie potrafię sobie wytłumaczyć dlaczego nie chce mi to działać. to znaczy działa multipleksowanie, cyfry inicjalizujące się poprawnie wyświetlają a sam licznik działa tylko wyświetla jakieś głupoty na pierwszych dwóch cyfrach a po 45000 znowu głupoty na trzeciej i czwartej cyfrze gdy wrócę do wersji na cztery cyfry jest ok. O co tu chodzi?
zamieszczam kod nie wiem czy mi się uda poprawnie to wstawić:)

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: 23 gru 2014, o 17:28 
Offline
Użytkownik
Avatar użytkownika

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

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

Pokaż w jaki sposób robisz multipleksowanie.

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 18:48 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 4
Pomógł: 0

Jestem Bardzo początkujący robię ćwiczenia z książki Mirka i właściwie na dowolny wyświetlacz z ośmiu mogę wyrzucić dowolny znak czy cyfrę multipleksowanie działa bo mogę jednocześnie na każdej z cyfr coś sobie wyświetlić tylko ten licznik mi jakoś nie działa. Ten na cztery cyfry czyli 9999 działa w górę i w dół (na dowolnej czwórce cyfr 2345,4567 itp.) a już na pięć i wyżej działa dziwnie. Spróbuje jeszcze tego co podpowiadasz.



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




Wrzucę jeszcze ten licznik na cztery.

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: 23 gru 2014, o 19:09 
Offline
Użytkownik
Avatar użytkownika

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

Mając osiem wyświetlaczy ten zapis jest błędny:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W związku z tym, że masz ich osiem a nie cztery to musisz ustawić na całym PORTB stan wysoki:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 19:24 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 4
Pomógł: 0

Kolego kicajek bardzo Ci dziękować za twój pomysł. Wszystko śmiga tak jak powinno. Niby prosty licznik a cieszy:) Też trochę myślałem o tym 'modulo' bo jak liczyłem już nawet na piechotę ten licznik to coś mi się zaczynało nie zgadzać, zaczynały mi wychodzić miliony i dalej z resztą po przecinku ja dopiero pomalutku stawiam pierwsze kroki.
Pozdrawiam serdecznie i życzę WESOŁYCH ŚWIĄT.

------------------------ [ Dodano po: 13 minutach ]

Trochę nie bardzo rozumiem
ANODY_PORT = 0xFFFF; Bo przecież jest osiem wyświetlaczy i osiem anod a nie 16? I jak zmieniam to kompilator zgłasza błąd.
W każdym razie Twój poprzedni sposób działa:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 20:05 
Offline
Użytkownik
Avatar użytkownika

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

sprubuj wstawić
ANODY_PORT = 0xFF;



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 20:16 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 4
Pomógł: 0

Zaba napisał(a):
sprubuj wstawić
ANODY_PORT = 0xFF;



A to się zgadza. Tamten zapis ANODY_PORT = (ANODY_PORT & 0xFF); miał ewentualnie maskować bity których bym nie używał a ponieważ wykorzystuje cały port to masz rację. Dzięki. Ale i tak ten pierwszy licznik nie chce działać prawidłowo. To co podpowiedział kicajek to działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2014, o 20:45 
Offline
Użytkownik
Avatar użytkownika

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

Sory :oops:
kicajek napisał(a):
W związku z tym, że masz ich osiem a nie cztery to musisz ustawić na całym PORTB stan wysoki:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

...za karę zjem kawałek koszulki termokurczliwej :P .
Dobrze myślałem tylko tych F'ów natrzaskałem ....

Dzięki za życzenia ja również życzę zdrowych wesołych świąt.

Pozdr.



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

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