Форум РадиоКот http://radiokot.ru/forum/ |
|
Программирование ATtiny13 http://radiokot.ru/forum/viewtopic.php?f=57&t=166630 |
Страница 9 из 9 |
Автор: | olegue [ Вс дек 06, 2020 13:27:22 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
BOB51 писал(а): У адуринки есть другой способ я все пытаюсь как-то от ардуинки выше подпрыгнуть. Ну так пока с переменным успехом. Нужны базовые знания по МК и логике. Вот пытаюсь разобраться. |
Автор: | BOB51 [ Вс дек 06, 2020 22:56:37 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
А я наоборот - к абсолютным знаниям по конкретным кристаллам под ассемблером добавил ардуинкин Си/С++. теперь для прикладного применения в максимально жестких условиях можно "переферийку с мозгом" под ассемблером и с полным "потрошением" МК соорудить, а для дальнейшей обработки уже "ардуиноподобные" поставить. ![]() Вариантов подхода достаточно много... ![]() |
Автор: | olegue [ Вт янв 19, 2021 13:42:02 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
http://radio-hobby.org/modules/news/art ... oryid=1155 почитал здесь, только вот не совсем понимаю Цитата: Рассмотрим примеры составления управляющей последовательности. Предположим, что синтезатор применен в УКВ радиоприемнике с промежуточной частотой 10,7 МГц, который принимает сигнал с несущей частотой 100 МГц. Шаг частотной сетки — 50 кГц. Найдем необходимый коэффициент деления частоты. Если гетеродин работает на частоте ниже принимаемой, его частота равна 100 - 10,7 = 89,3 МГц. Коэффициент деления Кдел = 89300:50 = 1786 = 6FA (hex) = 0110 1111 1010 (bin). на входе F in подаем частоту с гетеродина, а оцифрованнгое значение этой частоты где находится и как сравнивается? |
Автор: | radteh [ Вт янв 19, 2021 13:43:36 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
Тип данных unsigned int применённый для переменной divisor в микроконтроллерах AVR ограничен размером 2 байта или числа 0...65000. Возможно в этом и проблема, стоит попробовать изменить тип данных на больший. |
Автор: | NStorm [ Вт янв 19, 2021 14:45:13 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
Кстати да. Только 65535 максимальное. Да вообще если эта часть так и будет статической, лучше макросом задавать. Код: #define DIVISOR (140575 + 10700)/10; ... lm7001SendByte(DIVISOR & 0x00FF); lm7001SendByte((DIVISOR & 0xFF00)>>8); ... Так оно будет вычисляться на этапе компиляции и не тратить кучу ресурсов МК на лишние расчет. Но если уже как есть, то вот так: Код: divisor = (unsigned long)(140575 + 10700) / 10;
|
Автор: | olegue [ Вт янв 19, 2021 17:14:11 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
radteh писал(а): Тип данных unsigned int применённый для переменной divisor а я сюда смотрю Код: real divisor; а оказывает есть еще Код: typedef unsigned char byte ; typedef unsigned int real ; ок, буду пробовать. спасибо.! |
Автор: | NStorm [ Вт янв 19, 2021 19:08:05 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
Да, в Си нет такого типа, как "real". Но typedef позволяет создавать свои типы. |
Автор: | olegue [ Вт янв 19, 2021 20:23:33 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
NStorm, Код: divisor = (unsigned long)(140575 + 10700) / 10; не прокатило! сижу, дальше чешу репу. напряжение стоитт колом на выходе синтезатора. Добавлено after 41 minute 1 second: поставил в другой приенмик и перешил снова на 27030 - все отлично работает. Напряжение скачет как-только катушку гетеродина трогаю |
Автор: | radteh [ Ср янв 20, 2021 03:20:20 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
А переменная так и осталась объявлена как real? Если переменная объявлена как real (unsignet int), а присваивается значение unsignet long, то он всё равно не влезет. |
Автор: | NStorm [ Ср янв 20, 2021 08:59:13 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
radteh, там присваивается только тому, что в скобках (140575 + 10700), потом оно делится на 10 и должно влезть. Для теста просто можно написать divisor = 15127; временно. |
Автор: | olegue [ Ср янв 20, 2021 10:36:51 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
NStorm писал(а): divisor = 15127 так это число в 2 байта влазит. Тогда зачем до unsignet long расширять? Я тут прикинул , запущу приенмик на 28000, поменяю контур и посмотрю будет ли работать, может это прибавит ясности. Это я к тому что может выход гетеродина как-то не так себя ведет. |
Автор: | NStorm [ Ср янв 20, 2021 10:56:23 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
olegue, это если вы напишите сразу это значение. Когда вы пишите divisor = (140575 + 10700)/10, компилятор смотрит на тип divisor и обрезает значение скобок до его величины, т.е. до 0xFFFF, потом делит уже это значение на 10 и в divisor попадает 6553, а не 15127. Чтобы этого не происходило, я сначала и предложил написать (unsigned long), чтобы 140575 и 10700 компилятор сложил как 32-битную величину. Добавлено after 8 minutes 18 seconds: Хотя с оптимизацией тут возможно как статическую величину на этапе компиляции и посчитает правильно... |
Автор: | olegue [ Ср янв 20, 2021 20:07:32 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
NStorm, понял, согласен. Попробую. Добавлено after 3 hours 40 minutes 17 seconds: Воткнул эту строчку divisor = 15127; Но, увы, напряжение стоит колом, а частота гетеродина гдето вдалеке от 151 270 Придется применить план Б и запустить приемник гдето в районе 28000 кгц Добавлено after 37 minutes 5 seconds: может с выходом гетеродина что-то не так. Добавлено after 4 hours 36 minutes 59 seconds: Не реагирует Lm7001 на сигнал с 20 вывода мс3362 странно, частотомер туда вешаю, и он мне частоту показывает вывод 20 нормально на 3.3к повесил, коворят там открыты коллектор. Странно |
Автор: | radteh [ Пт янв 22, 2021 05:13:31 ] |
Заголовок сообщения: | Re: Программирование ATtiny13 |
А нет ли нужды менять кварц на LM7001? |
Страница 9 из 9 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |