sheld 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба Здравствуйте, есть одна проблема. Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах. Со схемотехникой,таймерами и всякой переферией проблем нет. есть проблема с индикацией частоты. К сожалению С почти не знаю, поэтому пишу на асме. в полете мысли пришел, что частоту сигнала нужно вычислять деля частоту таймера 1МГц, на N - число отсчетов таймера. Потом переводить полученный результат в двоично - десятичную упаковку(как это сделать пока и не думал), и высылать данные на индикаторы. Текщая проблема следующая: 1е6 занимает 5 байт, а пять байт делить на 4байтное число не умею ( делить 1е6 на 16, а потом в конце всех вычислений умножать на 16 можно, но погрешность наступает чудовищная при большом числе отсчетов таймера! P.S. все время разработки меня не отпускает мысль что я делаю через Ж*ПУ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба http://www.telesys.ru/electronics/projects.php?do=p035 http://www.telesys.ru/electronics/projects.php?do=p072 Все на АСМе, под 2313. По математике делению, умножению, и пр. существуею куча аппнот у производителей контроллеров. Не смогли найти аппноты? В библиотеке куча книжек по 580 серии на русском, с примерами готовых программ - почитать, понять методику, сделать в своем процессоре. P.S. Сколько попыток поиска в гугле вы сделали, перед тем как задать вопрос здесь? Вопрос риторический, можно не отвечать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба К сожалению С почти не знаю, поэтому пишу на асме. Текщая проблема следующая: 1е6 занимает 5 байт, а пять байт делить на 4байтное число не умею ( делить 1е6 на 16, а потом в конце всех вычислений умножать на 16 можно, но погрешность наступает чудовищная при большом числе отсчетов таймера! P.S. все время разработки меня не отпускает мысль что я делаю через Ж*ПУ... Т.е. ваш 1 МГц занимает 5 байт? А чего так? Раз пишите на ассемблере то отведите для исходной частоты 1МГц 3 байта. Напишите функцию деления 3хбайтного числа на 2х байтное (думаю для генерации частоты вы используете TC1?) с возвратом 2х байтного целого и одного байта остатка (если нужно) - div_3_2. А метод деления самый простой - вычитаете делитель из делимого пока не получите отрицательный результат. Потом возвращаетет целую часть плюс остаток. Например 17/6: 17-6 = 11 (целое 1, остаток 0), 11-6=5 (целое 2, остаток 0), 5-6=-1 (целое 2, остаток 5 - возвращаем результат). По поводу перевода в двоично-десятичную систему столько всего написано..... Стоит только поискать по форуму или в гугле :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheld 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба Поиск на форуме, особыми успехами не удался, а по поводу двоично-десятичной системы в гугле написана целая куча согласен, но в основном фундаментальные данные. а по поводу 1МГЦ 1е6 = $F4240 как его 3 байтным записать? метод деления использую аналогичный. Спасибо за отзывы, буду дальше думать, гуглить и флудит ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба а по поводу 1МГЦ 1е6 = $F4240 как его 3 байтным записать? Давно пользовался ассемблером. Могу ошибаться но кажется так: .def frq2 r18 .def frq1 r17 .def frq0 r16 ldi frq2 $0F ldi frq1 $42 ldi frq0 $40 В регистры r18-r16 будет загружено число $F4240 которое совсем не 5ти байтное (!!!!!) а 3хбайтное (комбинация байт - $0F $42 $40). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба 1е6 = $F4240 как его 3 байтным записать? метод деления использую аналогичный. книга 1 - ищите (сразу не нашел в своб.доступе) и еще ЗЫ: человек не понял, что надо сначала делить в бинарном виде, а потом преобразовать результат в BCD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheld 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба Видимо тяжелый день выдался что $F4240 стал занимать 5 байт...попробую со свежей головой вникнуть еще раз в проблему Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oll 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба Здравствуйте, есть одна проблема. Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах. Со схемотехникой,таймерами и всякой переферией проблем нет. есть проблема с индикацией частоты. http://www.remexpert.com/ipb/index.php?aut...mp;showentry=96 http://www.myplace.nu/avr/minidds/index.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться