Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 18.04.2010, 11:51   #1
chingiz
Junior Member
 
Регистрация: 05.08.2009
Возраст: 43
Сообщений: 13
Вес репутации: 111/39
chingiz will become famous soon enoughchingiz will become famous soon enough
По умолчанию Инициализация аппаратного SPI

Изучаю протокол передачи данных SPI на МК pic16f886
Разыскал на сайте microchip.com документик с описанием протокола для
МК pic16f876 немножко переделал его начало под свой МК и вот теперь не могу разобраться. ПРоблема в том, что я при запуске программы не вижу на выходе SCK - несущей, ну и соответственно не вижу посылки с вывода SDO.
Выводы я просматриваю с помощью логического анализатора из состава Pickit2.
Внизу приведен код.
Код:
; SPItstM0.asm
; MASTER Rev 0
; Demonstrates SPI connection between 2 PICmicro devices
; Master sends data (a counter), Slave receives and outputs to LEDs on PORTB
		list p=16F886
		#include "p16F886.inc"
		__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_CLKOUT
		__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V


		Ctr0 EQU 0x20 				; Counter variable - sent to SPI
		Dly0 EQU 0x21 				; Delay Variable (low byte)
		Dly1 EQU 0x22				; Delay Variable (high byte)
		Dly2 EQU 0x23
		#define CS 0x02 			; PORTA,2
		ORG 0 						; Begin Code at location 0
		nop 						; FOR ICD
		;Set internal oscilator
			
		; Set up the 
		BANKSEL		OSCCON
		bcf			OSCCON, IRCF2
		bsf			OSCCON, IRCF1
		bcf			OSCCON, IRCF0
		bsf			OSCCON, SCS
		bcf			OSCCON, OSTS
		bsf			OSCCON, HTS
;SPI Support
		BANKSEL 	TRISA 			; BANK 1
		movlw 		0x00 			; Set PORTA as
		movwf 		TRISA 			; all Outputs
		movlw 		0x06 			; Turn off A/D
		movwf 		ADCON1 			; so PORTA can be used
		clrf		PORTC
		; Set up the SPI Port
		BANKSEL 	TRISC 			; BANK 1
		movlw 		0x10 			; SCK is output (Master), SDI is input,
		movwf 		TRISC 			; SDO is output, all others output
		movlw 		0x40 			; Mode 1,1 SPI, middle of output
		movwf 		SSPSTAT 		; time sampling
		BANKSEL 	SSPCON 			; BANK 0
		movlw 		0x30 			; Mode 1,1 SPI Master Mode, 1/4 Tosc bit
time
		movwf 		SSPCON 			; SSP is on
подскажите, где можно поправить ?
chingiz вне форума   Ответить с цитированием
Старый 18.04.2010, 13:08   #2
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 58
Сообщений: 2,837
Вес репутации: 3992/109
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: Инициализация аппаратного SPI

И всё???
А где сам вывод??? Где данные в буфер заталкиваются???
Это же не ШИМ, что "крутнул ручку" он и завёлся.
HHIMERA вне форума   Ответить с цитированием
Старый 18.04.2010, 14:48   #3
pfgx
Senior Member
 
Регистрация: 14.11.2007
Сообщений: 1,106
Вес репутации: 822/64
pfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to behold
По умолчанию Re: Инициализация аппаратного SPI

"Несущая" там будет только при передаче (приеме) данных. Байт в регистр сунул, оно 8 раз дернулось и успокоилось, вот и вся несущая.
pfgx вне форума   Ответить с цитированием
Старый 18.04.2010, 15:16   #4
chingiz
Junior Member
 
Регистрация: 05.08.2009
Возраст: 43
Сообщений: 13
Вес репутации: 111/39
chingiz will become famous soon enoughchingiz will become famous soon enough
По умолчанию Re: Инициализация аппаратного SPI

вот весь код:

