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



Teraz jest 25 gru 2024, o 03:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 22 lis 2013, o 17:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

Witam, udało mi się rozwiązać wcześniejsze problemy. Wszystko już działa z tym zastrzeżeniem że nie mogę używać SS jako wejście
tzn kiedy operuję na rejestrze DDRB chcąc zmienić PB4 na wejście następuje zawieszenie programu. Kiedy nic nie robię odnośnie tego bitu w rejestrze DDRB również następuje zawieszenie programu (tzn wiem że bity w rejestrach DDR nie mają dostępu atomowego więc jakby nie patrząc świadomie wpisuje do PB4 0 pisząc
DDRB |= (1<<MOSI)|(1<<SCK);

oto program który działa:
PD6 sygnał zatrzaskujący
PA7 enable do PWM zapalenia wyswietlaczy
PB3 buzzer do debugowania
PB4 domyślne SS które chce używać raz jako wejście a raz jako wyjście
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Od komentowane linki na końcu powoduje zawieszenie programu po pierwszym obiegu pętli.Tymczasem dowiedziałem się od doświadczonej osoby że można zmieniać kierunek pinu PB4 a a nawet odczytywać z rejestru PINB ten bit jeśli SPI pracuje jako MASTER.
Gdzie jest problem bo nie uśmiecha mi się przerabiać płytki?
Pozdrawiam

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 18:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 208
Lokalizacja: Kraków
Pomógł: 16

Pozwolę sobie wkleić z DS Atmeg'i 32:

Nie możesz tak po prostu wachlować sobie tym portem:
Dla SPI w trybie master:

If SS is configured as an input, it must be held high to ensure Master SPI operation. If the SS pin
is driven low by peripheral circuitry when the SPI is configured as a Master with the SS pin
defined as an input, the SPI system interprets this as another master selecting the SPI as a
slave and starting to send data to it.


Myślę że to pomorze :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 19:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

No fajnie, tu mamy napisane o skutkach.

Mi zależy na tym żeby na chwile ustawiać gdzieś w przerwaniu ten pin jako wejście (zalezy mi na stanie HiZ na nim) a potem znowu mogę go ustawiać jako wyjście tak więc podczas transmisji SPI może być on wyjściem.
Więc co zrobić żeby na chwile móc zmienić ten pin? Może da się jakoś chwilowo zablokować moduł SPI i to by pomogło?

Nie rozumiem tej części tekstu słabo z ang,niestety):
it must be held high to ensure Master SPI operation. Co to znaczy?

Podobno jest jakaś errata która mówi że to nie działa. To co w końcu bo nie wiem czy ciąć ścieżki na płytce ?

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 208
Lokalizacja: Kraków
Pomógł: 16

Na tym pinie musi być stan wysoki aby SPI w procku działało w trybie master.
Możesz wyłączać SPI na czas operacji na tym pinie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 20:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

A jaki jest dobry sposób na wyłączenie SPI. który bit wyzerować? <- próbowałem być może nieudolnie ,wyłączyć SPI na czas operacji na DDRB ale to nie pomagało.

Równolegle z tobą znalazłem w dokumencie:
AVR151: Setup And Use of The SPI

tabelke 2-2
i teraz po prostu mam tam pull-up'a na tym wejściu ale ideałem by było gdybym mógł mić stan HiZ. Da się tak?

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 21:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 208
Lokalizacja: Kraków
Pomógł: 16

Wyzeruj bit SPE w SPCR. To wyłączy SPI.
Stan HIZ to wejście podciągnięte przez pull up'y. Nie masz co kombinować



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Juffre napisał(a):
Stan HIZ to wejście podciągnięte przez pull up'y.


Stan HiZ to wejście niepodciągnięte, wiszące w powietrzu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2013, o 21:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

Juffre napisał(a):
Wyzeruj bit SPE w SPCR. To wyłączy SPI.
Stan HIZ to wejście podciągnięte przez pull up'y. Nie masz co kombinować

Sprawdzałeś to w praktyce?Bo u mnie to nie działało.

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



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: 8 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO