Witam
Zacząłem niedawno przygodę z mikrokontrolerami, swoją naukę opieram na książce Mirosława Kardasia Mikrokontrolery AVR język C. Nie korzystam z płytki proponowanej przez autora, staram się budować układy do testów sam. Doszedłem właśnie do rozdziału o SPI i napotkałem problem z prawidłowym uruchomieniem tej transmisji. Rozdział ten jest dla mnie o tyle ważny że z transmisji SPI będą korzystać urządzenia których chęć zbudowania zmotywowała mnie do nauki programowania mikrokontorlerów.
Do rzeczy. Atmega ma sterować układem 74HC595 w taki sposób abym mógł wykorzystać linijkę diodową jako wskaźnik. Wykorzystuje do tego Spi sprzętowe (z softowym też próbowałem ale efekty nie były lepsze). Układ teoretycznie odbiera poprzez linie MOSI bajt wysyłany z atmegi i po odebraniu ostatniego bitu ładuje go na wyjścia. Czyli jeśli w bajcie bit0 = 0 to na wyjściu z układu będzie 0.
Poskładałem układ według tego schematu:
Napisałem taki program:
Program ten powinien zapalać poszczególne diody co 2 sekundy. Jak działa układ przedstawia poniższy film:
Układ obsługuje 8 diod od lewej. Czerwone diody to QH,QG itd... zielona to QA
Co powoduje ten bałagan ? Dopowiem jeszcze że zdarza się że np od diody QA do diody QF diody zapalają się poprawnie i zaczyna wariować na końcu. Analizowałem kod wiele razy i wygląda na to że jest on napisany dobrze. Czy nieprawidłowe działanie układu może wynikać z zakłóceń ? Dodam jeszcze że całość jest zasilana ze starej ładowarki do tel. i zasilanie przy układzie 74HC595 nie jest w żaden sposób filtrowane. Podpowiecie mi gdzie szukać problemów ?
pozdrawiam
Zacząłem niedawno przygodę z mikrokontrolerami, swoją naukę opieram na książce Mirosława Kardasia Mikrokontrolery AVR język C. Nie korzystam z płytki proponowanej przez autora, staram się budować układy do testów sam. Doszedłem właśnie do rozdziału o SPI i napotkałem problem z prawidłowym uruchomieniem tej transmisji. Rozdział ten jest dla mnie o tyle ważny że z transmisji SPI będą korzystać urządzenia których chęć zbudowania zmotywowała mnie do nauki programowania mikrokontorlerów.
Do rzeczy. Atmega ma sterować układem 74HC595 w taki sposób abym mógł wykorzystać linijkę diodową jako wskaźnik. Wykorzystuje do tego Spi sprzętowe (z softowym też próbowałem ale efekty nie były lepsze). Układ teoretycznie odbiera poprzez linie MOSI bajt wysyłany z atmegi i po odebraniu ostatniego bitu ładuje go na wyjścia. Czyli jeśli w bajcie bit0 = 0 to na wyjściu z układu będzie 0.
Poskładałem układ według tego schematu:

Napisałem taki program:
Code: c
Program ten powinien zapalać poszczególne diody co 2 sekundy. Jak działa układ przedstawia poniższy film:
Układ obsługuje 8 diod od lewej. Czerwone diody to QH,QG itd... zielona to QA
Co powoduje ten bałagan ? Dopowiem jeszcze że zdarza się że np od diody QA do diody QF diody zapalają się poprawnie i zaczyna wariować na końcu. Analizowałem kod wiele razy i wygląda na to że jest on napisany dobrze. Czy nieprawidłowe działanie układu może wynikać z zakłóceń ? Dodam jeszcze że całość jest zasilana ze starej ładowarki do tel. i zasilanie przy układzie 74HC595 nie jest w żaden sposób filtrowane. Podpowiecie mi gdzie szukać problemów ?
pozdrawiam