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



Teraz jest 20 kwi 2026, o 16:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 25 lut 2015, o 15:22 
Offline
Nowy

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

Witam forumowiczów,

W przeszłości zrobiłem prosty układ, który za pomocą ośmiu przycisków podłączonych do scalaka 74HC165 sterował zapalaniem/gaszeniem poszczególnych diod LED podłączonych do 74HC595.

Teraz chciałbym troszkę rozbudować ten układ, a mianowicie dodać kolejną parę rejestrów, aby móc obsłużyć 16 przycisków i diod, jednak mam problem z napisaniem poprawnego kodu programu.

Działający kod programu do obsługi 8 przycisków i diod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie wiem w jaki sposób zmodyfikować funkcję spi_transfer. Próbowałem jakoś wykorzystać przesunięcia bitowe, ale nie przyniosło to oczekiwanych skutków.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Bardzo prosiłbym forumowiczów o pomoc i porady :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 15:45 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

tak na szybko -bez sprawdzania

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: 25 lut 2015, o 16:01 
Offline
Nowy

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

krish napisał(a):
tak na szybko -bez sprawdzania

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


Dzięki za szybką odpowiedź ;)
Jednak nie do końca wiem jak w programie wywołać tę funkcję i próbuję coś w stylu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W efekcie pierwsze 8 diod się świeci cały czas i nie reagują na żadne przyciski, a diody 9-16 reagują na przyciski 1-8.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 16:11 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Ok ale najpierw zamieść aktualny kod main.c , po poprawkach ( kompilujący się)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 16:17 
Offline
Nowy

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

Wygląda to tak:
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: 25 lut 2015, o 16:35 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Niepotrzebnie się kałapućkasz z przerabianiem funkcji spi_transfer. Zostaw ją w spokoju a w main po prostu odbierz dwa bajty, zrób operacje bitowe, wyślij dwa bajty. Albo nawet nie: w pętli odbieraj jeden bajt tak jak do tej pory, ale machaj latchem co drugi obrót pętli. Aha, no i jeszcze potrzebne są dwie zmienne temp.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2015, o 17:20 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Tak prawdę mówiąc do takiego układu nie jest potrzebny kontroler jako przekaźnik. Wystarczy wyjście PISO ('165) połączyć z wejściem SIPO ('595) i potraktować je 16 taktami zegara.

------------------------ [ Dodano po: 45 minutach ]

Schematu nie pokazałeś, ale domyślam się, że LT służy jako:
-LT-Lamp Test?
-przełącznik master-slave?

ale do rzeczy:
1.zwolnij pętlę główną (_delay_ms(1000);
2. jeżeli LT nie mruga diodą to zostaw go w spokoju w stanie 1.
3. do testu wykonaj taki program:
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: 26 lut 2015, o 11:06 
Offline
Nowy

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

Dzięki za odpowiedzi, jednak nadal nie mam pojęcia jak to zrobić ;(

LT to latch, czyli zatrzask i trzeba go przełączać, aby cokolwiek wyszło z rejestru.

Schemat układu:
Obrazek

Generalnie obsługa rejestrów wyjściowych (74hc595) połączonych szeregowo mi wychodzi, ale tam sprawa jest prosta, bo wystarczy tylko dodać przesunięcia bitowe do funkcji spi_send (zresztą pan Mirek miał bardzo dobry filmik na ten temat ;) ). Problem pojawia się w przypadku obsługi rejestrów wejściowych (74hc165) i o ile pojedynczy udało mi się jakoś okiełznać to zupełnie nie mam pojęcia jak obsłużyć 2 lub więcej na raz ( tj. czy da radę modyfikować funkcje spi_transfer, czy trzeba rozdzielić na spi_send i spi_receive)?



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