Вопрос по симуляции SPI на кайле 51-
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Amal 11 февраля 2004 г. 09:45

есть фунция в программе:
#define SCLK P1_0
#define DOUT P1_1
#define DIN P1_1
#define DRDY P1_2
#define PIN P1_3

void putint(unsigned char bw)
{
unsigned char i,j;
//int i;
//8-битный вывод старшим битом вперед! 16 ???.2004
for(i=0;i<8;i++){
SCLK=0;
bw=bw<<1;
DOUT=CY;
for(j=0;j<4;j++);//даём устаканиться
SCLK=1;
for(j=0;j<4;j++);//тоже
}
DIN=1;
}

в дебаггере есть ини-файл(имитируем AD7714):
signal void get_mess(void)
{
int i;
unsigned char sum;
while(1){
printf("wait\n");

while(!P1_0)twatch(1);//ждём перехода 0->1
while(P1_0)twatch(1); //ждём перехода 1- 0

printf("transmit begin\n");
sum=0;
for(i=0;i<8;i++){
sum=sum*2;
while(!P1_0)twatch(1);//ждём перехода 0-1
printf("%d \n",sum); //проверочный вывод
if(P1_1) sum++;
while(P1_0)twatch(1); //ждём перехода 1-0

//if(i==7)_break_=1;
}
printf("Sending =%d\n",sum);
P1_2=1;
}
}
signal void SET_DRDY(void)
{
P1_2=0;
twatch(16);
P1_2=1;
}
signal void start(void){
P1_3=0;
twatch(10);
P1_3=1;
}
signal void SET_SCLK(){
P1_0=0;
twatch(16);
P1_0=1;
}

exec("KILL BUTTON *")
define button "DRDY", "SET_DRDY()"
define button "get", "get_mess()"
define button "start", "start()"
define button "SCLK", "SET_SCLK()"


Так вопрос: при приёме байта почему-то не добивается последний SCLK?! Приходится делать SET_SCLK() из дебаггера.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru