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



Teraz jest 8 sty 2025, o 21:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 24 lip 2013, o 13:46 
Offline
Użytkownik
Avatar użytkownika

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

Używam SPI (sprzętowego) w m32 ale zaszła potrzeba użycia nóżki MISO jako SS (sygnał zatrzaskujący - CS). Czy jest to możliwe?

Oto prościutki, testowy program napisany z przykładów zawartych w nocie i książce:

Kod programu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Program co sekundę miga diodą na pinie PD7 (służy do debugowania) i co sekundę wysyła bajt 165 (działa poprawnie). Problem polega na tym że gdy podmienię w definicjach preprocesora CS z PB4 na PB6 (MISO) i przeniosę ustawianie CS jako wyjście na koniec funkcji InitSpi lub tuż przed wywoływaniem funkcji SendSpi. Program się zawiesza (z migania diody wynika że ostatnia linia pętli while wykonuje się raz lub wcale.

Czy jest jakiś sposób aby użyć pinu MISO jako sygnał zatrzaskujący ? Może jest możliwość lepszej konfiguracji SPI do moich zastosowań.

Kod umieszczamy przy pomocy syntax=c - Zielony J.
Przepraszam, ale dlaczego SYNTAX'a nie ma wśród przycisków do edycji czcionki?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lip 2013, o 14:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Cytuj:
When the SPI is configured as a Master (MSTR in SPCR is set), the user can determine the
direction of the SS pin.
If SS is configured as an output, the pin is a general output pin which does not affect the SPI
system. Typically, the pin will be driving the SS pin of the SPI Slave.
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. To avoid bus contention, the SPI system takes the following
actions:
1. The MSTR bit in SPCR is cleared and the SPI system becomes a Slave. As a result of
the SPI becoming a Slave, the MOSI and SCK pins become inputs.
2. The SPIF Flag in SPSR is set, and if the SPI interrupt is enabled, and the I-bit in SREG is
set, the interrupt routine will be executed.
Thus, when interrupt-driven SPI transmission is used in Master mode, and there exists a possibility
that SS is driven low, the interrupt should always check that the MSTR bit is still set. If the
MSTR bit has been cleared by a Slave Select, it must be set by the user to re-enable SPI Master
mode.
O tym pamiętaj, 2 godziny życia przez to cholerstwo straciłem ;)

Cytuj:
SPI Pin Overrides

Pin Direction, Master SPI Direction, Slave SPI
MOSI, User Defined, Input
MISO, Input, User Defined
SCK, User Defined, Input
SS, User Defined, Input
A z tego, wynika, że raczej nie da tak rady, ale możesz spróbować :)

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lip 2013, o 14:20 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3209
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Cytuj:
Przepraszam, ale dlaczego SYNTAX'a nie ma wśród przycisków do edycji czcionki?


Masz listę Syntax wybierz i wtedy wybiera się C.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lip 2013, o 14:27 
Offline
Użytkownik
Avatar użytkownika

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

Znalazłem w tabelce że w rybie master MISO musi być wejściem. Jedynie nadzieja że może będzie dało się coś na tej nóżce badać niezależnie od SPI (od biedy mogę przecież nawet sczytywać dane z bufora wejściowego w celu badania np. stanu przycisku).

_________________
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: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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