Код:
; SPItstM0.asm
; MASTER Rev 0
; Demonstrates SPI connection between 2 PICmicro devices
; Master sends data (a counter), Slave receives and outputs to LEDs on PORTB
		list p=16F886
		#include "p16F886.inc"
		__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_CLKOUT
		__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V


		Ctr0 EQU 0x20 				; Counter variable - sent to SPI
		Dly0 EQU 0x21 				; Delay Variable (low byte)
		Dly1 EQU 0x22				; Delay Variable (high byte)
		Dly2 EQU 0x23
		#define CS 0x02 			; PORTA,2
		ORG 0 						; Begin Code at location 0
		nop 						; FOR ICD
		;Set internal oscilator
			
		; Set up the 
		BANKSEL		OSCCON
		bcf			OSCCON, IRCF2
		bsf			OSCCON, IRCF1
		bcf			OSCCON, IRCF0
		bsf			OSCCON, SCS
		bcf			OSCCON, OSTS
		bsf			OSCCON, HTS
;SPI Support
		BANKSEL 	TRISA 			; BANK 1
		movlw 		0x00 			; Set PORTA as
		movwf 		TRISA 			; all Outputs
		movlw 		0x06 			; Turn off A/D
		movwf 		ADCON1 			; so PORTA can be used
		clrf		PORTC
		; Set up the SPI Port
		BANKSEL 	TRISC 			; BANK 1
		movlw 		0x10 			; SCK is output (Master), SDI is input,
		movwf 		TRISC 			; SDO is output, all others output
		movlw 		0x40 			; Mode 1,1 SPI, middle of output
		movwf 		SSPSTAT 		; time sampling
		BANKSEL 	SSPCON 			; BANK 0
		movlw 		0x30 			; Mode 1,1 SPI Master Mode, 1/4 Tosc bit
time
		movwf 		SSPCON 			; SSP is on

Send_DT bcf 		PORTA,CS 		; Enable Chip Select Output (low)
		
		movf 		Ctr0,W 			; Get Ctr (Counter Value) in W
		movwf 		SSPBUF 			; put in SSPBUF
		BANKSEL 	SSPSTAT 		; BANK 1
Char1 	btfss 		SSPSTAT,BF 		; Data transfer complete? (Buffer Full?)
		goto 		Char1 			; if not, check again
		BANKSEL 	SSPBUF 			; BANK0
		movf 		SSPBUF,W 		; Get Data from SSPBUF
									; ; Throw it away
		bsf 		PORTA,CS 		; Disable Chip Select Output (high)
Update_Test_Counter
		incf 		Ctr0,1 			; Increment counter variable

		movlw		0x05
		movwf		Dly2
Delay 	movlw 		0x05 			; Simple Delay loop
		movwf 		Dly1 			; 				|
DlyLoop movlw 		0xF5 			; 				|
		movwf 		Dly0 			; 				|
DlyLp1  decfsz 		Dly0,1 			; 				|
		goto 		DlyLp1 			; 				|
		decfsz 		Dly1,1	 		; 				|
		goto 		DlyLoop 		; 				|
		decfsz 		Dly2,1	 		; 				|
		goto 		Delay	 		; 				|
		
									; Done Delay ; \_/
DoAgain goto 		Send_DT 		; Done, Send Next Byte.
	
		end
Я вообще думал последовательно все делать, т.е. сначала инициализировать SPI, потом посмореть что он там на выводах SCK и SDO будет показывать, ну а потом со стороны приемника налаживать.
А судя по ВАшим высказываниям, то надо сразу лепить всю схему мастер+слейв и налаживать все вместе...
chingiz вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SD карта в SPI режиме Golikov Общетехнические вопросы 29 19.03.2015 14:13
проблемы с SPI (PIC18LFxxxx + RFM23) desperado Продукция MICROCHIP 37 27.10.2013 19:00
SPI интерфейс. PIC16F887 + CC2500 RF module. Cavalryman Вопросы начинающих 45 08.07.2010 18:59
Управление HC595 c использованием аппаратного SPI IVV Продукция MICROCHIP 6 18.03.2010 16:44
Прерывание SPI в dsPIC33FJ33GP202 Любопытный Продукция MICROCHIP 6 28.11.2008 17:29


Часовой пояс GMT +3, время: 00:55.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot