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



Teraz jest 26 lip 2026, o 11:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 29 sty 2014, o 13:38 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

Witam was wszystkich, jako mój pierwszy post na tym forum :D zawrócę wam głowę moim problemem.
Otóż mam wielki problem z multipleksowaniem wyświetlaczy led. Kod i schemat podłączenia mam z BB. Tranzystory to bc556B. Układ zmontowany na płytce stykowej. Wyświetlacze jakie zastosowałem to 2x podwójne z każdym segmentem wyprowadzonym osobno ale połączyłem je tak że wszystkie "A" to jeden pin, wszystkie "B" to kolejny itp. Problem objawia się tak że na wszystkich wyświetlaczach wydać literkę "C" przy czym każdy ze świecących segmentów miga chaotycznie. Zmiana wyświetlanego znaku nic nie daje, cały czas widać to samo. Połączenia wydają się być ok, sprawdzałem je tak: bazy tranzystorów podłączyłem do masy, i używając programu z książki o miganiu led wpisywałem do źródła kolejno każdy port do którego są podłączone katody-wszystko jest ok, "kreseczki" na każdym wyświetlaczu migały tak jak im kazałem, kolejność segmentów też w porządku. Chcecie coś jeszcze więcej wiedzieć to piszcie, będę starał się z wami jak najlepiej "zgrać" żeby to w końcu pokonać.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 13:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

ustawiłeś fusebity? na zew. generator



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 13:59 
Offline
Użytkownik

Dołączył(a): 25 lis 2011
Posty: 232
Lokalizacja: Pisz
Pomógł: 2

Dużo napisałeś ale nie dałeś najważniejszego:
1. Kod programu.
2. Na jaki procek piszesz, czym go taktujesz.
3. Schemat.
To są bardzo ważne informacje, co z tego że wszystko połączyłeś dobrze jak wystarczy że postawiłeś gdzieś niepotrzebnie od taki znaczek ~ i masz sprawę odwróconą o 180 stopni.
Uzupełnij pręciutko post wtedy, na pewno pokonamy problem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 14:23 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

Procek Atmega32
Taktowanie zmieniłem dając tylko w ustawieniach projektu 8000000 (tam co się programator wybiera i procesor)
A kod to standardowy z Bluebooka.
Fusebity po odczytaniu z procesora wyrzuca hfuse=D9 lfuse=E4.

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


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


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: 29 sty 2014, o 14:36 
Offline
Użytkownik

Dołączył(a): 15 cze 2013
Posty: 599
Lokalizacja: Lubin
Zbananowany użytkownik

Pomógł: 35

Bazy tranzystorow podciagnij do VCC czyli miedzy baze a emiter rezystorek. Myśle że 1 kohm będzie OK.



Ostatnio edytowano 29 sty 2014, o 14:43 przez OdeOn, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 14:43 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

Jaki ten rezystor? 1K?

EDIT: co ja piszę co ja piszę przecież wartość już podałeś :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 14:50 
Offline
Użytkownik

Dołączył(a): 15 cze 2013
Posty: 599
Lokalizacja: Lubin
Zbananowany użytkownik

Pomógł: 35

Jeśli masz to na stykówce to zacznij od 1 k. Jak dasz za mały nic sie nie wyświetli więc jak przy 1 k nie bedzie widać to wiekszy lub ten co z bazy do atmegi mniejszy.
Zauważ że jak atmega poda stan niski to oba rezystory tworzą dzielnik i na baze trafia napięcie midzy masa a VCC a powinno wynieść tyle żeby tranzystor się otworzył, a gdy atmega nie podaje masy to ten miedzy emiterem a bazą ma dać potencjał VCC na baze żeby tranzystor nic nie przewodził.

taki obrazek na google znalazłem
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 14:57 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

Dałem 1K i nadal nic. Ale wyświetlacze na moje oko świecą jakoś wyraźniej i bardziej mrugają. A co powiesz o tych fusebitach? Pamietam że dawno temu jak sobie robiłem termometr z gotowego projektu to podobnie miałem i rozwiązaniem były źle zaprogramowane fusebity.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 15:14 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

@OdeOn
Poco pull-up na bazie, przecież procek poda tam, albo VCC, albo GND?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 17:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

na taktowaniu 8 Mhz będą Ci bzdury się pojawiać daj 12 Mhz...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 17:24 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

8Mhz w zupełności wystarczy, przecież to od ustawienia timera zależy.

@pobem
Podmień zawartość pętli głównej na 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.

I grzeb w portach dotąd aż będzie dobrze (najlepiej rozpisz na kartce piny jeżeli nie masz dokumentacji).
Sam sobie przed chwilą odpaliłem ten twój kod na jednym znaku (z powyższą modyfikacją).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 19:56 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

Mam!!! Strasznie dziwiło mnie to że część kodu jest wyodrębniona jako komentarz. Usunąłem więc // czyli tak to teraz wygląda:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Skutkiem tego jest prawie poprawnie działający program. Wyświetlały się cyfry jakie wklepywałem w kodzie ale bez segmentów E,F,G. Jeśli trudne to jest do zrozumienia to mogę wam rozrysować.
Sprawdziłem więc połączenia, okazały się ok. Więc patrzę dalej do programu. W pliku d_led.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

widać że anody są przypisane do portu C zamiast do A, oraz katody do A zamiast do C. To zupełnie odwrotnie niż zostało zapisane w książce!

Oto plik d_led.h z którym wyświetlacze zadziałały bez problemu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A teraz kto chętny aby wytłumaczyć mi dlaczego w pliku main.c kod był wyodrębniony jako komentarz?

PS. Pierwotny kod brałem ze strony wydawnictwa z zakładki o aktualizacjach DVD



Ostatnio edytowano 29 sty 2014, o 20:05 przez pobem, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 20:05 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Jak od komentujesz tamtego WHILE(1), to to już się nie wykona:
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łę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 20:32 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

No właśnie miałem o tym napisać :D A co do pomylonych portów to mam rację że są one pomylone? Bo uaktualniony program ma się nijak do informacji w książce.

@#ciamciak# masz u mnie pomógł bo gdyby nie twój pomysł ze zmianą programu to bym nie zauważył tych pomylonych portów ;)



Ostatnio edytowano 29 sty 2014, o 20:35 przez pobem, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 20:33 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

To już zależy na czym testujesz i jak popodłączasz.
Ja to puściłem na Atmega8 więc musiałem pozmieniać porty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 20:39 
Offline
Nowy

Dołączył(a): 29 sty 2014
Posty: 14
Pomógł: 1

Ja dawałem na Atmega32. Niech mirek36 się wypowie jak to w końcu ma z nimi być, bo będzie mnie to męczyć w nieskończoność... On jeden wie co sam miał na myśli :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2014, o 21:29 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

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

I do testów lepiej na wszystkich polach wyświetlać te same znaki, jak podałem wcześniej.
Możesz wtedy pominąć multipleksację i podłączyć wszystkie anody do plusa (stan niski na bazach).



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

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