ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
186090 Топик полностью
Гудвин, волшебник (20.03.2010 12:21 - 13:02, просмотров: 128) ответил ctpexhih на Хочу подключить датчик температуры Dallas 18B20 с интерфейсом 1-Wire к MSP 430. Вопрос, возможно ли будет выдержать те микросекундные интервалы времени, которые указаны в описании на данный стандарт, если я буду писать на Си? Вопрос родился потому, что в
Работает на С. Без проблем. При тактовой ~900 кГц. (Вроде сколько там по-умолчанию - в 11xx ;) ) void delay_us(unsigned short cnt) { while(cnt--); } unsigned char res_ds(void) // возвращает 0 если есть presence pulse { // возвращает 1 если нет presence pulse char i; // возвращает 2 если линия замкнута i=1; if (P2IN & BIT2) { P2DIR |= BIT2; delay_us(480/K);//zad(480 us); P2DIR &= ~BIT2; delay_us(90/K);//zad(90 us); i=P2IN & BIT2; delay_us(390/K);//zad(390 us); } else i=2; return i; } void out_ds(unsigned char b) { unsigned char i; for(i=0;i<8;i++) { P2DIR |= BIT2; _NOP(); if (b & 1) P2DIR &= ~BIT2; else P2DIR |= BIT2; delay_us(70/K); b=b>>1; P2DIR &= ~BIT2; _NOP(); _NOP(); } } unsigned char in_ds(void) { unsigned char i; unsigned char a; unsigned char b; b=0; for(i=0;i<8;i++) { P2DIR |= BIT2; _NOP(); P2DIR &= ~BIT2; _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); a=((P2IN & BIT2)<<5); delay_us(40/K); b=(b>>1)| a; } return b; }