logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega64 + MAX7219 [C] SPI programowe sprawdzenie kodu

Sławek-K 02 Cze 2016 21:51 1074 7
REKLAMA
  • #1 15716875
    Sławek-K
    Poziom 15  
    Posty: 143
    Pomógł: 7
    Ocena: 13
    Witam !
    Siedzę już któryś tydzień nad kodem i nie mogę znaleźć błędu. Mam Atmegę 64 i popularne na All..... płytki z MAX7219 i matrycą 1088AS z 8x8 czerwonych diod LED fi3mm.
    Przeszukałem sporo stron itd , ale zdecydowana większość była z SPI sprzętowym -> odpada.
    Proszę o sprawdzenie i pokazanie błędu. (Jeśli można prosić to w miarę jasne wytłumaczenie).
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 15717496
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 15717570
    kazink
    Poziom 14  
    Posty: 135
    Pomógł: 8
    Ocena: 10
    atom1477 nie do końca ma rację. Impuls SCK masz 1, ale ponieważ w pętli ustawiasz go najpierw na 0 (czyli stan spoczynkowy), a potem na 1, to w konsekwencji SCK jest przesunięty o 0,5 cyklu w stosunku do danych.
  • #4 15717587
    Konto nie istnieje
    Poziom 1  
  • #5 15717610
    kazink
    Poziom 14  
    Posty: 135
    Pomógł: 8
    Ocena: 10
    Faktycznie, masz rację. Źle cię zrozumiałem.
  • REKLAMA
  • #6 15717802
    Sławek-K
    Poziom 15  
    Posty: 143
    Pomógł: 7
    Ocena: 13
    WIELKIE dzięki za zainteresowanie !
    Jeśli dobrze zrozumiałem Wasze sugestie to procedura wysyłania powinna wyglądać jak poniżej (pin wysyłania danych MISO ma się zmieniać w czasie gdy CLK jest w stanie niskim).
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #7 15717882
    kazink
    Poziom 14  
    Posty: 135
    Pomógł: 8
    Ocena: 10
    Tak, teraz SCK jest dobrze przełączany, ale jeszcze jedna rzecz: na początku funkcji ustawiasz CS na 0, a potem SCK na 0. Jeśli gdzieś przed pierwszym wywołaniem tej funkcji będziesz miał kod, który ustawi SCK na 1 (nawet przy CS = 1), to układ MAX zobaczy zbocze opadające zegara jako pierwsze i nie wiadomo jak na to zareaguje. Stany początkowe linii najlepiej zawsze ustawiać przy CS=1.
  • #8 15724678
    Sławek-K
    Poziom 15  
    Posty: 143
    Pomógł: 7
    Ocena: 13
    Trochę czasu mi zajęło dalsze tworzenie kodu i finalnie wyszło coś takiego. Mam nadzieję , że oprócz mnie przyda się także innym którzy (podobnie jak ja) próbują skomunikować się po SPI programowym z MAX7219 i matrycą LED 8x8.
    kolegom Powyżej serdecznie dziękuję i wysyłam "pomógł".
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ W dyskusji poruszono problem błędnego działania programu SPI dla układu MAX7219 z mikrokontrolerem ATmega64. Użytkownik miał trudności z poprawnym przesyłaniem danych do matrycy LED 8x8 1088AS. Otrzymał wskazówki dotyczące błędnego ustawienia stanu pinów SCK i MISO, co prowadziło do przesunięcia impulsów zegara. Po poprawkach w kodzie, w tym zmianie kolejności ustawiania stanów pinów, użytkownik uzyskał działający program. Podkreślono również znaczenie ustawienia stanów początkowych linii przy CS=1, aby uniknąć nieprzewidzianych reakcji układu MAX7219.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA