[SPI] Nie działa sprzętowe SPI

Tu możesz pisać o swoich problemach z pisaniem programów w języku C dla AVR.
Awatar użytkownika
acid3
User
User
Posty: 466
Rejestracja: czwartek 03 wrz 2015, 22:42
Lokalizacja: Kłopoty-Stanisławy
Kontaktowanie:

[SPI] Nie działa sprzętowe SPI

Postautor: acid3 » niedziela 28 sty 2018, 12:59

Czy ktoś mógłby zerknąć co robię źle ...

IDE : AtmelStudio 7.0.1645
AVR : ATMega 16A DIP40
Taktowanie : Wewnętrzne 8MHz

SPI nie rusza w ogóle, sprawdzam SALEAE, 74HC595


Kod: Zaznacz cały

#define F_CPU 8000000
 
#include <avr/io.h>
#include <util/delay.h>

 
void init_spi(void){
 
     DDRB |=  (1 << PB7);
     DDRB &= ~(1 << PB6);
     DDRB |=  (1 << PB5);
     DDRB |=  (1 << PB4);
     
     PORTB |= (1 << PB7);
     PORTB |= (1 << PB6);
     PORTB |= (1 << PB5);
     PORTB |= (1 << PB4);
 
    SPCR = ((1 << SPE)| (1 << MSTR));
 
    SPSR = (1 << SPI2X);
 
}
 
uint8_t rcv_spi(void) {
 
    SPDR = 0xff;
 
    while(!(SPSR & (1 << SPIF)));
 
    return SPDR;
 
}
 
 
void xmit_spi (uint8_t txData){
 
    SPDR = txData;
 
    while(!(SPSR & (1 << SPIF)));
 
}

int main(void){
   
   init_spi();
   xmit_spi(0xFF);
   _delay_ms(100);
 
}

Awatar użytkownika
ZbeeGin
User
User
Posty: 492
Rejestracja: sobota 08 lip 2017, 17:16
Lokalizacja: Śląsko-Zagłębiowska Metropolia
Kontaktowanie:

Re: [SPI] Nie działa sprzętowe SPI

Postautor: ZbeeGin » niedziela 28 sty 2018, 13:23

Tylko na linii ~SS wystaw stan wysoki. Dla reszty pinów daj zarządzać przez SPI ich stanem.
Oczywiście odpinasz programator na czas testów...

Awatar użytkownika
acid3
User
User
Posty: 466
Rejestracja: czwartek 03 wrz 2015, 22:42
Lokalizacja: Kłopoty-Stanisławy
Kontaktowanie:

Re: [SPI] Nie działa sprzętowe SPI

Postautor: acid3 » niedziela 28 sty 2018, 13:32

ZbeeGin pisze:Oczywiście odpinasz programator na czas testów...


Tak, odpinam, nie wpływa to na jakiekolwiek zmiany zachowania.

Niestety, ograniczenie się do wystawienia stanu wysokiego tylko na CS nic nie zmieniło.

Nie ma żadnych "drgnięć" na liniach SCK, MOSI. (tak, chcę tylko wysyłać)

Awatar użytkownika
ZbeeGin
User
User
Posty: 492
Rejestracja: sobota 08 lip 2017, 17:16
Lokalizacja: Śląsko-Zagłębiowska Metropolia
Kontaktowanie:

Re: [SPI] Nie działa sprzętowe SPI

Postautor: ZbeeGin » niedziela 28 sty 2018, 14:05

Hmm... Wszystkie moje Atmel-e są w robocie, bo bym sprawdził u siebie. :(

Sprawdź jeszcze czy jak wystawiasz stan wysoki na pinie SS to on się tam rzeczywiście pojawia, a najlepiej go podciągnij też rezystorem na zewnątrz. Gdyby coś z zewnątrz ustawiło stan niski to SPI w procesorze może to błędnie zinterpretować i przełączy się w tryb Slave. Wtedy piny SCK, MOSI są konfigurowane przez SPI i oczywiście nic na nich nie zobaczysz...
Ostatnio zmieniony niedziela 28 sty 2018, 14:19 przez ZbeeGin, łącznie zmieniany 1 raz.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: [SPI] Nie działa sprzętowe SPI

Postautor: Antystatyczny » niedziela 28 sty 2018, 14:17

Pokaż schemat połączeń. Może coś pomyliłeś?
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
acid3
User
User
Posty: 466
Rejestracja: czwartek 03 wrz 2015, 22:42
Lokalizacja: Kłopoty-Stanisławy
Kontaktowanie:

Re: [SPI] Nie działa sprzętowe SPI

Postautor: acid3 » niedziela 28 sty 2018, 14:40

Tu już nawet nie o schemat chodzi, bo sprawdzam tylko na Salci

...........

W całym tym zamieszaniu zapomniałem o pętli while(1)

<masakra> <załamany>


Wróć do „Programowanie AVR w C”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości