реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Переконвертить с AVR C на ASM, Нужен конвертор с AVR C на ASM
prottoss
сообщение Apr 22 2008, 09:16
Сообщение #31


Гуру
******

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



Цитата(XVR @ Apr 22 2008, 14:36) *
PS. Если программа на C небольшая, то бросили бы ее сюда вместе с вопросами, на которые хотите получить ответы - это будет быстрее, чем поиск мифических конверторов с С на Асм.
ПрАграмма как раз из разряда "100 строк" - я специально скачал чтоб посмотреть - там в основном работа с портами - пиши хоть на Ассемблере, хоть на Си - код будет практически одинаков - вобщем вся тема - пыль.


--------------------
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 22 2008, 10:39
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(prottoss @ Apr 22 2008, 13:16) *
вобщем вся тема - пыль.

Это понятно из названия темы. smile.gif Конвертер из Си в ASM, то есть программа переводящая программу написанную на Си в другой вид - это по определению транслятор. Одной из разновидностей транслятора - компилятор. Современные распространённые компиляторы Си построены по принципу C/ASM/OBJ/HEX. Таким образом ASM текст присутствует.

Программа построения алгоритма из Си программы (или ASM) большинству разработчиков ненужна ввиду того, что цикл разработки обратный, а именно сначала разрабатывается алгоритм (причём как правило укрупнённый), а уж потом пишется си прога. Иными словами программа строящая алгоритм из текста проги нужна в основном тем, кто разбирает чужие программы, причём, в основном, той части которая слабо разбирается в программировании. В связи с этим - потребность в таких программах - практически нулевая.

Можно рекомендовать лишь то, что вам уже посоветовали другие.

1) Разобраться надо ли вам вообще программирование. (Дальнейшие пункты будут актуальны только если ответ - да)
2) Разобраться в базовых понятиях
3) Начать изучать язык Си
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 22 2008, 10:57
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(SasaVitebsk @ Apr 22 2008, 14:39) *
Иными словами программа строящая алгоритм из текста проги нужна в основном тем, кто разбирает чужие программы, причём, в основном, той части которая слабо разбирается в программировании. В связи с этим - потребность в таких программах - практически нулевая.

оффтоп, конечно, но по-моему такая программа была бы весьма востребована. Многим приходится разбираться в чужих исходниках и некий инструмент, который получив текст на ЯП выдал бы осмысленное укрупненное описание был бы весьма полезен. Хотя врядли сегодня доступно что-то подобное...
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 22 2008, 12:50
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Алгоритм работы программы:

Посылка с IR: 3 байта (старшим битом вперед)



1) 07 - Синхронизация

2) 50 - Отпускание клавиши / 5A - Нажатие

3) xx - Номер клавиши (>=80)



В PC отсылаются коды (по порядку):

E0 - Если клавиша принадлежит расширенному набору (см. ниже)

F0 - Для отпускания клавиши

xx - Скан код



Таблица скан кодов лежит в файле keys.h (первый столбец - скан код, второй - признак расширенного набора)

Если скан код равен 0 - клавиша игнорируется
Go to the top of the page
 
+Quote Post
vvs157
сообщение Apr 22 2008, 15:50
Сообщение #35


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



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


Местный
***

Группа: Участник
Сообщений: 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


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Apr 23 2008, 08:13
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 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


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 23 2008, 19:14
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(QuickWitted @ Apr 23 2008, 10:11) *
Может я захватываю не все байты (т.е. устройство переключается на передачу данных в комп)
но первая посылка максимум на 7 бит тянет... (больше похоже на 6)
(в пределах (длинна посылки)*5 следующей посылка не начинается)

результат измерений и вьювер для их просмотра тут
http://swordgreenline.narod.ru/Soft.html
файл IROscil.zip (он там один)
Я не смог освоить эту крутую программу 05.gif Видимо получить от нее длинну посылки невозможно, а одного вида импульсов недостаточно wacko.gif



