Paleks 0 11 октября, 2011 Опубликовано 11 октября, 2011 · Жалоба Есть прошивка рабочая (gsm сигнализация) ее 2 года назад сделали. Сейчас возникла необходимость скорректировать уровень усиления микрофона и запрос баланса изменить. Человек который ее сделал, куда-то пропал, не отвечает на письма. Сможете помочь? Если да, пишите договоримся - aleksu19(собака)rambler.ru Прошивка написана на Си с Salvo RTOS Кусок исходника ниже -------------------------------------------------------------------------------- #include "conf.h" char smb1, smb2, smb_w[2] = { 0xFB, 0x02 }; void init_v(void) { smb1 = 0xFB; // стартовый символ smb2 = 0x5D; // завершающий символ rcMode.pSmbBegin = &smb1; rcMode.pSmbEnd = &smb2; rcMode.nSmbBegin = rcMode.nSmbEnd = 1; rcMode.nSmbCmp = 0; rcMode.state = 0; // begin rcMode.nRd = 1; rcMode.startTimeout = 100; rcMode.intervalTimeout = 100; } void conf1Task(void) { static char c; static unsigned int a1; char m, z, b; indCtrl.indType = conf_pc; setUART_BR9600(); init_v(); while (1) { OSStartTask(OSTCBP_rcDataTask); // запуск задачи - "прием данных" OS_WaitBinSem(GETS_SEM, OSNO_TIMEOUT, conf1Task_L1); if ((c = getRCount()) != 1) { if (c == 0) continue; resetRxBuf(); continue; } m = getByte(); switch (m) { case 1: // запись данных a1 = 0; rcMode.pSmbBegin = smb_w; rcMode.nSmbBegin = 2; rcMode.nRd = CONF_BUF_SIZE; txByte(0xFB); txByte(0x00); txByte(0x5D); // ответ - "OK" eeprom_write(AUTO_INFO_F_OF, 0); while (a1 < CONF_IMAGE_SIZE) { LED_NET = 1; OSStartTask(OSTCBP_rcDataTask); OS_WaitBinSem(GETS_SEM, OSNO_TIMEOUT, conf1Task_L2); LED_NET = 0; if (getRCount() != CONF_BUF_SIZE + 1) { resetRxBuf(); init_v(); continue; } if (getByte() != CONF_BUF_SIZE) { txByte(0xFB); txByte(0xFF); txByte(0x5D); // ответ - "ERROR" resetRxBuf(); init_v(); continue; } for (z = 0; z < CONF_BUF_SIZE; z++) // запись блока данных { eeprom_write(a1++, getByte()); } txByte(0xFB); txByte(0x00); txByte(0x5D); } OS_Delay(10, conf1Task_L3); CRC16 = 0xFFFF; for (a1 = 0; a1 < CONF_IMAGE_SIZE; a1++) // подсчет контрольной суммы { doCRC16(eeprom_read(a1)); } txByte(0xFB); // передача контрольной суммы для проверки txByte(0x03); txByte(CRC16 & 0xFF); txByte(CRC16 >> ; txByte(0x5D); break; case 4: // чтение данных rcMode.pSmbBegin = &smb1; rcMode.nSmbBegin = 1; rcMode.nRd = 1; txByte(0xFB); txByte(0x00); txByte(0x5D); // ответ - "OK" a1 = 0; CRC16 = 0xFFFF; while (a1 < CONF_IMAGE_SIZE) { LED_NET = 1; txByte(0xFB); txByte(0x05); txByte(CONF_BUF_SIZE); for (z = 0; z < CONF_BUF_SIZE; z++) { txByte(b = eeprom_read(a1++)); doCRC16(; } txByte(0x5D); LED_NET = 0; OSStartTask(OSTCBP_rcDataTask); OS_WaitBinSem(GETS_SEM, OSNO_TIMEOUT, rcDataTask_L4); if (getRCount() != 1 || getByte() != 0x08) { resetRxBuf(); init_v(); continue; } } txByte(0xFB); txByte(0x07); txByte(CRC16 & 0xFF); txByte(CRC16 >> ; txByte(0x5D); break; } init_v(); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 12 октября, 2011 Опубликовано 12 октября, 2011 · Жалоба demiurg_spb [s_o_b_a_k_a] freemail [т_о_ч_к_а] ru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikrosystem 0 23 октября, 2011 Опубликовано 23 октября, 2011 · Жалоба Могу помочь mikrosystem собака mail точка ru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться