|
|
  |
Переконвертить с AVR C на ASM, Нужен конвертор с AVR C на ASM |
|
|
|
Apr 21 2008, 06:38
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(QuickWitted @ Apr 21 2008, 10:20)  А вообще существуют проги для создания алгоритмов из исходников на C или ASMе? Очень сомневаюсь. В инсте в свое время писал построитель алгоритма (правда для VB). Но он просто брал конструкцию языка и рисовал для нее графический элемент. Польза этого в реальной жизни стремится к нулю... Может вы поподробней объясните, что вам конкретно надо?
|
|
|
|
|
Apr 21 2008, 06:39
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Kovrov @ Apr 21 2008, 11:30)  так они полюбому потеряются.... А я надеялся что есть с пояснялкой... (в том примере который я видел даже глубина ухода в стек в каждой процедуре указывалась) Вопрос тогда в виде алгоритме С код как нить представить АВТОМАТОМ можно? Цитата Может вы поподробней объясните, что вам конкретно надо? Использовать IRDA клавиатуру вместо пульта дистанционного управления...
Сообщение отредактировал QuickWitted - Apr 21 2008, 06:43
--------------------
|
|
|
|
|
Apr 21 2008, 07:03
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Палыч @ Apr 21 2008, 11:52)  Да попробуйте Вы посмотреть на Asm-текст, который генерит транслятор С. Может быть этого Вам будет достаточно. У меня нет С компилятора.... который бы давал асм листинг... (пригодный для компиляции - без переделок) в комплекте шол листинг но это откомпилить в асме не выйдет... правда можно написать программу выделения асм кода самому, но по-моему такая уже существует и изобретать велосипед... 526 /* #NOAPP */ 47:keyboard.c **** 48:keyboard.c **** // check for mega-space (start-bit) 49:keyboard.c **** // if(kb_counter < (8 << (kb_state << 1))) return; 50:keyboard.c **** if(kb_state && kb_counter < 32) return; 527 .stabn 68,0,50,.LM18-_interrupt0_ 528 .LM18: 529 009a 8091 lds r24,kb_state 529 0000 530 009e 8823 tst r24 531 00a0 21F0 breq .L38 532 00a2 8091 lds r24,kb_counter 532 0000 533 00a6 8032 cpi r24,lo8(32) 534 00a8 58F0 brlo .L29 535 .L38: 51:keyboard.c **** 52:keyboard.c **** // fake 5 zero-bits already came in 53:keyboard.c **** kb_state = 1; 536 .stabn 68,0,53,.LM19-_interrupt0_ 537 .LM19: Цитата Опа! А это какая связь с вопросом? Меня спросили зачем - я ответил... (смотри выше)
--------------------
|
|
|
|
|
Apr 21 2008, 07:20
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Непомнящий Евгений @ Apr 21 2008, 12:10)  а в чем проблема - иметь в проекте и с-файлы и asm? Зачем руками конвертить? А потому что целиком проект мне не подходит... мне от туда нужно только протокол выдрать... С я не знаю. Проект не коммерческий. И не в качестве дипломной. И на данный момент кроме http://www.swordgreenline.narod.ru/IgorPlug2.htmlдругих бесплатных модификаций IR работающих на USB2 доступных для сборки в интернете - НЕТ!!!! HELP!!!! Как перевести http://www.lourensrozema.nl/index.php/swk8630.inc в алгорит или в исходник на АСМ (готовый к компиляции) ???
Сообщение отредактировал QuickWitted - Apr 21 2008, 08:08
--------------------
|
|
|
|
|
Apr 21 2008, 08:43
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Ваш вопрос звучит так: HELP!!! Хочу собрать танк. Есть запорожец, собранный другим, хочу оттуда вырвать коробку передач и москвич, также собранный другим, хочу выдрать оттуда двигатель. Хочу чтобы вы мне всё это оттуда грамотно вырвали, а также хочу найти программу, которая всё это поймёт и мне "вкрутит". Помогите!!! PS: Сам я ничего не знаю, ни в автомобилях ни в танках не разбираюсь и разбираться нехочу!!!
|
|
|
|
|
Apr 21 2008, 10:06
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(SasaVitebsk @ Apr 21 2008, 13:43)  Ваш вопрос звучит так: PS: Сам я ничего не знаю, ни в автомобилях ни в танках не разбираюсь и разбираться нехочу!!! Неа... Танк я собрал сам!!! из запчастей от запорожца... Причём бесплатных аналогов этому чуду в интернете нет... Вот хочу его доработать... отсюда и вопрос как из С сорца получить нечто понятное (исходник на асме) или алгоритм? PS к SasaVitebsk: На твои авторские разработки глянуть можно? (только именно твои, а не завода...)
Сообщение отредактировал QuickWitted - Apr 21 2008, 10:09
--------------------
|
|
|
|
|
Apr 21 2008, 11:01
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Непомнящий Евгений @ Apr 21 2008, 15:15)  а все-ж таки: вариант найти книжку по С, потратить на нее пару дней и разобраться в С-сорце не рассматривается? Потом всё равно на асме писать придётся... у меня мало свободных регистров... (под USB заняты)
--------------------
|
|
|
|
|
Apr 22 2008, 04:15
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(prottoss @ Apr 21 2008, 16:38)   Если освоите Си о регистрах думать придется на порядок меньше времени.... А может вообще не придется Во во т.к. система ВООБЩЕ не запустится... И думать тут поэтому нечего... (ответственный куски отвечающие за USB даже в исходниках на СИ на асме созданы по той простой причине что алгоритм должен быть по тактам рассчитан...) Цитата(GDI @ Apr 21 2008, 17:23)  Вот тут посмотрите, тоже драйвер USB только сделан так что его можно прицепить к проекту на Си, бесплатен если открываете свой код, используют они WinAVR который тоже бесплатен. Да одно но он не совместим с имеющимся программным обеспечением сторонних производителей... (я имею в виду программы управления компом рассчитанные на IgorPlug) Да кстати я видел в енете попытку переписать проект IgorPlug на С... USBTiny назывался... USB там работал, но с измерениями производительности не хватило... Даже неприхотливый SlayContrl с оригинальным программным модулем под IgorPlug отказывался с ним работать... (мы этот модуль потом переписали под тормознутый сишный USBTiny) Цитата А получить алгоритм из ассемблерного листинга, полученного после хорошего компилятора Си, да еще с включенной максимальной оптимизацией : такой работенки я даже врагу не пожелаю... Как я давно уже понял если нужна максимальная производительность и оптимальный код писать надо ручками, а не корявыми компиляторами... Ладно отвлеклись от темы... Вопрос остаётся в силе как из C выдрать алгоритм в автомате? Дело не в том что мне лень, но ковырять исходник неделю не зная о существовании (в теории предположим что он существует) готового модуля который бы сделал это за минут 5 по-моему глупо... поэтому и решил сначала спросить
--------------------
|
|
|
|
|
Apr 22 2008, 04:38
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата Вопрос остаётся в силе как из C выдрать алгоритм в автомате? Встречный вопрос: А что вы подразумеваете под алгоритмом? В каком именно виде вы хотите его получить? PS Насчет корявых компиляторов - вы имхо загнули...
|
|
|
|
|
Apr 22 2008, 04:47
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Непомнящий Евгений @ Apr 22 2008, 09:38)  Встречный вопрос: А что вы подразумеваете под алгоритмом? В каком именно виде вы хотите его получить? Дано - клавиатура с неизвестным протоколомМетод мозгового штурма ничего не дал... есть 3 набора данных - при нажатии удержании и отпускании... в комп передавать нельзя... теряются данные пришедшие во время передачи в комп... при удержании кнопки несколько кнопок дают один и тот же код... также рассчитано нажатие разом 2х и более кнопок... надо сидеть и ковыряться... но если удастся вытащить из исходника на С это упростит задачу... P.S: Я не прошу что бы кто либо это сделал за меня... просто думал что уже есть готовые софтины и велосипед по энному разу изобретать не надо... Цитата PS Насчет корявых компиляторов - вы имхо загнули... Реальный случай НЕ РАБОТАЕТ по причине нехватки быстродействия... и что я тут загнул?
Сообщение отредактировал QuickWitted - Apr 22 2008, 04:49
--------------------
|
|
|
|
|
Apr 22 2008, 05:05
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(QuickWitted @ Apr 22 2008, 08:47)  Дано - клавиатура с неизвестным протоколом ... но если удастся вытащить из исходника на С это упростит задачу... Т.е. вам нужна программа, которая скушает текст на С и выдаст что-то вроде: "Если нажата клавиша 1, то передается такой код, если клавиша 2 в течении 3 секунд - такой код ..." Вы серьезно полагаете, что такие программы существуют?  Как вариант, можно попытаться запустить эту программу на компе, смоделировать входные воздействия и записать результаты, но ИМХО, это потребует от вас как минимум знания С, чего вы хотите избежать... Цитата Реальный случай НЕ РАБОТАЕТ по причине нехватки быстродействия... и что я тут загнул? "Для написания программы XXX для процессора YYY я не могу использовать С в силу жестких требований по производительности..." Слово "корявый" тут явно лишнее...
|
|
|
|
|
Apr 22 2008, 05:31
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Непомнящий Евгений @ Apr 22 2008, 10:05)  Т.е. вам нужна программа, которая скушает текст на С и выдаст что-то вроде: "Если нажата клавиша 1, то передается такой код, если клавиша 2 в течении 3 секунд - такой код ..." Это не алгоритм это блок схема мне не блок схема нужна, а подробный алгоритм... (есно блок схему ни одна программа на автомате не сделает) в идеале как в алгоритм буилдере... а под алгоритмом понимается ------------------------------------------------------ алгори́тм — это точный набор инструкций, описывающих последовательность действий некоторого исполнителя для достижения результата, решения некоторой задачи за конечное время. АЛГОРИТМ – система правил, сформулированная на понятном исполнителю языке, которая определяет процесс перехода от допустимых исходных данных к некоторому результату и обладает свойствами массовости, конечности, определенности, детерминированности. ------------------------------------------------------ Цитата "Для написания программы XXX для процессора YYY я не могу использовать С в силу жестких требований по производительности..." Слово "корявый" тут явно лишнее... Любой язык верхнего уровня для АВР транслирует результат в ассемблерный код... А если при написании это кода ручками всё прекрасно работает причём с большим запасом  , а при трансляции НЕТ то такая трансляция как называется?  Ладно соглашусь - не оптимальной...
--------------------
|
|
|
|
|
Apr 22 2008, 05:42
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(QuickWitted @ Apr 22 2008, 09:31)  Это не алгоритм это блок схема мне не блок схема нужна, а подробный алгоритм... ... Вы не могли бы привести кратенький пример того, что хотите получить? (с алгоритм-билдером я не знаком). К примеру для программы Код void main() { DDRA = 255; for (int i = 0; i< 100; ++i) PORTA = i; while(1); } Цитата Любой язык верхнего уровня для АВР транслирует результат в ассемблерный код... А если при написании это кода ручками всё прекрасно работает причём с большим запасом  , а при трансляции НЕТ то такая трансляция как называется?  Ладно соглашусь - не оптимальной... Не оптимальной по какому критерию? По критерию быстродействия для программы YYY на процессоре XXX. А по другим критериям или на другом процессоре или на другой программе - возможно оптимальной... Я к тому, что если инструмент вам не подходит в вашем конкретном случае, не стоит называть его корявым или неоптимальным...
|
|
|
|
|
Apr 22 2008, 05:56
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(QuickWitted @ Apr 22 2008, 12:31)  Это не алгоритм это блок схема мне не блок схема нужна, а подробный алгоритм... (есно блок схему ни одна программа на автомате не сделает) в идеале как в алгоритм буилдере... а под алгоритмом понимается ------------------------------------------------------ алгори́тм — это точный набор инструкций, описывающих последовательность действий некоторого исполнителя для достижения результата, решения некоторой задачи за конечное время. АЛГОРИТМ – система правил, сформулированная на понятном исполнителю языке, которая определяет процесс перехода от допустимых исходных данных к некоторому результату и обладает свойствами массовости, конечности, определенности, детерминированности. ------------------------------------------------------ Любой язык верхнего уровня для АВР транслирует результат в ассемблерный код... А если при написании это кода ручками всё прекрасно работает причём с большим запасом  , а при трансляции НЕТ то такая трансляция как называется? Ладно соглашусь - не оптимальной... Блин, ну Вы так умом блещщщите, что мне бы, например, было бы стыдно на Вашем месте создавать такую тему в форуме К примеру я, если алгоритм особливо сложный, создаю его сам, обычно с помощью карандаша и листа бумаги, или, если уж совсем туго, ищу в СМИ(литература, интернет). Если алгоритм не особливо сложный, пытаюсь представить его в своей голове и переложить в код сразу в компиляторе. Я, для себя, вариантов больше не вижу. Вам, возможно стоит разыскать терминатора - он машина умная, все расскажет
--------------------
|
|
|
|
|
Apr 22 2008, 06:12
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(prottoss @ Apr 22 2008, 10:56)  Блин, ну Вы так умом блещщщите, что мне бы, например, было бы стыдно на Вашем месте создавать такую тему в форуме  Стыдно потратить неделю на изобретение велосипеда по не знанию... Ладно делаю общий вывод: 1) Народ программы для построения алгоритмов на основе СИ кода не знает. (т.е. если она и есть то не распространенна) (я сам видел такую для дельфи и паскалей - в упор не помню как называется) 2) Как перекинуть код с СИ на асм в готовом к компилированию виде с сохранением исходного текста в качестве комментариев тоже пока никто не знает. (то что в файле *.lst не годится для компиляции на асме в автомате без изменений) Вывод - ТЕМА ЗАКРЫТА
Сообщение отредактировал QuickWitted - Apr 22 2008, 06:14
--------------------
|
|
|
|
|
Apr 22 2008, 07:36
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(QuickWitted @ Apr 22 2008, 10:12)  Стыдно потратить неделю на изобретение велосипеда по не знанию...
Ладно делаю общий вывод: 1) Народ программы для построения алгоритмов на основе СИ кода не знает. С программа уже и есть алгоритм  Цитата (т.е. если она и есть то не распространенна) Едут 2 ковбоя по прерии, вдруг на обочине дороги зашевелились кусты. Один ковбой хватается за пистолет. Второй - Не беспокойся, это неуловимый Джо! - А что, его так трудно поймать? - Нет, просто он никому не нужен. Так вот, такая программа - это тот самый неуловимый Джо Цитата (я сам видел такую для дельфи и паскалей - в упор не помню как называется) И что она выдаст для программы тысяч на 10 строк? А программу на 100 строк проще понять по тексту. Цитата 2) Как перекинуть код с СИ на асм в готовом к компилированию виде с сохранением исходного текста в качестве комментариев тоже пока никто не знает. Сто раз уже говорили, ключ -s выдаст ассемблер, вполне готовый к компиляции Цитата (то что в файле *.lst не годится для компиляции на асме в автомате без изменений) Разничу между листингом (.lst) и ассемблером (.s) надо объяснять? А может вы не там спрашиваете - получать из C программы Ассемблер, что бы разобраться с алгоритмом - это занятие для настоящих мазохистов  Там и надо искать, а здесь люди предпочитают работать, а не создавать себе трудности, которые потом героически преодолевают PS. Если программа на C небольшая, то бросили бы ее сюда вместе с вопросами, на которые хотите получить ответы - это будет быстрее, чем поиск мифических конверторов с С на Асм.
|
|
|
|
|
Apr 22 2008, 10:39
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(prottoss @ Apr 22 2008, 13:16)  вобщем вся тема - пыль. Это понятно из названия темы.  Конвертер из Си в ASM, то есть программа переводящая программу написанную на Си в другой вид - это по определению транслятор. Одной из разновидностей транслятора - компилятор. Современные распространённые компиляторы Си построены по принципу C/ASM/OBJ/HEX. Таким образом ASM текст присутствует. Программа построения алгоритма из Си программы (или ASM) большинству разработчиков ненужна ввиду того, что цикл разработки обратный, а именно сначала разрабатывается алгоритм (причём как правило укрупнённый), а уж потом пишется си прога. Иными словами программа строящая алгоритм из текста проги нужна в основном тем, кто разбирает чужие программы, причём, в основном, той части которая слабо разбирается в программировании. В связи с этим - потребность в таких программах - практически нулевая. Можно рекомендовать лишь то, что вам уже посоветовали другие. 1) Разобраться надо ли вам вообще программирование. (Дальнейшие пункты будут актуальны только если ответ - да) 2) Разобраться в базовых понятиях 3) Начать изучать язык Си
|
|
|
|
|
Apr 22 2008, 15:50
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(QuickWitted @ Apr 22 2008, 10:12)  1) Народ программы для построения алгоритмов на основе СИ кода не знает. В стародавние времена (лет 20-30 тому назад) алгоритмы было принято публиковать на распространенном в те времена языке АЛГОЛ. И заметьте это официаль считалось публикацией алгоритма. А знает или нет читатель АЛГОЛ - это проблема читателя. Программ, которые из скажем кода на С чего-нибудь вроде БПФ сделает вам описание алгоритма как в учебнике - нет и не предвидется. Цитата(QuickWitted @ Apr 22 2008, 10:12)  2) Как перекинуть код с СИ на асм в готовом к компилированию виде с сохранением исходного текста в качестве комментариев тоже пока никто не знает. (то что в файле *.lst не годится для компиляции на асме в автомате без изменений) С точки зрения повышения быстродействия бессмысленная идея, так АСМ код, получаемый таким транслятором в точности соответствует тому, что сгенерит компилятор. Если вам надо оптимизировать с точки зрения быстродействия или ресурсов что-то написанное на С, то ничего, кроме тупого вникание в сишный код и переложение его на асм руками не придумано. Идея заниматься оптимизацией АСМа из-под С не продуктивна, так как в рамках модели компилятор генерит достаточно оптимальный код.
|
|
|
|
|
Apr 23 2008, 06:11
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(XVR @ Apr 22 2008, 17:50)  Алгоритм работы программы: Посылка с IR: 3 байта (старшим битом вперед) 1) 07 - Синхронизация 2) 50 - Отпускание клавиши / 5A - Нажатие 3) xx - Номер клавиши (>=80) Может я захватываю не все байты (т.е. устройство переключается на передачу данных в комп) но первая посылка максимум на 7 бит тянет... (больше похоже на 6) (в пределах (длинна посылки)*5 следующей посылка не начинается) результат измерений и вьювер для их просмотра тут http://swordgreenline.narod.ru/Soft.htmlфайл IROscil.zip (он там один) в архиве программа и принятые файлы надо открыть файл Klava.txt далее просмотреть кодировку во вкладке осциллографа в файле сохранено 6 нажатий ентера наблюдается старт посылка посылки при удержании и посылка при отпускании
Сообщение отредактировал QuickWitted - Apr 23 2008, 06:20
--------------------
|
|
|
|
|
Apr 23 2008, 08:13
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(XVR @ Apr 22 2008, 17:50)  Посылка с IR: 3 байта (старшим битом вперед) В связи с тем что принимаемые посылки устойчивы во времени для заданной кнопки то выкинув повторы собрал разновидности для 3х кнопок [attachment=20278:attachment] вьювер для просмотра тут http://swordgreenline.narod.ru/Soft.htmlфайл IROscil.zip (он там один) Цитата 1) 07 - Синхронизация во всех посылках повторяется начало ДЛИННА первых 4х бит 70h; 23h; 27h; 23h (импульс - пауза - импульс - пауза) Хвост разный для разных кнопок... разброс +-2 даже в посылке от одной кнопке Вопрос как из длинны 4х бит получить цифру 07 ? (не обязательно все 4 бита входят в 07 там может быть стартовый и может быть захвачен кусок след цифры) P.S: Все измерения проходили в крякозябриках IgorPlug2 (за 1 ед. принято ~= 42.62 us)
Сообщение отредактировал QuickWitted - Apr 23 2008, 08:20
--------------------
|
|
|
|
|
Apr 23 2008, 19:14
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(QuickWitted @ Apr 23 2008, 10:11)  Может я захватываю не все байты (т.е. устройство переключается на передачу данных в комп) но первая посылка максимум на 7 бит тянет... (больше похоже на 6) (в пределах (длинна посылки)*5 следующей посылка не начинается) результат измерений и вьювер для их просмотра тут http://swordgreenline.narod.ru/Soft.htmlфайл IROscil.zip (он там один) Я не смог освоить эту крутую программу  Видимо получить от нее длинну посылки невозможно, а одного вида импульсов недостаточно В сорце импульсы принимались просто по длительности. Начало посылки выделялось по паузе (более 32х интервалов) и импульсу длинной 3 интервала (т.е. код 07). Затем заводился таймер, который сэмплировал значение с входа приемника каждый интервал. Все захваченные биты складывались в байты, которые анализировались, как я писал раньше. Длинна интервала - 800 mks Коды повтора похоже игнорировались
|
|
|
|
|
Apr 24 2008, 05:11
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(XVR @ Apr 24 2008, 00:14)  Я не смог освоить эту крутую программу  Видимо получить от нее длину посылки невозможно, а одного вида импульсов недостаточно  Поводи мышкой по виду – сразу над диаргаммой показывается над каким импульсом мыша и длинна импульса эти же цифры в строчках сверху, суммарную длину не считал. Цитата В сорце импульсы принимались просто по длительности. Начало посылки выделялось по паузе (более 32х интервалов) и импульсу длинной 3 интервала (т.е. код 07). Т.е. алгоритм примерно такой (в скобках замеренные модулем IgorPlug2 числа в hex - они в 16 раз больше и прыгают +/-2) 1) ждать тишины в большей 32х интервалов (мин тишина 395h между посылками) 2) принять старт бит - код 07 (замерено около 71h) 3) потом что? Цитата Затем заводился таймер, который сэмплировал значение с входа приемника каждый интервал. Все захваченные биты складывались в байты, которые анализировались, как я писал раньше. как складываются биты в байты? (как различаются бит0 от бита1) сравнивается замеренное с числом если меньше то ноль если больше единица? или сдвижка импульса относительно центра посылки? (хотя мне кажется тут другая методика) наблюдается куча мелких посылок и иногда крупные причём очень похоже что крупные состоят из нескольких мелких причём при этом вторая часть крупной посылки идёт с инверсией (видно по стартовой части 072 023 026 023) в середине ------------------------------------------------------------------------- пример мелкой на 6 импульсов - при нажатии кнопки первый импульс - 072 023 026 023 04B 023 026 023 025 049 025 049 06E пауза больше 800h ------------------------------------------------------------------------- ------------------------------------------------------------------------- пример крупной на 15 импульсов первый импульс - 071 023 026 023 026 091 026 023 026 048 026 023 04A 000 далее длинный импульс 192 это пауза в середине - 070 023 026 023 049 025 025 024 025 024 06E 026 06D 000 293 - большая пауза ------------------------------------------------------------------------- ------------------------------------------------------------------------- пример крупной на 12 импульсов первый импульс - 071 023 026 023 04B 023 027 022 027 047 027 047 06E 000 далее длинный импулс 393 это пауза в середине - 070 023 026 023 026 091 026 048 026 048 пауза больше 800h ------------------------------------------------------------------------- все полученные коды методом тыка на клавиши... до 100 - по 1 клавиши от 101 до 180 жали на несколько разом... [attachment=20310:attachment]
--------------------
|
|
|
|
|
Apr 24 2008, 06:22
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(XVR @ Apr 24 2008, 00:14)  Я не смог освоить эту крутую программу  1) все импульсы имеют постоянное знакоместо их начала... т.е. на одном и том же расстоянии от начала возможны варианта 1)импульс есть 2)импульс есть, но он слился с несколькими последующим или отел часть паузы 3)импульса нет. Стандартная длинна импульса 26h или 49h 2) начало всегда одинаковое - после длинного молчания 1)импульс71h - пауза23h - 2)импульс26h - пауза23h (071 023 026 023) 3) на 3 знакоместе может быть 2 варианта длинны импульса стандартный 26h и удлинённый за счёт паузы 49 [attachment=20312:attachment]
--------------------
|
|
|
|
|
Apr 24 2008, 08:07
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(QuickWitted @ Apr 24 2008, 09:11)  Поводи мышкой по виду – сразу над диаргаммой показывается над каким импульсом мыша и длинна импульса эти же цифры в строчках сверху, суммарную длину не считал. Меня смутило то, что на импульсы визуально разной длинны (для разных клавиш) он показывал одно и тоже значение Цитата Т.е. алгоритм примерно такой (в скобках замеренные модулем IgorPlug2 числа в hex - они в 16 раз больше и прыгают +/-2) 1) ждать тишины в большей 32х интервалов (мин тишина 395h между посылками) 2) принять старт бит - код 07 (замерено около 71h) 3) потом что? Алгоритм такой: - Ждать тишины > 32х интервалов
- Ждать начала посылки
- Отсчитать пол-интервала, с этого места начать непрерывно считывать сигнал с IR датчика с заданным интервалом (около 23h по IgorPlug2)
- Считанные биты обрабатываются следующим образом:
- Первые 3 бита должны быть 1 (есть сигнал с IR входа) - Стартовый маркер
- Далее биты складываются в байты (по 8 битов) начиная со старшего бита в байте, т.е. бит 7, бит 6, бит 5 ... бит 0, всего 2 байта
- 1й байт из этих 2х - кон нажатия/отпускания клавиши
- 2й байт - номер клавиши + 128 (старший бит установлен)
Если протокол не соблюдается (стартовые биты не все 1 или код нажатия/отпускания не правильный или старший бит в номере клавиши не установлен), посылка игнорируется и все начинается сначала Цитата наблюдается куча мелких посылок и иногда крупные причём очень похоже что крупные состоят из нескольких мелких причём при этом вторая часть крупной посылки идёт с инверсией (видно по стартовой части 072 023 026 023) в середине Оригинальная программа все это игнорирует Цитата ------------------------------------------------------------------------- пример мелкой на 6 импульсов - при нажатии кнопки первый импульс - 072 023 026 023 04B 023 026 023 025 049 025 049 06E пауза больше 800h ------------------------------------------------------------------------- - 072 - Стартовый импульс
- 023 026 023 04B 023 026 023 - 01011010 - 5A - Нажатие
- 025 049 025 049 06E - 10010011 (1) - Клавиша с номером 19 - ESC
Цитата ------------------------------------------------------------------------- пример крупной на 15 импульсов первый импульс - 071 023 026 023 026 091 026 023 026 048 026 023 04A 000 - 071 - Старт
- 023 026 023 026 091 - 01010000 - 50 - Оттускание
- 026 023 026 048 026 023 04A - 10100101 (1) - Клавиша с номером 37 - PrtScr
Остаток посылки будет проигнорирован
|
|
|
|
|
Apr 24 2008, 08:33
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(XVR @ Apr 24 2008, 13:07)  Меня смутило то, что на импульсы визуально разной длинны (для разных клавиш) он показывал одно и тоже значение Это из за авто зума покрути вкладку сетингс... а для большей визуальности я переделал алгоритм отображения импульса под мышкой добавил расчёт позиции, цену одного деления и т.д. т.е. добавил рюшечек и бантиков... результат выложил тут http://swordgreenline.narod.ru/Soft.htmlфайл IROscil.zip (он там один) Цитата - 071 - Старт
- 023 026 023 026 091 - 01010000 - 50 - Оттускание
- 026 023 026 048 026 023 04A - 10100101 (1) - Клавиша с номером 37 - PrtScr
Остаток посылки будет проигнорирован За пояснения спасибо - буду разбираться...
--------------------
|
|
|
|
|
Apr 24 2008, 11:53
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(QuickWitted @ Apr 24 2008, 12:33)  а для большей визуальности я переделал алгоритм отображения импульса под мышкой добавил расчёт позиции, цену одного деления и т.д. т.е. добавил рюшечек и бантиков... результат выложил тут http://swordgreenline.narod.ru/Soft.htmlфайл IROscil.zip (он там один) Советую добавить показ временной сетки (в тиках или mks) на осцилограмме. Так же приходит на ум какая-нибудь внешняя прилада для экспериментов с обработкой принятых данных для оперативных экспериментов с кодированием и пр. Например в виде внешней программы, читающей последовательность через поток ввода (или параметр) и выдающая обработанное значение на вывод в виде текста или такой же последовательности.
|
|
|
|
|
Apr 25 2008, 05:03
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(Непомнящий Евгений @ Apr 22 2008, 10:42)  Вы не могли бы привести кратенький пример того, что хотите получить? (с алгоритм-билдером я не знаком). К примеру для программы Код void main() { DDRA = 255; for (int i = 0; i< 100; ++i) PORTA = i; while(1); } Теперь могу
во клас - 3 клика мышкой и алгоритм готов За программу большое спасибо
Сообщение отредактировал QuickWitted - Apr 25 2008, 05:10
--------------------
|
|
|
|
|
Jun 2 2008, 09:23
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Цитата(XVR @ Apr 24 2008, 13:07)  Алгоритм такой: - Ждать тишины > 32х интервалов
- Ждать начала посылки
- Отсчитать пол-интервала, с этого места начать непрерывно считывать сигнал с IR датчика с заданным интервалом (около 23h по IgorPlug2)
- Считанные биты обрабатываются следующим образом:
- Первые 3 бита должны быть 1 (есть сигнал с IR входа) - Стартовый маркер
- Далее биты складываются в байты (по 8 битов) начиная со старшего бита в байте, т.е. бит 7, бит 6, бит 5 ... бит 0, всего 2 байта
- 1й байт из этих 2х - кон нажатия/отпускания клавиши
- 2й байт - номер клавиши + 128 (старший бит установлен)
За исключением того, что старший бит второго байта оказался синхроимпульсом всё примерно так и работает: http://www.mindrunway.msevm.com/ 29.05.08. В рамках проекта IgorPlug2 удалось добиться аппаратного распознавание сигнала от двух независимых источников: А) IR клавиатуры SWK-8630. (клавиатура от интернет приставки NetBox). Б) "Обученного" через прилагаемую программу ПДУ от бытовой техники. В связи с этим была доработана программа осциллографа и перекомпилирован набор экспериментальных прошивок для управляемого реле. всем спасибо...
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|