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



Teraz jest 8 wrz 2025, o 18:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 2 lis 2014, o 12:11 
Offline
Nowy

Dołączył(a): 31 paź 2014
Posty: 12
Pomógł: 0

Witam!

Potrzebuję porady dotyczącej wyświetlacza LED 4x7segmentów.

Staram się ogarnąć temat tak jak w książce, jednak z kilkoma małymi modyfikacjami.

Główną różnicą jest schemat połączenia wyświetlacza. Nie użyłem tranzystorów, co mi ogranicza plątaninę przewodów na płytce (segmenty świecą trochę słabiej - wersja testowa).
Dodatkowo takie podłączenie wymusza ustawienie stanu wysokiego na anodzie i niskiego na katodzie, żeby segment się zaświecił.

Katody podłączyłem do pinów PD1...PD7 w kolejności a,b,c,d...dp, a anody do PC5...PC2, gdzie PC5 to wyświetlacz nr1. //poprawiłem literówkę

Zmodyfikowany kod wygląda następująco:

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



Zmiany w kodzie, które dokonałem to:
d_led.h
-w definicjach portów i pinów wybrałem odpowiednie porty (według mojego podłączenia)
-ustaliłem anody na odpowiednich pinach
-nie ruszałem definicji segmentów, powinienem?

d_led.c:
-w inicjalizacji wyświetlacza zmieniłem wygaszenie anod stanem 0, a nie 1
-zmiana ustawień timerów, mam nadzieję, że zrobiłem to poprawnie (nie mam pewności)
-ustawienie poprawnej (mam nadzieję) definicji przerwania ISR(TIMER2_COMP_vect)
-zrezygnowałem z mask (muszę do nich dojrzeć w kolejnej wersji programu) i usunąłem negację dla ANODY_PORT = licznik zamiast ANODY_PORT = ~licznik

REZULTAT DZIAŁANIA PROGRAMU:
Zaraz po uruchomieniu uC następuje odliczanie na segmentach 3 i 4, wygląda tak:
99
89
79 itd...

Natomiast wyłączenie pętli z kompilacji nie powoduje zapalenia się stanu początkowego, nie świeci się nic.

Tak się we wszystkim poplątałem, że już nie wiem jak to naprawić...

Pozdrawiam.
Nie publikujemy kodów bibliotek, dopuszczalne jest publikowanie pętli głównej oraz wycinków zawierających zmiany

------------------------ [ Dodano po: 32 minutach ]

Cały program razem z bibliotekami jest dostępny tutaj: http://atnel.pl/uaktualnienia-programow-do-dvd.html dlatego pozwoliłem sobie na umieszczenie całości, żeby było bardziej czytelnie.

Ok, w takim razie same zmiany:

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


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


d_led.h <-zmiany na portach i pinach
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 2 lis 2014, o 15:25 przez sadAVR, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:10 
Offline
Użytkownik
Avatar użytkownika

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

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


Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

sadAVR napisał(a):
Katody podłączyłem do pinów PD1...PD7 w kolejności a,b,c,d...dp, a anody do PD5...PD2, gdzie PD5 to wyświetlacz nr1.


Bądź tu mądry i pisz wiersze :/
Dla mnie tu musiała by zachodzić jakaś multipleksowana multipleksacja ;(

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:23 
Offline
Nowy

Dołączył(a): 31 paź 2014
Posty: 12
Pomógł: 0

Fakt, popełniłem błąd przy pisaniu, już poprawiam:
Katody podłączyłem do pinów PD1...PD7 w kolejności a,b,c,d...dp, a anody do PC5...PC2, gdzie PC5 to wyświetlacz nr1.
W podłączeniu nic się nie zmieniło.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Poprawie trochę kolegę kicajek

Nie doczytał pewnie, że masz pierwszy wyświetlacz na PC5, więc:

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


z Niebieskim pozdRowieniem,
Doman89


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:41 
Offline
Użytkownik
Avatar użytkownika

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

doman89 napisał(a):
Poprawie trochę kolegę kicajek Nie doczytał pewnie, że masz pierwszy wyświetlacz na PC5, więc:.....

Fakt, nie doczytałem. Co prawda z przypisaniem PIN'ów w multipleksowaniu istnieje dowolność, ale tu wystąpiło przesunięcie wraz z puszczeniem pod prąd :) . Ciekawe jak pójdzie z maskowaniem ;) .

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

kicajek napisał(a):
Ciekawe jak pójdzie z maskowaniem


Na "C3" ;)

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:47 
Offline
Nowy

Dołączył(a): 31 paź 2014
Posty: 12
Pomógł: 0

Działa! Dzięki wielkie.

W prawdzie liczby wyświetlały się od tyłu, ale poradziłem sobie z tym zmieniając ify(inne metody nie pomagały)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz już chodzi poprawinie

------------------------ [ Dodano po: kilkunastu sekundach ]

doman89 napisał(a):
kicajek napisał(a):
Ciekawe jak pójdzie z maskowaniem


Na "C3" ;)

z Niebieskim pozdRowieniem,
Doman89

O co chodzi? Nie ogarniam :]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 15:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

sadAVR napisał(a):
Działa! Dzięki wielkie.

W prawdzie liczby wyświetlały się od tyłu, ale poradziłem sobie z tym zmieniając ify(inne metody nie pomagały)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz już chodzi poprawinie

------------------------ [ Dodano po: kilkunastu sekundach ]

