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



Teraz jest 20 mar 2026, o 02:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 8 lip 2016, o 10:32 
Offline
Nowy

Dołączył(a): 06 lip 2016
Posty: 14
Pomógł: 0

Mam problem z obsluga wyswirtlacza FJ5461BH za pomoca Atmega32 o taktowaniu 11059200Hz . Program z ksiazki Pana Mirka skompilowalem i na 4 wyswietlaczach pokazuja sie te same segmenty. Co mam w takim przypadku zrobic ??

Prosze o wytlumaczenie tego fragmentu kodu:
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 8 lip 2016, o 11:38 przez Haytham, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 10:44 
Offline
Użytkownik
Avatar użytkownika

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

Zle umieszczony kod.

Delay w while i licznik-- to złe rozwiązanie.

Wyświetlacz jest sterowany anodą czy katodą?
Czy rozkład pinów segmentów jest taki sam jak w książce ?

Sprawdz te rzeczy.

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 10:54 
Offline
Nowy

Dołączył(a): 06 lip 2016
Posty: 14
Pomógł: 0

sterowany jest anoda, program nie ruszany identyczny z ksiazki , w takim razie dlaczego mialby Pan Mirek zly kod podawac ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 11:05 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3230
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

topic7402.html

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 12:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1188
Lokalizacja: Kraków
Pomógł: 95

A podłączyłeś dokładnie tak, jak w książce? Przez tranzystory? Wstaw zdjęcie tego, co Ci się wyświetla.
Ten program odlicza na poszczególnych segmentach wartości od 6000 do 0 (właściwie od 5999). Ten fragment kodu, który podałeś, oblicza cyfrę na każdy wyświetlacz. Najpierw odejmuje 1 od licznika
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Następnie dzieli liczbę z licznika przez 1000 i jeżeli jest różna od zera wpisuje tą wartość jako pierwszą cyfrę, a jeżeli jest równa 0, wyświetlacz będzie pusty
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Następnie "pozbywa" się wartości większych od 1000 i dzieli przez 100 (żeby obliczyć drugą cyfrę)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to jest to samo co funkcja if(). Równoznaczny zapis tej funkcji to:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dalej masz obliczenie trzeciej i czwartej cyfry. Następnie opóźnienie 10 ms. I ostatnia operacja: jeżeli licznik jest równy 0, przypisuje mu wartość 6000.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 12:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 mar 2015
Posty: 116
Pomógł: 16

Haytham napisał(a):
..... i na 4 wyswietlaczach pokazuja sie te same segmenty....

Nie ma wprawdzie BB ,ale kojarzę jak działa multipleksowanie 4 cyfr 7-mo segmentowych (plus kropka ;) ).
Zakładając ,że sprzętowo wyświetlacz jest podłączony prawidłowo ; objaw wskazywałby na usterkę programową polegającą na nie podmienianiu wartości portu dla kolejnej pozycji wyświetlacza, tzn. wartość na porcie sterującym wyświetlacz nie ulega zmianie przy "przemiataniu" poszczegónych cyfr. Sprawdź czy tam masz wszystko jak trzeba.
Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 12:35 
Offline
Użytkownik
Avatar użytkownika

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

Witam
Haytham napisał(a):
...w takim razie dlaczego mialby Pan Mirek zly kod podawac ??

...bo kol.Mirek strasznym złośliwcem jest i w Twojej książce masz zły kod ;) - pomyśl...
Spróbuj najpierw w main.c podstawić na sztywno cy1 = 2; cy2 = 4 itd. Jeśli nie ruszy w pliku d_led.c w przerwaniu zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

...jeśli bez zmian to masz źle podłączone, lub coś majstrowałeś przy kodzie.
Do których portów masz podpięty 7_LED? - może coś z JTAG'iem?

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 13:42 
Offline
Użytkownik
Avatar użytkownika

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

No tak jak cos nie dziala to wszyscy czepiaja sie BB i kodu hmm a ja nadal nie otrzymalem odpowiedzi.

Sprawdz czy piny twojego wyswietlacza sa zgodne z pinami z ksiazki. Nie kazdy wyswietlacz 4 cyfrowy 7 segmentowy ma te same wyprowadzenia.

Ty tego nie sprawdziles bo ci sie nie chce wiec zgoniles na kod ze jest zly w ksiazce. A ten kod najzwyczajniej jest ok.

Użyłeś innego wyświetlacza nie zaznajamiajac sie z jego DS czy piny sa takie same jak w Mirka ATB i ksiazce.

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 16:45 
Offline
Nowy

Dołączył(a): 06 lip 2016
Posty: 14
Pomógł: 0

