32 разрядная арифметика AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

Коты. Делал ли кто нибуть подобное? :roll:

сумму и разность не предлагать :oops: нужны нормальное деление
ну и умножение.

псип
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

благодарствую :roll:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Ю.Ревич, в его замечательной книге "Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера" не только 32-х но и любой разрядности, проверял работает. :idea:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

ААаааааа.. суперская книга!!
Спасибо!
:lol:
Реклама
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

BCluster писал(а):уу, у нас фанатики появились ))))
А вы попробуйте на Си сгенерировать последовательность импульсов с Ти=1 мкс и Тп=1 мкс :wink:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

GP1 писал(а):А вы попробуйте на Си сгенерировать последовательность импульсов с Ти=1 мкс и Тп=1 мкс :wink:
Запросто. Загоняю 8 разрядный таймер в Fast PWM моду, и получаю что хочу. Причём эта последовательность сохранится даже тогда, когда я буду на C обсчитывать свои долгие фоновые задачи :)
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

а если предположить, что все таймеры заняты другими задачами (мне однажы из-за того, что в мегах макс.4 таймера пришлось ставить еще один корпус) и при этом генерировать ту самую последовательность с точностью 1мкс.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

GP1 писал(а):А вы попробуйте на Си сгенерировать последовательность импульсов с Ти=1 мкс и Тп=1 мкс :wink:
Можно и короче. :) Например, одна сто двадцать восьмая (1/128) от 1мкс - подойдет?
Нет? Нужна именно 1мкс? Ну, хорошо, пусть так:

Код: Выделить всё

PLLCSR=0x02;
while ((PLLCSR & 1)==0);
PLLCSR|=0x04;
TCCR1=0x51;
GTCCR=0x40;
TCNT1=0x00;
OCR1A=64;
OCR1C=128;
;)
GP1 писал(а):а если предположить, что все таймеры заняты...
Во-первых, при чем здесь язык Си? :))) Да и поздно уже менять условия задачи - решение-то уже готово, теперь платить надо, а не вертеться.
А во-вторых - разве вы не чувствуете, что коллеги просто шутят? Всем, кроме новичков, хорошо известно, что в условиях недостатка тех или иных ресурсов, язык ассемблера - последнее средство. Но им также хорошо известно и то, что в других условиях ЯВУ - первейшее средство! И о чем спорить? ;)
Последний раз редактировалось Yellow Tiger Вс апр 26, 2009 13:33:04, всего редактировалось 1 раз.
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

Не пойму о чем вы спорите :lol:
В рамках архитектуры АВР язык асма и си ЭКВИВАЛЕНТНЫ
и их рамки определяются этой самой архитектурой. Фактически
нет ни одного решения которое можно сделать в одном и не сделать
в другом. Потому что ВСЕ делается через те же самые порты ВВ,
регистры, память.

Миритесь.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

_PM_ писал(а):ВСЕ делается через те же самые порты ВВ, регистры, память. Миритесь.
Несовсем согласен - разные там логарифмы, синусы/косинусы и прочее из той же серии лучше все же делать не через порты ввода/вывода, а на ЯВУ. Ну, удобнее же - согласитесь!
А вот с "миритесь" - согласен полностью! :)))
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Yellow Tiger писал(а):Например, одна сто двадцать восьмая (1/128) от 1мкс - подойдет?
Нет? Нужна именно 1мкс? Ну, хорошо, пусть так:

Код: Выделить всё

PLLCSR=0x02;
while ((PLLCSR & 1)==0);
PLLCSR|=0x04;
TCCR1=0x51;
GTCCR=0x40;
TCNT1=0x00;
OCR1A=64;
OCR1C=128;
;)
При всем уважении, какова тактовая у Вас?
если учесть что при 20 МГц 1 тик занимает 0,05 мкс то при таких условиях период повторения Ваших импульсов будет 6,4 мкс :)). а длительность импульса 3,4 мкс.

зы: да я ни с кем и не собирался ссориться :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

Ой блин.. давайте без давайте :lol:

Асм + макросы >= ЯВУ. И спорить тут не о чем. :wink:
И удобней будет в разы. С другой стороны в Си тоже
макроопределения есть.

Давайте заведем отдельную тему и там сразимся.
Для затравки - вы знаете что существует 183 !!!
способа представления и обсчета матриц.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

GP1 писал(а):При всем уважении, какова тактовая у Вас?
А счетчик здесь не от тактовой запитан, а от тактовой, умноженной на восемь:

Код: Выделить всё

while ((PLLCSR & 1)==0);
PLLCSR|=0x04;
что для тактовой, равной 8МГцам, даст 64МГц, отсюда и top=128, чтобы получить полмегагерца (2мкс) в периоде.
_PM_ писал(а):Асм + макросы >= ЯВУ. И спорить тут не о чем.
Мнение настолько ммм... субъективное, что спорить - действительно не о чем.
Последний раз редактировалось Yellow Tiger Вс апр 26, 2009 13:53:51, всего редактировалось 1 раз.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Yellow Tiger
Или мы о разных процессорах говорим, или я от жизни отстал, но ни в одной меге, не говоря уже о тини, которые мне попадались, я не встречал умножителя тактовой :shock:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Значит, не все попадались. 8) Глянь в тиньки -25, -45, -85...

Кстати, на 8 мегагерцах можно сделать полмегагерца на выходе и без аппаратных особенностей этих тинек - просто на общих принципах... сейчас покажу...
Нет, недооценил я CvAvr - всего четыре такта достаточно для этих целей, то есть, на 8МГцах будет аж в четыре раза быстрее, чем ты хотел. :)))

Код: Выделить всё

    while (1) PINB.0 = 1;
    //_0x6:
    //    	SBI  0x16,0    ; 2 cycles
    //    	RJMP _0x6      ; 2 cycles
Тоже, правда, работает не на всех AVR'ках, но на многих, а если писать в лоб, то будет работать на всех, но уже в четыре раза быстрее не получится - впритык сработает. :))) ;)
Последний раз редактировалось Yellow Tiger Вс апр 26, 2009 14:17:37, всего редактировалось 1 раз.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Yellow Tiger писал(а):Значит, не все попадались. 8) Глянь в тиньки -25, -45, -85...
Посмотрел... все что нашел - что fclk=fфапч/4 т.е. 16МГц...
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

GP1 писал(а):Посмотрел... все что нашел - ...
Неправильно ищешь - нужно искать регистр, который я в тексте использовал, я же не зря кусок кода цитировал...
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Yellow Tiger
Разобрался, спасибо.
Век живи - век учись, бестолковым помрешь :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

GP1 писал(а):Разобрался, спасибо.
Заметь - я привел и чисто сишный способ, не требующий именно этих тинек с PLL'ями, способный выдать меандр с временами по четверть микросекунды на импульс и паузу. То есть, для достижения затребованных тобой времен, пришлось бы снизить тактовую в четыре раза! :)))
Закрыто

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