Перейти к содержанию
    

Tiny2313 vs математики

Здравствуйте, есть одна проблема.

Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах.

Со схемотехникой,таймерами и всякой переферией проблем нет.

есть проблема с индикацией частоты.

К сожалению С почти не знаю, поэтому пишу на асме.

 

в полете мысли пришел, что частоту сигнала нужно вычислять деля частоту таймера 1МГц, на N - число отсчетов таймера. Потом переводить полученный результат в двоично - десятичную упаковку(как это сделать пока и не думал), и высылать данные на индикаторы.

Текщая проблема следующая: 1е6 занимает 5 байт, а пять байт делить на 4байтное число не умею (

делить 1е6 на 16, а потом в конце всех вычислений умножать на 16 можно, но погрешность наступает чудовищная при большом числе отсчетов таймера!

 

P.S. все время разработки меня не отпускает мысль что я делаю через Ж*ПУ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.telesys.ru/electronics/projects.php?do=p035

http://www.telesys.ru/electronics/projects.php?do=p072

Все на АСМе, под 2313.

По математике делению, умножению, и пр. существуею куча аппнот у производителей контроллеров.

Не смогли найти аппноты? В библиотеке куча книжек по 580 серии на русском, с примерами готовых программ - почитать, понять методику, сделать в своем процессоре.

 

P.S. Сколько попыток поиска в гугле вы сделали, перед тем как задать вопрос здесь?

Вопрос риторический, можно не отвечать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению С почти не знаю, поэтому пишу на асме.

 

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

 

По поводу перевода в двоично-десятичную систему столько всего написано.....

Стоит только поискать по форуму или в гугле :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поиск на форуме, особыми успехами не удался, а по поводу двоично-десятичной системы в гугле написана целая куча согласен, но в основном фундаментальные данные.

а по поводу 1МГЦ

 

1е6 = $F4240

 

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

 

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

Спасибо за отзывы, буду дальше думать, гуглить и флудит )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а по поводу 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).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1е6 = $F4240

 

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

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

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

 

и еще

 

ЗЫ: человек не понял, что надо сначала делить в бинарном виде, а потом преобразовать результат в BCD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо тяжелый день выдался что $F4240 стал занимать 5 байт...попробую со свежей головой вникнуть еще раз в проблему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, есть одна проблема.

Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах.

Со схемотехникой,таймерами и всякой переферией проблем нет.

есть проблема с индикацией частоты.

http://www.remexpert.com/ipb/index.php?aut...mp;showentry=96

http://www.myplace.nu/avr/minidds/index.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...