Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Tiny2313 vs математики
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
sheld
Здравствуйте, есть одна проблема.
Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах.
Со схемотехникой,таймерами и всякой переферией проблем нет.
есть проблема с индикацией частоты.
К сожалению С почти не знаю, поэтому пишу на асме.

в полете мысли пришел, что частоту сигнала нужно вычислять деля частоту таймера 1МГц, на N - число отсчетов таймера. Потом переводить полученный результат в двоично - десятичную упаковку(как это сделать пока и не думал), и высылать данные на индикаторы.
Текщая проблема следующая: 1е6 занимает 5 байт, а пять байт делить на 4байтное число не умею (
делить 1е6 на 16, а потом в конце всех вычислений умножать на 16 можно, но погрешность наступает чудовищная при большом числе отсчетов таймера!

P.S. все время разработки меня не отпускает мысль что я делаю через Ж*ПУ...
izerg
http://www.telesys.ru/electronics/projects.php?do=p035
http://www.telesys.ru/electronics/projects.php?do=p072
Все на АСМе, под 2313.
По математике делению, умножению, и пр. существуею куча аппнот у производителей контроллеров.
Не смогли найти аппноты? В библиотеке куча книжек по 580 серии на русском, с примерами готовых программ - почитать, понять методику, сделать в своем процессоре.

P.S. Сколько попыток поиска в гугле вы сделали, перед тем как задать вопрос здесь?
Вопрос риторический, можно не отвечать.
mempfis_
Цитата(sheld @ Oct 27 2009, 10:20) *
К сожалению С почти не знаю, поэтому пишу на асме.

Текщая проблема следующая: 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 - возвращаем результат).

По поводу перевода в двоично-десятичную систему столько всего написано.....
Стоит только поискать по форуму или в гугле smile.gif
sheld
Поиск на форуме, особыми успехами не удался, а по поводу двоично-десятичной системы в гугле написана целая куча согласен, но в основном фундаментальные данные.
а по поводу 1МГЦ

1е6 = $F4240

как его 3 байтным записать?

метод деления использую аналогичный.
Спасибо за отзывы, буду дальше думать, гуглить и флудит )
mempfis_
Цитата(sheld @ Oct 27 2009, 11:10) *
а по поводу 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
Цитата(sheld @ Oct 27 2009, 12:10) *
1е6 = $F4240

как его 3 байтным записать?
метод деления использую аналогичный.

книга 1 - ищите (сразу не нашел в своб.доступе)

и еще

ЗЫ: человек не понял, что надо сначала делить в бинарном виде, а потом преобразовать результат в BCD
sheld
Видимо тяжелый день выдался что $F4240 стал занимать 5 байт...попробую со свежей головой вникнуть еще раз в проблему
oll
Цитата(sheld @ Oct 27 2009, 11:20) *
Здравствуйте, есть одна проблема.
Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах.
Со схемотехникой,таймерами и всякой переферией проблем нет.
есть проблема с индикацией частоты.

http://www.remexpert.com/ipb/index.php?aut...mp;showentry=96
http://www.myplace.nu/avr/minidds/index.htm
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.