Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос программистам
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн авг 25, 2025 02:01:18

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 381 ]     ... , , , 14, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 17:55:13 
Друг Кота

Карма: 2
Рейтинг сообщений: 79
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8325
Откуда: .ru
Рейтинг сообщения: 0
TovarishAleksey писал(а):
Обойдусь пока без программатора, а то ещё на неделю затянется.

а может наоборот... всё ускорится))
:)
TCCR1B = (1 << CS12);
Говорят, что CS12 это 2

второй бит в регистре TCCR1B
Вложение:
Screenshot_1.jpg [11.4 KiB]
Скачиваний: 27

должны получить 4

получили 4
но получаем 256

получаем 256
Вложение:
Screenshot_2.jpg [33.5 KiB]
Скачиваний: 31

так устроен микроконтроллер ))
Вложение:
Screenshot_3.jpg [45.97 KiB]
Скачиваний: 27

:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 18:15:39 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
А! Так дело даже не в сдвигах, а в соченатии битов таймера?

Добавлено after 2 minutes:
с ассемблером и в правду быстрее было бы, а вот сделать программатор - это мне ещё задачка. Если с видеокартой получится, то можно будет и программатором заняться))

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 18:24:57 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 255
Зарегистрирован: Пт фев 12, 2010 13:47:17
Сообщений: 2402
Рейтинг сообщения: 0
TovarishAleksey писал(а):
с ассемблером и в правду быстрее было бы
ассемблерные вставки никто даже в ардуине, насколько помню, не отменял.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 19:34:27 
Друг Кота

Карма: 2
Рейтинг сообщений: 79
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8325
Откуда: .ru
Рейтинг сообщения: 0
А! Так дело даже не в сдвигах, а в соченатии битов таймера?

весь микроконтроллер от начала и до конца построен на соченатии битов в регистрах...
Фунтик писал(а):
TovarishAleksey писал(а):
с ассемблером и в правду быстрее было бы
ассемблерные вставки никто даже в ардуине, насколько помню, не отменял.

на всякий случай напомню...

TovarishAleksey пишет в ардуино IDE
TovarishAleksey пишет на с++
TovarishAleksey делает ассемблерные вставки NOP

вот только пока не получается чёткого сигнала...
:dont_know:
теперь перешли на таймеры...
:)
но есть сомнения что с таймерами будет лучше))
:tea:
а что делать ?
:roll:
в идеале сразу переходить на асм... и не тратить нервы))
:))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 21:53:00 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
не, таймеров должно хватить. Я пробовал разные библиотеки, там тоже таймеры используются, всё отлично работает. А вот те библиотеки, использующие nopы работают корявенько. Вывод: либо си++, либо ассемблер, но не вместе. Я могу в принципе просто скопировать код оттуда, но это бессмысленно делать, так как основная цель - научиться новому. Чистый ассемблер всё равно я пока не буду использовать, программатора нет.

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 22:13:58 
Друг Кота

Карма: 2
Рейтинг сообщений: 79
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8325
Откуда: .ru
Рейтинг сообщения: 0
TovarishAleksey писал(а):
либо си++, либо ассемблер, но не вместе.

во)) умные мысли пошли))
:tea:
только не ясно зачем там делитель 256...
TCCR1B = (1 << CS12);
получим 1/16МГц = 62,5нс * 256 = 16мкс.
а нам надо 31,77мкс.
Вложение:
строка.jpg [44.55 KiB]
Скачиваний: 23

хотя... за два прерывания получим 32мкс... в принципе работать должно и так...
главное чтоб картинка не дрожала))
а для этого надо выводить в порт VGA данные с постоянной скорость... что на си++ в принципе возможно... но надо быть осторожным))
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 23:06:29 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
делитель 256 я выбрал на эники беники, просто для того, чтобы понять что это за монстр таймер1, и как им управлять. Вот как изучу его, так сразу и по делу заюзаю. Картинка не будет дрожать, так как наши таймеры вызывают прерывания в точно заданные промежутки времени!

Добавлено after 3 minutes 22 seconds:
Могут возникнуть неприятные артефакты картинки, если сильно отклоняться от "стандарта", такие как белые полосы, уменьшенные пиксели.

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 23:07:15 
Друг Кота

