Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 lut 2026, o 10:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 4 kwi 2013, o 22:25 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 04 kwi 2013
Posty: 15
Lokalizacja: Legionowo
Pomógł: 1

Witam,

Mam dziwny problem, mianowicie zawiesza mi się uC w trakcie próby odczytu rejestru SPDR :/
Program wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co Ciekawe, jeśli zostawię w pętli while tylko te elementy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Program się wykonuje, ale jeśli dodam chodź by jeszcze jedno wysyłanie danych do SPDR, wszystko leży, zwiesza się gdzieś w tam.

Natomiast po wyrzuceniu całkowicie pobierania danych z SPDR, program działa ok, mogę wysyłać informacje do SPDR ile chce, wszystko się wykona.

Ogólnie podsumowując:
1. Jeśli nie pobieram informacji z SPDR to program wysyła dane prawidłowo.
2. Jeśli pobieram dane, to program działa prawidłowo tylko w przypadku gdy w pętli while() niema więcej wpisywania danych do SPDR niż jedno.

Nie wiem co jest.... czegoś takiego nigdy nie miałem i nie mam pojęcia co z tym zrobić...

------------------------ [ Dodano po: 3 minutach ]

Dla testu napisałem byle jaki program:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Niestety nie dochodzi do włączenia PB1 (podświetlenie wyświetlacza), ale jeśli usunę jedno z funkcji SPI to program przejdzie.
Co jest?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 23:25 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 04 kwi 2013
Posty: 15
Lokalizacja: Legionowo
Pomógł: 1

Teraz całkiem pogrzebałem i już nie wiem co jest...
Taki oto kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak widać ma coś wysłać przez SPI, potem zanegować pin podświetlenia.
Pętla się powtarza, wysyła coś i neguje pin.

Niestety efekt jest tego taki że zapala podświetlenie czyli raz wysyła dane ale już nie gaśnie, więc utyka na while...
Ale dlaczego tylko raz mogę coś wysłać przez SPI?
Sprawdziłem to na symulatorze w AVR Studo 4 i tak to samo, raz wysyła dane a potem w while utyka.

------------------------ [ Dodano po: 11 minutach ]

Pomaga tylko wyłączenie i ponowne włączenie SPI w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ale dlaczego tak się dzieje?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 09:10 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 04 kwi 2013
Posty: 15
Lokalizacja: Legionowo
Pomógł: 1

Już wszystko jasne...

Przewertowałem dokumentację i wygrzebałem takie coś:
Kod:
If SS is an input and is driven low when the SPI is
in Master mode, this will also set the SPIF Flag.


I to było problemem, czyli wystarczyło pin PB2 ustawić jako wyjście i po problemie...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO