ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
795899
m16_home (20.11.2017 21:40, просмотров: 1660)
to MBedder два дня бьюсь SPI1 не работает на приём. передача работает без вопросов , массивы в неск килобайт передаются исправно. а вот читает со слэйва исключительно нули , хотя последний шлёт посылки (осцилом смотрел). mapout/mapin - твои маккросы, проверял в отладчике в RPINR20 записано 0х1F01. такое ощущение что SDI1 ни хрена не подключен к RB1. камень PIC24HJ128GP502. где я накосячил? спасибо ;******************************************************************** init_SPI1: bclr TRISB, #3 ; pin B3(SS1) - output bset LATB, #3 ; SS1 = 1 bclr TRISB, #2 ; pin B2(SDO1) - output mapout SDO1, RP2 bclr TRISB, #0 ; pin B0(SCK1) - output mapout SCK1OUT, RP0 bset TRISB, #1 ; pin B1(SDI1) - input mapin SDI1, RP1 mov #(1<<CKE)|(1<<MSTEN)|(7<<SPRE0)|(2<<PPRE0), w0 mov w0, SPI1CON1 ; SPI1 - master/ 8bit/ Fsck=2,5mhz bset SPI1STAT,#SPIEN ; SPI1 enable bclr IFS0,#SPI1IF return ;******************************************************************** SPI1_data_transfer_byte: ; w1- low byte output data w2- low byte input data bclr LATB, #3 ; SS1 = 0 mov W1, SPI1BUF spi1_wait: btss IFS0,#SPI1IF bra spi1_wait mov SPI1BUF , W2 bclr IFS0,#SPI1IF bset LATB, #3 ; SS1 = 1 return ;********************************************************************