logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATMEGA48PA [asembler] - SPI - nic nie wysyła

Jerzyslaw 24 Sty 2010 01:26 1355 2
  • #1 7581944
    Jerzyslaw
    Poziom 10  
    Witajcie,

    Mam taki problem, probuje wysłać 2 bajty przez SPI
    Odpalajac ponizszy program w debuggerze AVR Studio zapętla sie on, gdyz flaga SPIF(sygnalizujaca zakonczenie transmisji) nie ustawia sie.
    A dokladniej:
    po wystawieniu 1 bajtu - ustawia sie(od razu) i jako ze jest ustawiona, to przeskakuje do 2 bajtu a tam SPIF zeru sie i dlatego pętla sprawdzajaca SPIF nie moze sie skonczyc. Probowalem jako dana dac 01010101 i podpialem tam diode z rez 1k +wrzucilem ok.5 sec opznienia, czyli gdyby cos bylo nadawane to dioda mrugalaby. a tak sie nie dzieje...
    Dodatkowo po zaprogramowaniu przez LPT, odlaczam kabel i resetuje uC.

    
    ldi		r16, 0b01010101 ; bajt do wyslania przez SPI
    
    
    SPI_MasterInit:
    	ldi		r17, (1<<DDB3) | (1<<DDB5) ;MOSI & SCK output
    	out		DDRB, r17
    	
    	;Enable SPI, MSB first, Master, 
    	;and set clk rate fck/16
    	ldi r17, (1<<SPE) |   (1<<MSTR) | (1<<CPHA) | (1<<SPR0)
    	out SPCR, r17
    
    	cbi		PORTC, 3 ; /SS do 1 przetwornika DAC
    
    SPI_MasterTransmit:
    	;1st bajt	
    	out		SPDR, r16
    
    Wait_Transmit:
    	in r16, SPSR
    	rcall 	delay ; ~4sec
    	sbrs r16, SPIF
    	rcall 	delay ; ~4sec
    	rjmp Wait_Transmit
    
    ;2nd bajt
    	out		SPDR, r16
    
    Wait_Transmit2:
    	in r16, SPSR
    	rcall 	delay ; ~4sec
    	sbrs r16, SPIF
    	rcall 	delay ; ~4sec
    	rjmp Wait_Transmit2
    


    edited: ustawilem dodatkowo ss jako wyjscie + wpisalem 1 ale tez nic nie pomaga... poza tym, ze SPIF juz sie nie ustawia i zapetla sie na wysylaniu 1 bajtu

    inventco.eu - temat poprawiłem, regulamin p.11.1
  • Pomocny post
    #2 7582061
    Konto nie istnieje
    Konto nie istnieje  
  • #3 7582891
    Jerzyslaw
    Poziom 10  
    super !

    Dzięki bardzo, zapominałem ze muszę poczekać ok. 150 cykli na wyslanie, a ja przy 50 sie dziwiłem czemu to sie zapetla...

    Dzięki bardzo :)
    Już rozumiem
REKLAMA