Карма: 2
Рейтинг сообщений: 79
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8325
Откуда: .ru
Рейтинг сообщения: 0
Да, таймеры вызывают прерывания в точно заданные промежутки времени...
Но, нам же надо и писать тоже в точно заданные промежутки времени...
А где мы будем писать ? логично предположить что в прерываниях... ))
А как мы будем писать ? в цикле ? на с++ ? ну... знаете... на с++ никто ничего не гарантирует))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 23:12:52 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
циклы в си++ - довольно вкусная вещь, не стоит их недооценивать. Главное не использовать посторонние функции, которые весь таймер могут сбить, а использовать регистры!

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 23:17:15 
Друг Кота

Карма: 2
Рейтинг сообщений: 79
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8325
Откуда: .ru
Рейтинг сообщения: 0
регистры... на С++ ?
:roll:
что то новенькое))
:tea:

таймер... таймер...
чё там с ним разбираться))

два регистра - режим работы и делитель... настраивать надо))
TCCR1A=0x02; //WGM11=1, WGM10=0
TCCR1B=0x1C; //WGM13=1, WGM12=1

речистр счётчика... его настраивать не надо)) его читать надо... если вообще надо))
TCNT1H=0x00;
TCNT1L=0x00;

регистр захвата... он определяет длительность импульсов... настраивать надо))
ICR1H=0x00; //регистр захвата - верхний предел счета
ICR1L=0x00; //регистр захвата - верхний предел счета

регистр для вывода b1... настраивать надо))
OCR1AH=0x00;
OCR1AL=0x00;

регистр для вывода b2... настраивать не надо))
OCR1BH=0x00;
OCR1BL=0x00;
Вложение:
Screenshot_1.jpg [26.5 KiB]
Скачиваний: 16

ну... как бы просто всё))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Пт окт 25, 2024 23:22:56 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
та нет, регистры в си++ совсем не новая вещь! Конечно, в теории всё просто, и вроде всё понятно, а на практике, мне даже не ясно с чего начать. Посему, я экспериментирую со значениями, смотрю что в итоге получается.

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 01:25:16 
Друг Кота

Карма: 2
Рейтинг сообщений: 79
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8325
Откуда: .ru
Рейтинг сообщения: 0
TovarishAleksey писал(а):
мне даже не ясно с чего начать.

начни с таймера))

режим 14 (быстрая шим)
WGM13=1, WGM12=1, WGM11=1, WGM10=0
Вложение:
режим.jpg [105.93 KiB]
Скачиваний: 32

записываем...
TCCR1A = (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12);
начало положено))
:tea:

сейчас таймер остановлен... а чтоб запустить надо включить делитель...
CS12, CS11, CS10
Вложение:
делитель.jpg [41.62 KiB]
Скачиваний: 28

записываем...
TCCR1A = (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
таймер завёлся)) с частотой кварца 16МГц
1/16МГц = 62,5нс - один такт таймера.
:tea:
сколько у нас трока ?
Вложение:
строка.jpg [48.31 KiB]
Скачиваний: 24

31,77мкс
сколько это тактов ?
31,77мкс / 62,5нс = 508,32 тактов

записываем... 508 тактов
ICR1H=1; //регистр захвата - верхний предел счета
ICR1L=252; //регистр захвата - верхний предел счета
или так... не знаю как ардуина лучше понимает))
ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов
ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов
теперь таймер работает с частотой строк...
:tea:

Добавлено after 35 minutes 5 seconds:
сколько длительность импульса ?
Вложение:
импульс.jpg [51.78 KiB]
Скачиваний: 25

3,77мкс
сколько это тактов ?
3,77мкс / 62,5нс = 60,32 тактов
записываем... 60 тактов
регистр для вывода b1...
OCR1AH=0;
OCR1AL=60;
или так... не знаю как ардуина лучше понимает))
OCR1AH=0x00; //регистр ШИМ 60 тактов
OCR1AL=0x3C; //регистр ШИМ 60 тактов
:tea:
начальное значение... сбрасываем в ноль))
TCNT1H=0x00;
TCNT1L=0x00;
:tea:


TCCR1A = (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов
ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов
OCR1AH=0x00; //регистр ШИМ 60 тактов
OCR1AL=0x3C; //регистр ШИМ 60 тактов
TCNT1H=0x00;
TCNT1L=0x00;
уже лучше))
:tea:
настраиваем форму сигнала на выводе b1... обычная или инверсная... у нас инверсная...

