Witam
Buduje pewne urządzenie składające się z dwóch procesorów Atmega8 oraz ATmega16 (aktualnie 2x mega8). Jeden z procesorów jest odpowiedzialny wyłącznie za multipleksowanie 10 wyświetlaczy 7seg. Jest to taki panel wyświetlaczy. Drugi jest odpowiedzialny za obsługę całego urządzenia oraz wysyłanie danych po SPI do drugiego procesora (slave = wyświetlacz).
Na samym początku slave był na Atmedze32 no i wtedy zwykle działało wszystko poprawnie jednak z czasem też coś się działo z ramką danych i na wyświetlaczu pojawiały się krzaki.
Podaje kody, najpierw master ale tu na razie nic praktycznie nie ma:
To tylko wysyłanie sztywnych danych, DP służy do zapalenia dwukropka na jednym z wyświetlaczy właśnie do wyświetlania czasu.
Program dla slave wygląda skrótowo tak:
Program w teorii powinien po obraniu 9 bajtów delikatnie porozdzielać dane i wyświetlić je na wyświetlaczach LED. Jednak ramka danych rozjeżdża mi się całkowicie. na pozycji cyfra10 mam wyświetlą de facto liczbę odebranych bajtów danych i widzę jak cięgle się zmienia. Tym samym wyświetlacz wyświetla głupoty.
Co może być tego przyczyną? Przewody ma "byle jakie", kawałek skrętki o długości ok 20cm (domyślnie chciałbym dać taśmę ok 1.5m dlatego prędkość taktowania SPI jest dzielona przez 128).
Buduje pewne urządzenie składające się z dwóch procesorów Atmega8 oraz ATmega16 (aktualnie 2x mega8). Jeden z procesorów jest odpowiedzialny wyłącznie za multipleksowanie 10 wyświetlaczy 7seg. Jest to taki panel wyświetlaczy. Drugi jest odpowiedzialny za obsługę całego urządzenia oraz wysyłanie danych po SPI do drugiego procesora (slave = wyświetlacz).
Na samym początku slave był na Atmedze32 no i wtedy zwykle działało wszystko poprawnie jednak z czasem też coś się działo z ramką danych i na wyświetlaczu pojawiały się krzaki.
Podaje kody, najpierw master ale tu na razie nic praktycznie nie ma:
Kod: C / C++
To tylko wysyłanie sztywnych danych, DP służy do zapalenia dwukropka na jednym z wyświetlaczy właśnie do wyświetlania czasu.
Program dla slave wygląda skrótowo tak:
Kod: C / C++
Program w teorii powinien po obraniu 9 bajtów delikatnie porozdzielać dane i wyświetlić je na wyświetlaczach LED. Jednak ramka danych rozjeżdża mi się całkowicie. na pozycji cyfra10 mam wyświetlą de facto liczbę odebranych bajtów danych i widzę jak cięgle się zmienia. Tym samym wyświetlacz wyświetla głupoty.
Co może być tego przyczyną? Przewody ma "byle jakie", kawałek skrętki o długości ok 20cm (domyślnie chciałbym dać taśmę ok 1.5m dlatego prędkość taktowania SPI jest dzielona przez 128).
