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



Teraz jest 25 kwi 2024, o 17:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 12 gru 2012, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Z tego co odczytałem z noty katalogowej, muszę wysłać przez SPI 2 bajty. W pierwszym Adres w drugim wartość jaka ma być wpisana pod ten adres. Posiłkując się , jak zwykle, podręcznikiem Mirka, próbuję zrobić to w ten sposób:

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


Czyli w rejestrze 0x09h ustawiam decodowanie BCD , następnie na digit0 chcę wyświetlić 1.
Niestety, wyświetlacz mam ciemny :(

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2012, o 21:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

ten maxik jest nieco uparty :)
głównie w inicjacji. Korzystasz z biblioteki czy pisałeś obsługę sam ??

Jak sam to sprawdź w nocie prędkość SPI...
Bo jak na mój gust nie zainicjowałeś go w ogóle...

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2012, o 21:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Nie korzystam z biblioteki, narazie probuje poprostu wyświetlić '1'.
Z noty wydaje się to proste, nie znalazlem info na temat inicjalizacji , ale mój angielski jest na poziomie 'Kali móc , Kali mieć" więc mogłem czegoś nie zrozumieć. Jakbyś podpowiedział, byłbym wdzięczny ;)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2012, o 21:59 
Offline
Moderator
Avatar użytkownika

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

To co mówi Sun to jedno - a z książkowego przykładu można usunąć to:

/* odczekanie 1 us – czas trwania impulsu LE */
_delay_us(1);

no i trzeba zwrócić uwagę na polaryzację stanów na SPI - ja w tej chwili nie mam przed oczami PDF'a ale przecież trzeba sprawdzić jak pisałem w książce:

1. czy np wsuwanie następuje przy narastającym czy opadającym zboczu
2. czy w stanie spoczynku aktywny stan wysoki czy niski

itp

_________________
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: 12 gru 2012, o 22:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Mirku, wszystkie Twoje uwagi oczywiście biorę do serca ;)
Zatrzaskuje sie przy narastajacym zboczu, czyli tak jak w Twoim przykładzie. Czemu mam usunąć ten fragment który podałeś ? W nocie wyczytałem , że impuls powinien trwać min. 50ns.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2012, o 22:39 
Offline
Moderator
Avatar użytkownika

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

ixxl napisał(a):
Mirku, wszystkie Twoje uwagi oczywiście biorę do serca ;)
Zatrzaskuje sie przy narastajacym zboczu, czyli tak jak w Twoim przykładzie. Czemu mam usunąć ten fragment który podałeś ? W nocie wyczytałem , że impuls powinien trwać min. 50ns.


No więc właśnie - a zobacz ile jest w przykładzie - 1ms !!! to wieczność w porównaniu do 50ns ;)

jeśli procka taktujesz np 8MHz to jeden rozkaz (1 cykl) to aż 125 ns - więc spokojnie starczy ;)

_________________
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: 12 gru 2012, o 23:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Procka taktuję 11MHz. W kodzie jest mikro, czyli 100 nano. Skoro w nocie pisze , ze min. 50ns, to chyba ten fragment nie przeszkadza ? (pytam tak na zaś, żeby wiedzieć na przyszłość). Usunięcie tego fragmentu nic nie zmieniło, zauważyłem tylko że jak resetuję procesor, to czasem maxim wyświetla co ma wyświetlić. Poeksperymentuję jeszcze z prędkością SPI, jak jak sugerował Sunriver

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2012, o 23:13 
Offline
Moderator
Avatar użytkownika

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

Oczywiście że nie miałem na myśli że gdy usuniesz tą 1ms to się nagle naprawi - zwróciłem tylko uwagę że niepotrzebnie to stosujesz - w przyszłości mogłoby ci to strasznie spowalniać przecież przesyłanie większej ilości informacji

skoro po resecie coś mignie ;) to dobry znak - może coś tam trzeba jeszcze "wsunąć" ?

_________________
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: 12 gru 2012, o 23:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

