Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
А! Так дело даже не в сдвигах, а в соченатии битов таймера?
Добавлено after 2 minutes: с ассемблером и в правду быстрее было бы, а вот сделать программатор - это мне ещё задачка. Если с видеокартой получится, то можно будет и программатором заняться))
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
А! Так дело даже не в сдвигах, а в соченатии битов таймера?
весь микроконтроллер от начала и до конца построен на соченатии битов в регистрах...
Фунтик писал(а):
TovarishAleksey писал(а):
с ассемблером и в правду быстрее было бы
ассемблерные вставки никто даже в ардуине, насколько помню, не отменял.
на всякий случай напомню...
TovarishAleksey пишет в ардуино IDE TovarishAleksey пишет на с++ TovarishAleksey делает ассемблерные вставки NOP
вот только пока не получается чёткого сигнала... теперь перешли на таймеры... но есть сомнения что с таймерами будет лучше)) а что делать ? в идеале сразу переходить на асм... и не тратить нервы))
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
не, таймеров должно хватить. Я пробовал разные библиотеки, там тоже таймеры используются, всё отлично работает. А вот те библиотеки, использующие nopы работают корявенько. Вывод: либо си++, либо ассемблер, но не вместе. Я могу в принципе просто скопировать код оттуда, но это бессмысленно делать, так как основная цель - научиться новому. Чистый ассемблер всё равно я пока не буду использовать, программатора нет.
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
хотя... за два прерывания получим 32мкс... в принципе работать должно и так... главное чтоб картинка не дрожала)) а для этого надо выводить в порт VGA данные с постоянной скорость... что на си++ в принципе возможно... но надо быть осторожным))
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
делитель 256 я выбрал на эники беники, просто для того, чтобы понять что это за монстр таймер1, и как им управлять. Вот как изучу его, так сразу и по делу заюзаю. Картинка не будет дрожать, так как наши таймеры вызывают прерывания в точно заданные промежутки времени!
Добавлено after 3 minutes 22 seconds: Могут возникнуть неприятные артефакты картинки, если сильно отклоняться от "стандарта", такие как белые полосы, уменьшенные пиксели.
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
Да, таймеры вызывают прерывания в точно заданные промежутки времени... Но, нам же надо и писать тоже в точно заданные промежутки времени... А где мы будем писать ? логично предположить что в прерываниях... )) А как мы будем писать ? в цикле ? на с++ ? ну... знаете... на с++ никто ничего не гарантирует))
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
циклы в си++ - довольно вкусная вещь, не стоит их недооценивать. Главное не использовать посторонние функции, которые весь таймер могут сбить, а использовать регистры!
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
та нет, регистры в си++ совсем не новая вещь! Конечно, в теории всё просто, и вроде всё понятно, а на практике, мне даже не ясно с чего начать. Посему, я экспериментирую со значениями, смотрю что в итоге получается.
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
31,77мкс сколько это тактов ? 31,77мкс / 62,5нс = 508,32 тактов
записываем... 508 тактов ICR1H=1; //регистр захвата - верхний предел счета ICR1L=252; //регистр захвата - верхний предел счета или так... не знаю как ардуина лучше понимает)) ICR1H=0x01; //регистр захвата - верхний предел счета 508 тактов ICR1L=0xFC; //регистр захвата - верхний предел счета 508 тактов теперь таймер работает с частотой строк...
Добавлено after 35 minutes 5 seconds: сколько длительность импульса ?
с ассемблером и в правду быстрее было бы, а вот сделать программатор - это мне ещё задачка. Если с видеокартой получится, то можно будет и программатором заняться))
Можешь сделать юзая аппаратный LPT(bitbang), COM(bitbang) или USB мост. Если с "нуля", во всех случаях придется изучать API операционной системы это GUI, IO, и API моста, если "не с нуля" найдешь в инете.
Картинка не будет дрожать, так как наши таймеры вызывают прерывания в точно заданные промежутки времени!
Будет, перечитай что я выше писал. В точно заданные промежутки времени только флаги таймера выставятся, а 2-х и более тактовую инструкцию cpu сначала выполнит до конца и только потом попадем в прерывание. STM32, например, вызывает прерывание оставляя инструкцию в наполовину выполненном состоянии и там таких проблем нет, хотя есть другие )
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
Роман, спасибо огромнейшее, за то что направили на путь верный! Осталось только понять, что же это всё означает. А как своё разрешение рассчитать? Как понимаю, нужно начинать с частоты, а дальше..
Adrift, если не смешивать сладкое с горьким(ассемблер и си++), то ничего не будет. Низкоуровневые библиотеки я уже протестировал - всё отлично, никакого дрожания.
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
Работает - это означает лишь одно - вас устраивает как работает. Но прерывания являются самым нестабильным инструментом при реализации режима реального времени в МК. Получаемый в результате джиттер вас не волнует и не фиксируется вашими инструментами наблюдений. Но он есть. И он не зависит от языка написания кода.
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс сен 22, 2024 12:16:47 Сообщений: 313 Откуда: Село Лютенька
Рейтинг сообщения:0
Адрифт, уже отправлял фото. Конечно, это готовая библиотека, но она основана на этих прерываниях, никаких искажений. Крам, верно, меня устраивает. Да и какая разница в принципе, если на картинке это никак не сказывается. Проведу потом осмотры сигналов осциллографом. С моей говносборкой по-любому огромные кракозябры присутствуют.
_________________ "Умный может зарабатывать триста рублей, а проживать три тысячи"
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения