SergeyM 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Народ привет! Возникла проблема, нужно передать код через радио канал. На данном этапе стоит задача отработать передачу данных напрямую через короткий проводок на макетке. Дак вот наблюдается нестабильность в получении кода, что на пике , что на авр. Может кто реализовывал типичную проблему, так не подскажите как лучше это сделать? Посылку произвожу манчестерским кодом со стартовым битом, по которому и определяю начало пакета. Вобщем вот два кода. Код кодера на пике: // Функция передачи пакета кода void code(unsigned int Low,unsigned int Hi) { unsigned int c; if(DataOutCount < PAKET){ if ((DataOutCount < HPAKET) && (DataReady == 12) ){ if (stop){ c = Low; LowDataOut >>= 1; //DataOutCount++; } } else if ((DataOutCount >= HPAKET) && (DataReady == 12)){ if (stop){ c = Hi; HiDataOut >>= 1; //DataOutCount++; } } switch (DataReady) { case 10: if (i < 4){ RB2 = 0; i++; } else{ i = 0; DataReady++; } break; case 11: DataReady++; RB2 = 1; break; case 12: if ((c & DataCheck) == DataCheck){ RB2 = 0; DataReady--; } else { if (i < 1){ stop = 0; RB2 = 0; i++; break; } else{ i = 0; stop = 1; DataReady--; } } //LowDataOut >>= 1; DataOutCount++; break; default: DataReady++; RB2 = 1; break; } } else{ RB2 = 1; DataShow = 0; DataReady = 0; DataOutCount = 0; } } Код декодера, реализовывал на пике и на авр, один к одному, изменив только переменные железа interrupt [EXT_INT0] void ext_int0_isr(void) { //SaveRTC = CurrentRTC;// Place your code here switch (MCUCR){ case 0x0E: GIMSK=0x80; MCUCR = 0x0F; // установили на фронт SaveRTC = ((Count & 0x0FF) << 8) + TCNT0; GIMSK=0xC0; break; case 0x0F: GIMSK=0x80; MCUCR = 0x0E; GIMSK=0xC0; CurrentRTC = ((Count & 0x0FF) << 8) + TCNT0; PeriodRTC = CurrentRTC - SaveRTC; SaveRTC = PeriodRTC; if (SaveRTC < 0) SaveRTC = 0 - SaveRTC; if ((SaveRTC > 700) && (SaveRTC < 1000)){// определили что это стартовый бит //PORTB = 0x01; DataInCount = PAKET; LowDataIn = 0; HiDataIn = 0; } if ((SaveRTC > 30) && (SaveRTC < 250) || (SaveRTC > 480) && (SaveRTC < 490)){ // это 1 if (DataInCount <= HPAKET) LowDataIn = (LowDataIn << 1) + 1; // получена 1 else if (DataInCount > HPAKET) HiDataIn = (HiDataIn << 1) + 1; if (--DataInCount == 0) DataReady = 1; } if ((SaveRTC > 250) && (SaveRTC < 480)){ // это 0 if (DataInCount <= HPAKET) LowDataIn = LowDataIn << 1; else if (DataInCount > HPAKET) HiDataIn = HiDataIn << 1; if (--DataInCount ==0) DataReady = 1; } //GIMSK=0xC0; SaveRTC = 0; break; } //CurrentRTC++; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
afe 0 28 февраля, 2006 Опубликовано 28 февраля, 2006 · Жалоба A dlya nachala rekomenduyu podat' sinxroposledovatel'nost' (al-ya 9 bit '1') i dobavlyat' parity po 4/8 ili luchshe checksum ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyM 0 28 февраля, 2006 Опубликовано 28 февраля, 2006 · Жалоба А примерчик как это реализовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
afe 0 1 марта, 2006 Опубликовано 1 марта, 2006 · Жалоба Для начала уточнить, в одну/две стороны, я подобную задачу исполнял на RFID H400x (RO 40 бит чистых, а с parity 64 + 9 синхра, эти чипы еще использовались в автомобильных имобилайзерах до года выпуска не помню, для примера в Honde CR-V, проверено ;-) и V4050 (RW 1Kbit?, podimat' info nado, davno bilo ;-\ ) и на PIC16F84 (~1994 год) и на AVR (90s2313 после того как они появились) на 4 MHz ... Схема на AVR состояла из одного транзистора и катушки и питалось это все от COM порта, и RFID еще запитывалась по радио от него же (и хватало энергии даже на запись с растояния ~5 см), правда RFID был в карточку был упакован, а само устройство по площади такое же было (в плате была фрезеровка по торцу в канавке которой была намотана катушка), блин нужно найти образец и в галерею ;-\ PS: 125KHz частота , бит там кодился 64 такта (или 32 PSK) ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
afe 0 1 марта, 2006 Опубликовано 1 марта, 2006 (изменено) · Жалоба Для начала уточнить, в одну/две стороны, я подобную задачу исполнял на RFID H400x (RO 40 бит чистых, а с parity 64 + 9 синхра, эти чипы еще использовались в автомобильных имобилайзерах до года выпуска не помню, для примера в Honde CR-V, проверено ;-) и V4050 (RW 1Kbit?, podimat' info nado, davno bilo ;-\ ) и на PIC16F84 (~1994 год) и на AVR (90s2313 после того как они появились) на 4 MHz ... Схема на AVR состояла из одного транзистора и катушки и питалось это все от COM порта, и RFID еще запитывалась по радио от него же (и хватало энергии даже на запись с растояния ~5 см), правда RFID был в карточку был упакован, а само устройство по площади такое же было (в плате была фрезеровка по торцу в канавке которой была намотана катушка), блин нужно найти образец и в галерею ;-\ PS: 125KHz частота , бит там кодился 64 такта (или 32 PSK) ... PSS: Zabil dobavit' site, chtobi ponyat' o chem ya raskazival dly SergeyM (i ya dumayu mnogim budet interesno, u menya stari PDF ostalis'): http://www.emmarin.ch/Line.asp?IdLine=3 PSSS: A esli komu nuzhno po HITAG 1/2 v lichku PSSSS: A voobshe nuzhno znat' tvoyu zadachu i mozhet tebe nado FSK i paru chipov kotorie po RF peredayut, chtobi ne zamorachivatsi ... I ne isklucheno chto eto deshevle budet, esli na obshee obozrenie ne xochesh' vinosit' zadachu pishi v lichku ... Изменено 1 марта, 2006 пользователем afe Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ptr73 0 3 марта, 2011 Опубликовано 3 марта, 2011 · Жалоба Интересует документация по HITAG 1 и HITAG S Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 7 марта, 2011 Опубликовано 7 марта, 2011 (изменено) · Жалоба Возникла проблема, нужно передать код через радио канал. Эхх !!! Вот материалы, которые я насобирал при реализации подобного проекта. Очень советую ознакомиться: http://zalil.ru/30629340 P.S. Да, а сколько данных нужно слать ? Изменено 7 марта, 2011 пользователем kovigor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться