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

 
 
 
Reply to this topicStart new topic
> Tiny2313 vs математики, математические изыскания на ассемблере
sheld
сообщение Oct 27 2009, 06:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 5-01-09
Из: Красноярск
Пользователь №: 42 941



Здравствуйте, есть одна проблема.
Нужно разработать генератор меандра с частотами от 20Гц- до 20кГц. с динамической индикацией на 7-сегментных индикаторах.
Со схемотехникой,таймерами и всякой переферией проблем нет.
есть проблема с индикацией частоты.
К сожалению С почти не знаю, поэтому пишу на асме.

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

P.S. все время разработки меня не отпускает мысль что я делаю через Ж*ПУ...
Go to the top of the page
 
+Quote Post
izerg
сообщение Oct 27 2009, 07:50
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 531
Регистрация: 1-02-05
Из: Украина, Киев
Пользователь №: 2 342



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

P.S. Сколько попыток поиска в гугле вы сделали, перед тем как задать вопрос здесь?
Вопрос риторический, можно не отвечать.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 27 2009, 08:03
Сообщение #3


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(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
Go to the top of the page
 
+Quote Post
sheld
сообщение Oct 27 2009, 08:10
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 5-01-09
Из: Красноярск
Пользователь №: 42 941



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

1е6 = $F4240

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

метод деления использую аналогичный.
Спасибо за отзывы, буду дальше думать, гуглить и флудит )
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 27 2009, 08:58
Сообщение #5


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(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).
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Oct 27 2009, 09:06
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(sheld @ Oct 27 2009, 12:10) *
1е6 = $F4240

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

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

и еще

ЗЫ: человек не понял, что надо сначала делить в бинарном виде, а потом преобразовать результат в BCD
Go to the top of the page
 
+Quote Post
sheld
сообщение Oct 28 2009, 05:39
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 5-01-09
Из: Красноярск
Пользователь №: 42 941



Видимо тяжелый день выдался что $F4240 стал занимать 5 байт...попробую со свежей головой вникнуть еще раз в проблему
Go to the top of the page
 
+Quote Post
oll
сообщение Oct 28 2009, 07:16
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



Цитата(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
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 10th July 2025 - 16:54
Рейтинг@Mail.ru


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