В сорце импульсы принимались просто по длительности. Начало посылки выделялось по паузе (более 32х интервалов) и импульсу длинной 3 интервала (т.е. код 07). Затем заводился таймер, который сэмплировал значение с входа приемника каждый интервал. Все захваченные биты складывались в байты, которые анализировались, как я писал раньше. Длинна интервала - 800 mks



Коды повтора похоже игнорировались
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Apr 24 2008, 05:11
Сообщение #39


Местный
***

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



Цитата(XVR @ Apr 24 2008, 00:14) *
Я не смог освоить эту крутую программу 05.gif Видимо получить от нее длину посылки невозможно, а одного вида импульсов недостаточно wacko.gif


Поводи мышкой по виду – сразу над диаргаммой показывается над каким импульсом
мыша и длинна импульса эти же цифры в строчках сверху, суммарную длину не считал.

Цитата
В сорце импульсы принимались просто по длительности.
Начало посылки выделялось по паузе (более 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]


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Apr 24 2008, 06:22
Сообщение #40


Местный
***

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



Цитата(XVR @ Apr 24 2008, 00:14) *
Я не смог освоить эту крутую программу 05.gif


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]


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 24 2008, 08:07
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(QuickWitted @ Apr 24 2008, 09:11) *
Поводи мышкой по виду – сразу над диаргаммой показывается над каким импульсом
мыша и длинна импульса эти же цифры в строчках сверху, суммарную длину не считал.
Меня смутило то, что на импульсы визуально разной длинны (для разных клавиш) он показывал одно и тоже значение
Цитата
Т.е. алгоритм примерно такой
(в скобках замеренные модулем IgorPlug2 числа в hex - они в 16 раз больше и прыгают +/-2)
1) ждать тишины в большей 32х интервалов (мин тишина 395h между посылками)
2) принять старт бит - код 07 (замерено около 71h)
3) потом что?
Алгоритм такой:
  1. Ждать тишины > 32х интервалов
  2. Ждать начала посылки
  3. Отсчитать пол-интервала, с этого места начать непрерывно считывать сигнал с IR датчика с заданным интервалом (около 23h по IgorPlug2)
  4. Считанные биты обрабатываются следующим образом:

  1. Первые 3 бита должны быть 1 (есть сигнал с IR входа) - Стартовый маркер
  2. Далее биты складываются в байты (по 8 битов) начиная со старшего бита в байте, т.е. бит 7, бит 6, бит 5 ... бит 0, всего 2 байта
  3. 1й байт из этих 2х - кон нажатия/отпускания клавиши
  4. 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
Остаток посылки будет проигнорирован
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Apr 24 2008, 08:33
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 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
Остаток посылки будет проигнорирован


За пояснения спасибо - буду разбираться...


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 24 2008, 11:53
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(QuickWitted @ Apr 24 2008, 12:33) *
а для большей визуальности я переделал алгоритм отображения импульса под мышкой
добавил расчёт позиции, цену одного деления и т.д.
т.е. добавил рюшечек и бантиков... результат выложил тут
http://swordgreenline.narod.ru/Soft.html
файл IROscil.zip (он там один)
Советую добавить показ временной сетки (в тиках или mks) на осцилограмме. Так же приходит на ум какая-нибудь внешняя прилада для экспериментов с обработкой принятых данных для оперативных экспериментов с кодированием и пр. Например в виде внешней программы, читающей последовательность через поток ввода (или параметр) и выдающая обработанное значение на вывод в виде текста или такой же последовательности.
Go to the top of the page
 
+Quote Post
Corvus
сообщение Apr 24 2008, 14:25
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Насчёт преобразования кода на С в блок-схему. Есть такая программа, CrystalCPP Flow Chart
http://www.sgvsarc.com/product_crystalflow.htm
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Apr 25 2008, 05:03
Сообщение #45


Местный
***

Группа: Участник
Сообщений: 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 клика мышкой и алгоритм готов

За программу большое спасибо beer.gif

Сообщение отредактировал QuickWitted - Apr 25 2008, 05:10


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 03:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01465 секунд с 7
ELECTRONIX ©2004-2016