No to już jasne ;)
Maxim nie mruga, tylko czasami, bardzo czasami wyświetla to co mu wrzucę do rejestru. Zmiana prędkości SPI też nic nie dała. A teoretycznie to taki prosty do oprogramowania układ :(

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2012, o 23:58 
Offline
Moderator
Avatar użytkownika

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

No na pewno jest prosty - tylko coś pewnie źle robisz, ja też mam kilka tych scalaczków ale jeszcze nie miałem czasu się nimi pobawić niestety - bo tak to bym ci napisał co i jak...

zajrzałem do noty z ciekawości, i wg tego:

Cytuj:
On initial power-up, all control registers are reset, the
display is blanked, and the MAX7219/MAX7221 enter
shutdown mode. Program the display driver prior to
display use. Otherwise, it will initially be set to scan one
digit, it will not decode data in the data registers, and
the intensity register will be set to its minimum value.


jak widzisz trzeba go zainicjalizować bo bez tego może być nic nie widać :(

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

ooo masz tam ładnie

Display-Test Register

Można go ustawić aby włączył na siłę wszystkie segmenty na wszystkich wyświetlaczach

no jak nic musisz poczytać o tych rejestrach i ich ustawieniach bo po resecie scalak ma wszystko ściemnione na maxa


Autor postu otrzymał pochwałę

_________________
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: 13 gru 2012, o 00:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Bingo !! Jak zwykle, można na Ciebie liczyć :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2012, o 17:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Probuję wyświetlić cyfrę na drugim wyświetlaczu.

O ile ten kod

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


bez problemu obsługuje wyświetlacz podłączony do DIG 0 , to już ten fragment:

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


powoduje włączenie przypadkowych segmentów na wszystkich modułach zamiast tylko DIG 1 :(
Zeby nie było, wpisanie 7 do rejestru 0Bh nic nie zmienia.

Display Test powoduje zapalenie wszystkich segmentów.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sty 2013, o 21:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 paź 2011
Posty: 108
Pomógł: 0

Kontynuuje walkę z tymi układami ;)

Kod wygląda następująco:

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


W jego wyniku wszystko działa tak jak zakładałem co widac na filmie:



Uklad 1 steruje wyświetlaczami na których "kręci" się licznik, układ 2 wyświetla "123" a trzeci "456". Bajka :D

ale, ale, cóż się dzieje jak zamienię kolejność wysyłania danych:

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


Jak widać, najpierw poszły dane do IC2 , potem do IC1 a na końcu do IC3.

Z tego co zrozumiałem z datasheet , dane po wysłaniu odpowiedniej ilości komend No-op zostają przesunięte do odpowiedniego układu i po zatrzaśnięciu zapalają diody na docelowym wyświetlaczu.
Zobaczmy więc co się dzieje:



Jak widać, dane przeznaczone dla IC1 , wyświetlają się również na IC2. Dziwi mnie to tym bardziej, że do wysłania danych do IC1 nie muszę wysyłać rozkazów No-Op , a do IC2 i owszem.

Przyznam szczerze, że od dwóch dni szukam rozwiązania i w akcie desperacji zwracam się do was 8-)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2018, o 22:28 
Offline
Nowy

Dołączył(a): 20 lis 2017
Posty: 3
Pomógł: 0

Witajcie :) Mam problem z powyższym układem. Raz chodzi raz nie chodzi. Raz świeci mi cały panel led a raz zaczyna działać prawidłowo. Kod jest identyczny praktycznie jak ma kolega powyżej a mimo tego nie działa jak powinno. Mam pytanie do kolegów z większym doświadczeniem. Czy te układy często ulegają uszkodzeniu ? Pozdrawiam

------------------------ [ Dodano po: 23 minutach ]

Kolejna uwaga... kod działa ale problem jest tego rodzaju :

- doprowadzam zasilanie do układu - działa
- wyłączam i włączam zasilanie - nie działa
- tak kilka razy
- zaskoczył działa

Jakieś pomysły? Spi nie jest jakieś ciężkie a ten układ doprowadza pomału mnie do szału. Z góry dziękuję za pomoc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2018, o 17:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

Fenrian napisał(a):
Raz chodzi raz nie chodzi.


Zawsze w takich przypadkach jest problem z połączeniem elektrycznym wyczyść miejsca styków ,dobrze jeśli to stykówka tym bardziej.

_________________
Ucz się ucz ,bo po to tutaj jesteś...



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