Atmega16 Деление 64 бит на 32 бит

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

есть мега16 з частотой 16мгц, я измеряю частоту поданую на int0 не больше 2.5 кгц. щитая импульсы которые выдайот таймер Т1 за время прохождения импульса. мне нужно поделить 16000000 на 8000 . 8000 тактов =2 кгц. 16000000/8000= 2000 кгц . но я незнаю как мне програмно зделать деление таких больших чиселю. может есть примери я розберусь. смогу но пока не могу . я умею делить програмно 8 битные. может кто то скинет мне пример на ассемблере
Реклама
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Сообщение of_silence »

Быстродействие критично? вариант в лоб - считать импульсы по входу за одну секунду.
Я занимался асмом пока на ARM не пошел. Писать деление 64 на 32 - это очень не просто.
Откопал у себя файл флоатинг-поинт операций, может ее использовать. Дело было давно, писал файл не я, так что работоспособность не гарантирую :)
Вложения
math_float.asm
(14.65 КБ) 497 скачиваний
Реклама
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

точность должна быть до сотих. 0.00 гц
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Сообщение of_silence »

Тогда пробуй флоатинг поинт, другого выхода я не вижу.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Попробуйте сходить сюда
Реклама
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

Супер большая благодарность. ща розберусь и вбой. гристь препятствия.
Реклама
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

akl писал(а):Попробуйте сходить сюда
а чуть подробней можна разжевать:
куда старший а куда младший? R0 - старший. R9- младий
и результат откуда брать из R20 R29 ИЛИ R0-R9

мне нужно только 3 регистра делимое и 3 регистра делитель 3
А как с знаком после коми 0.хх толька сотие нужни. откуда результат брать
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Сообщение of_silence »

умножение длинных чисел, что парой постов выше - это цельночисленная матиматика. То есть точек там нет. Соответственно придется придумать такие множители, чтобы результат получился в сотых долях (1 означает одну сотую и так далее). А точку просто на индикаторе поставить :)
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

R0 - старший. R9- младий
да, а также R10-старший...R19-младший
результат откуда брать из R20 R29 ИЛИ R0-R9

Как Вам удобнее. И там и там - результат.
Для получения результата с сотыми долями попробуйте загрузить 16'000'000*100
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

dilnuk:
ldi wreg,0xf4 ;starwui ;16000000
ldi timeout,0x24 ;menwui ;Hz
ldi lcdstat,00 ;molodwui ;

clr R0
clr R1
clr R2
clr R3
clr R4
clr R5
clr R6
mov R7,wreg
mov R8,timeout
clr r9 ; Занесение делимого или множимого (опция)

clr R10
clr R11
clr R12
clr R13
clr R14
clr R15
clr R16
mov R17,T1 ; XL
mov R18,monades ; YH
mov R19,dekades ;YL ; Занесение делителя или множителя (опция)

rcall DIV
mov dekades,r29
mov monades,r28
mov t1,r27
ret


и результат не тот может ненада било очищать остальние регистри а оставить $60 $61 итд
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Чему равны wreg и timeout, чтобы результат был не тот?
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

mov R7,wreg ;0xf4` 16000000 mhz
mov R8,timeout ;0x24
clr r9 ;0x00


mov R17,T1 ;0
mov R18,monades ;1f
mov R19,dekades ;40 8000 циклов за герц
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Вот результаты работы студии
16'000'000/8'000=2'000(07 D0)
и
16000000*100/8001=199975(03 0D 27)
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

Простите но какой вы используете отладчик. Я просто не использую никакой потому и попробую и научусь. Дайте сылку или скиньте на мейл jeck-wolf@mail.ru
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

И прошу извените, я просто зделал маленькою ошыбку в коде программы потому и нето но завтра приеду на роботу и исправлю.
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте. Я пользуюсь старенькой AVR STUDIO 3.21. К сожалению ATMEL давно уже убрал ее со своего сайта, но от этого она не стала хуже. Работает очень быстро и, за все время ее использования, не обнаружил в ней глюков. Видимо, в те времена подход к созданию отладчиков был основательным. Правда, она не поддерживает современные девайсы, но AVR-классик накрывает полностью. Посмотрите почту.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

а еще есть книжка Ю.Ревич "Практическое программирование микроконтроллеров ATMEL AVR на языке ассемблера",
там все подробно расписано, по-крайней мере мне очень помогло. :write:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 9
Зарегистрирован: Пт май 14, 2010 12:09:21

Сообщение jeck »

супер! работает.

Всем большое спасибо !!!
akl
Друг Кота
Сообщения: 4476
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

jeck писал(а):точность должна быть до сотих. 0.00 гц
Получилось! Вот и ладненько. Но..., измерением одного периода точности до сотых не получить. Сходите на эту веточку,где показывается как можно измерить точно и быстро низкую частоту (если убрать из выражения множитель 60*k).
http://radiokot.ru/forum/viewtopic.php?f=20&t=24703
Открыл глаза
Сообщения: 79
Зарегистрирован: Сб май 08, 2010 09:33:42

Сообщение of_silence »

измерением одного периода точности до сотых не получить
Почему же?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»