Posiadam ten sam wyswietlacz co w plytce ATB Pana Mirka, piny pozmienialem ale I podlaczylem poprawnie segmenty mam na porcie
D, natomiast anoy na porcie A.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 16:55 
Offline
Użytkownik
Avatar użytkownika

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

No ok jezeli to ten sam wyświetlacz to czy JTAG w fuse bitech wyłączyłeś ?

Z tego co pamiętam to w kodzie w BB nie ma funkcji delay i licznik nie jest bezpośrednio w pętli while bo zobacz jak szybko licznik by się zmniejszał ... co może być efektem świecących 8888 na wyświetlaczu. Pisałem o tym

licznik-- już dużo prędzej może przeoczyłeś.

On powinien być w przerwaniu a delay nie powinno być żadnego w pętli while

w twoim wypadku:

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



licznik--; // ZOBACZ licznik odlicza -- od jakiejś wartości
_delay_ms(10); // Z TAKĄ prędkością 10ms i uważasz, że twoje oko zobaczy jakie wyświetlają się cyfry ??

Na początek daj może _delay_me(500); i co 0,5 sek będzie liczył licznik--;

Później postaraj się pozbyć tego delay a licznik--; przenieść w obsługę przerwania.


Wspominałem o tym już tutaj topic15742.html#p163643 pisząc:

majster napisał(a):
Delay w while i licznik-- to złe rozwiązanie.



Pozdrawiam

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 17:08 
Offline
Nowy

Dołączył(a): 06 lip 2016
Posty: 14
Pomógł: 0

No niestety ale to nic nie dalo ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2016, o 17:11 
Offline
Moderator
Avatar użytkownika

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

Haytham napisał(a):
Posiadam ten sam wyswietlacz co w plytce ATB Pana Mirka, piny pozmienialem ale I podlaczylem poprawnie segmenty mam na porcie
D, natomiast anoy na porcie A.


A schematu jak nie ma tak nie ma ;) po co ? prawda ? .... Tym bardziej, że już są chyba miliony postów gdzie ktoś pisze, że ...

"No WSZYSTKO zrobiłem jak w książce tylko .........

no właśnie to małe TYLKO później jak się wyciągnie z delikwenta żeby pokazał to TYLKO - to ręce można załamać. Ale nie dlatego, że popełnił jakiś błąd tylko dlatego, że trzeba było go za język obcęgami ciągnąć żeby pokazał to "TYLKO" ... mówię tu o tym "TYLKO" zarówno w odniesieniu do połączeń, schematu, PCB ale też do kodu źródłowego który jest identyczny jak w książce ... TYLKO .....

_________________
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: 8 lip 2016, o 19:30 
Offline
Użytkownik
Avatar użytkownika

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

Witam
Haytham napisał(a):
No niestety ale to nic nie dalo ..

tzn. co?...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2016, o 09:38 
Offline
Nowy

Dołączył(a): 06 lip 2016
Posty: 14
Pomógł: 0

Marhef napisał(a):
A podłączyłeś dokładnie tak, jak w książce? Przez tranzystory? Wstaw zdjęcie tego, co Ci się wyświetla.


Segmenty podlaczone sa do portu D od pinu PD0 do PD7.Anody wyswietlaczy do portu A OD portu PA3, PA2, PA1 I PA0. w kodzie zmienilem to w ten sposob:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Moj blad polega na tym, ze wyswietlacze pokazuja te same segmenty jednoczesnie migajac



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lip 2016, o 12:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 mar 2015
Posty: 116
Pomógł: 16

Haytham napisał(a):
Marhef napisał(a):
A podłączyłeś dokładnie tak, jak w książce? Przez tranzystory? Wstaw zdjęcie tego, co Ci się wyświetla.


Segmenty podlaczone sa do portu D od pinu PD0 do PD7.Anody wyswietlaczy do portu A OD portu PA3, PA2, PA1 I PA0. ....

Czyli jednak bez tranzystorów ?
Zgaduję, że w BB jest schemat podłączenia identyczny jak prezentowany w np. instrukcji ATB 1.02.
Tranzystor PNP użyty jako klucz, przez który podawany jest "+" na anodę cyfry wyświetlacza, załączany jest stanem niskim na wyściu sterującego nim portu, czyli na wyjściu portu; 1 - CYFRA NIE AKTYWNA, 0 - CYFRA AKTYWNA
W przypadku gdy, pominiesz tranzystor i podłączysz anody bezpośrednio do portów uP, będziesz miał sytuację dokładnie odwrotną - nie mówiąc o tym ,że uP na dłuższą metę ze względu na przęciążenia prądowe może "wyzionąć ducha".
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: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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