Witam,
Mam dość nietypowy problem polegającym najprawdopodobniej na nie wpisywaniu się flagi SPIF.
Przykładowy program wygląda tak:
Do portu PB1 jest podpięta dioda, po każdym przejściu następuje zmiana jej stanu logicznego (wiem że mogłem zrobić to na operacji ^= ale już się nie bawiłem).
Efekt tego jest taki że dioda się zapala i tak już zostaje co oznacza że wysłanie informacji przez SPI następuje tylko raz.
Najprawdopodobniej z jakiś przyczyn flaga SPIF nie może przejść w stan wysoki.
Udało mi się to wyeliminować tylko w jeden sposób, za każdym razem przed wysłaniem informacji wyłączam i ponownie włączam SPI:
Miał ktoś podobny przypadek?
Programuje w Eclipse wykorzystując WinAVR. Próbowałem zrobić symulację na AVR Studio 4 i co ciekawe efekt jest taki sam, wysłanie dokonuje się jednokrotnie, potem procesor utyka w pętli while oczekującej na SPIF.
Pozdrawiam
Dodano po 46 [minuty]:
Już sam znalazłem problem (a od wczoraj na tym siedzę).
Po przewertowaniu dokumentacji znalazłem taki tekst:
Więc wystarczy PB2 ustawić jako wyjście, wtedy wszystko od razu rusza z kopyta.
Aż powinienem sobie kliknąć "pomógł"
Mam dość nietypowy problem polegającym najprawdopodobniej na nie wpisywaniu się flagi SPIF.
Przykładowy program wygląda tak:
Kod: C / C++
Do portu PB1 jest podpięta dioda, po każdym przejściu następuje zmiana jej stanu logicznego (wiem że mogłem zrobić to na operacji ^= ale już się nie bawiłem).
Efekt tego jest taki że dioda się zapala i tak już zostaje co oznacza że wysłanie informacji przez SPI następuje tylko raz.
Najprawdopodobniej z jakiś przyczyn flaga SPIF nie może przejść w stan wysoki.
Udało mi się to wyeliminować tylko w jeden sposób, za każdym razem przed wysłaniem informacji wyłączam i ponownie włączam SPI:
Kod: C / C++
Miał ktoś podobny przypadek?
Programuje w Eclipse wykorzystując WinAVR. Próbowałem zrobić symulację na AVR Studio 4 i co ciekawe efekt jest taki sam, wysłanie dokonuje się jednokrotnie, potem procesor utyka w pętli while oczekującej na SPIF.
Pozdrawiam
Dodano po 46 [minuty]:
Już sam znalazłem problem (a od wczoraj na tym siedzę).
Po przewertowaniu dokumentacji znalazłem taki tekst:
If SS is an input and is driven low when the SPI is
in Master mode, this will also set the SPIF Flag.Więc wystarczy PB2 ustawić jako wyjście, wtedy wszystko od razu rusza z kopyta.
Aż powinienem sobie kliknąć "pomógł"