вот собственно все что к нему относится (куски из библиотеки Christian Kranz):
- Код: Выделить всё • Развернуть
// настройка портов
cbi LCD_PORT, LCD_RESET ; display reset
sbi LCD_DDR, LCD_RESET ; set reset as output
cbi LCD_DDR, LCD_MISO ; MISO is always input in SPI
sbi LCD_DDR, LCD_MOSI ; MOSI must be set as output for SPI
sbi LCD_PORT, LCD_CS ; deselect display
sbi LCD_DDR, LCD_CS ; SS must be output for Master mode to work
cbi LCD_PORT, LCD_SCK ; set SCK lo
sbi LCD_DDR, LCD_SCK ; set SCK as output
sbi LCD_PORT, LCD_MISO ; enable pull up of MISO to avoid floating input
sbi LCD_PORT, LCD_RS ; start with RS=high
sbi LCD_DDR, LCD_RS ; RS signal is output
; setup serial data interface
; select clock phase positive going in middle of data
; master mode
; enable SPI
; speed is CPUclock/2
ldi r24,(1<<MSTR) | (1<<SPE)
out LCD_SPCR,r24
ldi r24,1 ; double speed bit
out LCD_SPSR,r24
// задержка
sbi LCD_PORT, LCD_RESET ; release reset
in r24,LCD_SPSR ; clear status
// задержка
; ports and SPI are now configured
ldi T1,0xFD
rcall glcdDispCommand <<- отсюда МК уже не возвращается
...
Смотрим что там в glcdDispCommand (откуда МК уже не выходит):
- Код: Выделить всё • Развернуть
cbi LCD_PORT,LCD_CS ; select Display
sbi LCD_PORT,LCD_RS ; set RS line
rjmp SPI_SEND
....
PI_SEND:
sbi LCD_SPCR,SPE ;enable SPI
out LCD_SPDR,T1 ;load byte in SPI data register
SPI_SEND_0:
sbis LCD_SPSR,SPIF
rjmp SPI_SEND_0 <<- вот из этого лупа уже никогда не выходит
ПОЧЕМУ МОЖЕТ НЕ ВЫСТАВЛЯТСЯ SPIF ???
.....
ret
с дисплеем и проводами вроде все в порядке - загружал прогу на БАСКОМ - там программный SPI - картинку показывало. подумал может провода длинные - попробовал снизить скорость SPI - не помогло тоже.
Кто глубоко работал с SPI? Домоможить!!
Добавлено спустя 1 минуту 45 секунд:
с этой библиотекой работал на другой плате - макетке - иногда висло через несколько часов работы, но SPI хотяб работал
Добавлено спустя 1 минуту 27 секунд:
SPI когда передает данные - он вообще слейва видит както? или просто выставляет данные, выдате такт 8 раз и передача окончена? Слейв никак не маякует что все в порядке?
Добавлено спустя 2 минуты 36 секунд:
попробую в другой МК залить . мож этот нехороший...