Witam.
Nie znam się na Arduino ale wg. mnie trochę dziwnie wygląda u ciebie wysyłanie danych do rejestru.
Ja zrobiłem to troszkę inaczej. Nie w Arduino tylko w C.
Do celów testowych zmontowałem sobie układ z dwóch rejestrów podłączonych kaskadowo. Do wyjść podłączyłem diody LED włączane stanem wysokim na wyjściach rejestrów.
Do obsługi rejestrów napisałem trzy proste funkcje
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pierwsza funkcja wysyła bajt do rejestru ale nie powoduje wyświetlania danych na wyjściu, druga wysyła bajt (za pomocą tej pierwszej funkcji) i wyświetla go na wyjściu, trzecia wysyła dwa bajty i również je wyświetla.
Poniżej prosty programik, który wyświetla przesuwający się punkt na 16 diodach LED (dwóch rejestrach)
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
stachu napisał(a):
Czy to normalne, że po podłączeniu na wszystkich wyjściach jest stan wysoki ?
U mnie włączeniu zasilania na wyjściach rejestrów pojawiały się przypadkowe stany.
Dlatego na początku programu wysyłam zera na wszystkie wyjścia
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
a dopiero potem załączam wyjścia rejestrów stanem wysokim na pinie OUTPUT ENABLE
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
.
Dzięki temu po starcie programu wszystkie diody mam zawsze wygaszone.