ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
87914
andrey_ae (29.04.2007 23:31, просмотров: 1692)
Проблемы с пониманием SPI Пишу для ADuC845. Вот простой пример: <c> #include <stdio.h> /* prototype declarations for I/O functions */ #include <ADUC845.H> #include <intrins.h> char c; bit complite = 0; void spi_test(void) interrupt 7{ c = SPIDAT; complite = 1; } void main (void) { char c; P2 = 0xFF; SCON = 0x50; SPICON = 0x30; TMOD |= 0x20; TH1 = 221; TR1 = 1; TI = 1; IEIP2 |= 0x01; EA = 1; while (1) { SPIDAT = 0xAF; while (!complite); printf ("%x\n", c); } } </c> В начале инициализация таймера, SPI, прерываний. Потом кладу в SPIDAT что-нибудь. Как я понимаю, дальше МК начинает передачу, а когда она завершена, выставляется прерывание, которое я обрабатываю: забираю пришедшие данные и выставляю флажок, что всё получено. Так ли это? Может я что-то пропустил? Проверить на реальном образце пока не получится, поэтому тестирую в дебагере mVision. Там есть симуляция SPI, но что-то либо он так работает, либо я просто чего-то не знаю... Спасибо.