doman89 napisał(a):
kicajek napisał(a):
Ciekawe jak pójdzie z maskowaniem


Na "C3" ;)

z Niebieskim pozdRowieniem,
Doman89

O co chodzi? Nie ogarniam :]


No if'y to normalne, że trzeba zmienić, więc musisz zrozumieć nasz skrót myślowy, choć rzeczywiście początkujący mógł mieć problem ;)

Co do C3 to zapamiętaj ją, jak będziesz się męczył z maskowaniem w tym przypadku (te przypisanie anod co w/w) może pomóc ;)

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 16:01 
Offline
Użytkownik
Avatar użytkownika

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

Jeśli chodzi o maskowanie, to służy ono ( jak sama nazwa wskazuje :) ) do zamaskowania tego co robią Twoje "PIN'y od multipleksowania" względem całego portu na którym to multipleksowanie wykonujesz ( jak by to powiedział góral " co by'k se nie właziły w droge") Dokładny opis wraz wytłumaczeniem konieczności/celowości stosowania znajdziesz oczywiście w BB. Mój dawny szef mawiał:" wszystko jest napisane tylko wam k... nie chce się czytać :lol: ".
Jeśli doszedłeś do multipleksownia do gdzieś po drodze musiałeś się o to otrzeć.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 19:58 
Offline
Moderator
Avatar użytkownika

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

sadAVR napisał(a):
O co chodzi? Nie ogarniam :]


oooo panie - to jak NAJSZYBCIEJ zabierz się za oglądanie poradników z bloga - szczególnie ten ci się przyda

http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html

uwierz po nim zrozumiesz o co chodzi z maskowaniem ... a jeśli jeszcze nie to już będziesz przynajmniej wiedział o co konkretnie dopytać

_________________
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: 4 lis 2014, o 11:37 
Offline
Nowy

Dołączył(a): 31 paź 2014
Posty: 12
Pomógł: 0

Moje oczy 0_o

Postarałem się ogarnąć tę maskę, wyszło mi 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.


Czy zmodyfikowałem ją prawidłowo? Program testowy działa poprawnie, jednak chciałbym się upewnić czy jest wszystko ok.

I jeszcze jedna kwestia, czy dobrze rozumiem maskowanie:
W funkcji przerwania maska nałożona jest po to, żeby to przerwanie nie interesowało się, co dzieje się na innych (nieużywanych w przerwaniu) pinach tego portu. Co z kolei pozwala mi podłączyć WE/WY do wolnych pinów (zupełnie niezwiązane z przerwaniem).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2014, o 11:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Tak maska "zasłania" piny które nie biorą udziału w multipleksowaniu.

Jest to bardzo ważne, np. jeżeli byś miał podłączony czujnik DS18B20. Jak byś mu co chwila podczas transmisji ustawiał pin na "0", to on by Cie miał głęboko w (Y) i mógłbyś czekać na dane przesyłane od niego, były by tylko errory, pomimo tego, że kod byłby sprawdzony jaki i połączenia.

z Niebieskim pozdRowieniem,
Doman89


------------------------ [ Dodano po: 3 minutach ]

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


Wystarczy tylko ten kod przed if'ami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lis 2014, o 12:58 
Offline
Nowy

Dołączył(a): 31 paź 2014
Posty: 12
Pomógł: 0

Witam ponownie.

Od ostatniego postu wzbogaciłem układ o woltomierz, mam z nim jednak lekki problem.

Obarczony jest dość sporą niedokładnością (niedomiar sięgający czasem 200mV) i wariującymi cyferkami (nie chodzi tylko o szalejące wartości napięcia, a fakt, że czasem cyfry wyświetlają się błędnie - brakuje którejś diody).

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


funkcja wyświetlająca wynik na wyświetlaczu LED:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdzie może tkwić problem?
-mogłem coś skopać w programie,
-cudowne właściwości płytki stykowej,
-kiepskie zasilanie z USB,
-anody wyświetlacza i woltomierz podpięte do PORTU C (nie mam gdzie przenieść anod),
-anody wyświetlacza podpięte bezpośrednio do pinów procesora (nie przez tranzystory - diody nie świecą tak mocno),
-niedokładność pomiarów spowodowana dzielnikiem napięć <- tolerancja rezystorów

Oczywiście używając ADC posłużyłem się schematem zasilania z bloga (kondensatory, dławik są).

Co chciałbym osiągnąć:
-w miarę dokładne wyniki pomiarów,
-pozbycie się źle wyświetlanych liczb,
-zmniejszenie częstotliwości wyświetlania wyników - przez to, że zmieniają się tak szybko, źle się odczytuje wartości (próbowałem to osiągnąć preskalerem 128, to za mało, delay'e nie wchodzą w grę)

Testując układ w różnych konfiguracjach wychodzi na to, że wyniki bliższe rzeczywistości dostaję przy napięciu odniesienia VCC...

Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lis 2014, o 13:29 
Offline
Moderator
Avatar użytkownika

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

sadAVR napisał(a):
Co chciałbym osiągnąć:
-w miarę dokładne wyniki pomiarów,
-pozbycie się źle wyświetlanych liczb,
-zmniejszenie częstotliwości wyświetlania wyników - przez to, że zmieniają się tak szybko, źle się odczytuje wartości (próbowałem to osiągnąć preskalerem 128, to za mało, delay'e nie wchodzą w grę)

to może zacznij od DOKŁADNEGO obejrzenia tego:

https://www.youtube.com/playlist?list=P ... 5hRnig_f23

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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