ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
436254 Топик полностью
Гyдвин, волшебник (26.08.2013 16:37 - 16:41, просмотров: 137) ответил fk0 на Пример из реального проекта: модуль работающий с LIS3XXX -- 466 строк, промежуточный слой к нему 246 строк, I2C к нему 325 строк -- ~1037 строк кода, порядка 8кБайт прошивки. Которая пишется и отлаживается за пару недель. Ну а если на ассемблере
Акуеть, не встать. Килобайты не забудь поЩитать...  void lis_write(unsigned char adr, unsigned char data) { CS_ON_LIS; UCA0TXBUF = adr; // USI = adr ; // запись while (UCA0STAT & UCBUSY); UCA0TXBUF = data; while (UCA0STAT & UCBUSY); CS_OFF_LIS; } unsigned char lis_read(unsigned char adr) { CS_ON_LIS; UCA0TXBUF = adr + 0x80;// USI = adr+ 0x80; // чтение while (UCA0STAT & UCBUSY); UCA0TXBUF = 0xFF; while (UCA0STAT & UCBUSY); CS_OFF_LIS; return UCA0RXBUF; } void init_lis3d(void) { UCA0CTL1 |= UCSWRST; // **Reset UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI master UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 |= 0x01; // /1 UCA0BR1 = 0; UCA0MCTL = 0; // No modulation P1SEL |= BIT1 + BIT2 + BIT4; P1SEL2 |= BIT1 + BIT2 + BIT4; UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** lis_write(CTRL_REG1,0x74); // включим Z, 400 Гц lis_write(CTRL_REG5,0x80); // Reboot memory content __delay_cycles(5000); // ждем 5 ms времени инициализации lis_write(CTRL_REG1,0x0); // power down } ////////////////////тыры-пыры lis_write(CTRL_REG1,0x27); // 10 Hz xyz //////////////////////////тыры-пыры z = lis_read(OUT_Z_H); x = lis_read(OUT_X_H); y = lis_read(OUT_Y_H);