Добавлено after 16 minutes 33 seconds:
вроде это...
COM1A1, COM1A0, COM1B1, COM1B0
Вложение:
вывод b1.jpg [44.61 KiB]
Скачиваний: 25

записываем...
TCCR1A = (1 << COM1A1) | (1 << COM1A0) | (1 << WGM11);
:roll:

осталось настроить сам пин на ардуине... PB1 на выход...

итого:
TCCR1A = (1 << COM1A1) | (1 << COM1A0) | (1 << WGM11);
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов
ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов
OCR1AH=0x00; //регистр ШИМ 60 тактов
OCR1AL=0x3C; //регистр ШИМ 60 тактов
TCNT1H=0x00; // начальное значение таймера
TCNT1L=0x00; // начальное значение таймера

на пине PB1 должны получить сигнал строчной развертки для VGA...
если мы ничего не перепутали))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 05:20:38 
Друг Кота
Аватар пользователя

Карма: -74
Рейтинг сообщений: -204
Зарегистрирован: Пн окт 03, 2016 22:50:22
Сообщений: 3943
Рейтинг сообщения: 0
с ассемблером и в правду быстрее было бы, а вот сделать программатор - это мне ещё задачка. Если с видеокартой получится, то можно будет и программатором заняться))

Можешь сделать юзая аппаратный LPT(bitbang), COM(bitbang) или USB мост. Если с "нуля", во всех случаях придется изучать API операционной системы это GUI, IO, и API моста, если "не с нуля" найдешь в инете.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 10:00:34 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 43
Зарегистрирован: Вт окт 01, 2024 15:22:33
Сообщений: 436
Рейтинг сообщения: 0
Картинка не будет дрожать, так как наши таймеры вызывают прерывания в точно заданные промежутки времени!

Будет, перечитай что я выше писал. В точно заданные промежутки времени только флаги таймера выставятся, а 2-х и более тактовую инструкцию cpu сначала выполнит до конца и только потом попадем в прерывание. STM32, например, вызывает прерывание оставляя инструкцию в наполовину выполненном состоянии и там таких проблем нет, хотя есть другие )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 10:14:15 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
Роман, спасибо огромнейшее, за то что направили на путь верный! Осталось только понять, что же это всё означает. :))
А как своё разрешение рассчитать? Как понимаю, нужно начинать с частоты, а дальше..

Adrift, если не смешивать сладкое с горьким(ассемблер и си++), то ничего не будет. Низкоуровневые библиотеки я уже протестировал - всё отлично, никакого дрожания.

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 10:30:24 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 43
Зарегистрирован: Вт окт 01, 2024 15:22:33
Сообщений: 436
Рейтинг сообщения: 0
если не смешивать сладкое с горьким(ассемблер и си++), то ничего не будет.

Ну ок, тебе виднее )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 10:33:09 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
Не то, чтобы мне виднее, просто у меня всё работает. У кого-то может быть по-другому, у меня вот так.

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 10:39:18 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 43
Зарегистрирован: Вт окт 01, 2024 15:22:33
Сообщений: 436
Рейтинг сообщения: 0
Что у тебя работает? Фото в студию, а лучше видео )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 11:18:22 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24019
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
у меня всё работает.

Работает - это означает лишь одно - вас устраивает как работает. Но прерывания являются самым нестабильным инструментом при реализации режима реального времени в МК. Получаемый в результате джиттер вас не волнует и не фиксируется вашими инструментами наблюдений. Но он есть. И он не зависит от языка написания кода.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос программистам
СообщениеДобавлено: Сб окт 26, 2024 11:41:06 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47
Сообщений: 313
Откуда: Село Лютенька
Рейтинг сообщения: 0
Адрифт, уже отправлял фото. Конечно, это готовая библиотека, но она основана на этих прерываниях, никаких искажений.
Крам, верно, меня устраивает. Да и какая разница в принципе, если на картинке это никак не сказывается. Проведу потом осмотры сигналов осциллографом. С моей говносборкой по-любому огромные кракозябры присутствуют.

_________________
"Умный может зарабатывать триста рублей, а проживать три тысячи"


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 381 ]     ... , , , 14, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: akl и гости: 62


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y