роботы робототехника микроконтроллеры


 Страниц (2): [1] 2 »   

> Без описания
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



Hi all!

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


Задача вообще такая - собираю VGA-генератор для вывода разного цвета заливок на монитор для проверки на битые пикселы. С кнопки уже все выводится, но хотелось бы добавить режим автоматической смены заливки, для этого и нужна задержка. Нужен именно ассемблер, потому что боюсь что перевести код на С может занять довольно много времени.
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



applecutter
В простейшем случае задержку можно выполнить, организовав пустой цикл.
Задержка на один такт осуществляется командой nop.
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Терзают меня смутные сомнения. Не может ATtiny2313 притворяться полноценной видиокартой. Даже с ассемблерной программой.

PS Для проверки мониторов есть специальные программы (для ПК). Проверяют работу монитора во всевозможных режимах. ATtiny2313 на такое точно не способна.
 
 Top
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



Белый Волк пишет:
applecutter
В простейшем случае задержку можно выполнить, организовав пустой цикл.
Задержка на один такт осуществляется командой nop.

Это правда, но если нужна задержка в одну-две секунды, то счет идет на десятки мегагерц этих нопов, а предел значений 8-битного регистра очень даже предельный. Я тут уже соорудил сгороду, но даже смотреть на это страшно, не то что пользоваться. Хотелось бы более кошерным способом, если такой есть.
(Добавление)
mihail пишет:
Терзают меня смутные сомнения. Не может ATtiny2313 притворяться полноценной видиокартой. Даже с ассемблерной программой.

Ну у меня работает, сам толком правда не знаю как - брал чужой исходник и правил под себя. Если вам интересно, то обсуждение этого вопроса, вместе с исходником deogen.asm на http://monitor.net.ru/forum/topic193446-0.html

Цитата:
PS Для проверки мониторов есть специальные программы (для ПК). Проверяют работу монитора во всевозможных режимах. ATtiny2313 на такое точно не способна.

Ну я хочу себе сделать такую коробочку, которой можно будет проверять мониторы на битые пиксели без помощи компьютера. Понятно что это не самый простой способ добиться желаемого. Зачем? Да для самообучения, фана, пользы в хозяйстве.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



applecutter пишет:
Hi all!

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


Задача вообще такая - собираю VGA-генератор для вывода разного цвета заливок на монитор для проверки на битые пикселы. С кнопки уже все выводится, но хотелось бы добавить режим автоматической смены заливки, для этого и нужна задержка. Нужен именно ассемблер, потому что боюсь что перевести код на С может занять довольно много времени.


а если вот так

ldi r16,10 ;счетчик задержки
wait1:
dec r16 ;уменьшить счетчик
brne wait1 ;если не ноль, повторить
 
 Top
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



killgur пишет:

а если вот так

ldi r16,10 ;счетчик задержки
wait1:
dec r16 ;уменьшить счетчик
brne wait1 ;если не ноль, повторить

Ну да, но предел значений для 8-битного регистра - 256. А один мегагерц - это 1.000.000, причем если мы хотим выставить задержку в одну секунду, то это 8.000.000. Соответственно, либо городить ужасную рекурсивную конструкцию, либо воспользоваться каким-нибудь более элегантным способом, если он есть.

(Отредактировано автором: 10 Марта, 2011 - 14:38:59)

 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Да есть конечно

обработка прерывания таймера называется

Только по примерам кода это вопрос к тем кто с МК AVR обчается. т.е. ко всем кроме меня наверно на этом форуме.
 
 Top
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



killgur пишет:
Да есть конечно

обработка прерывания таймера называется

Только по примерам кода это вопрос к тем кто с МК AVR обчается. т.е. ко всем кроме меня наверно на этом форуме.

Ну жду пока объявятся)
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



applecutter пишет:
предел значений 8-битного регистра очень даже предельный
Можно использовать вложенные циклы.

У ATtiny2313 есть шестнадцатиразрядный таймер/счетчик. Считает от 0 до 65535. И максимальный предделитель у него на 1024 (если память не изменяет).

Насколько это все совместимо с генератором сигналов для VGA монитора незнаю Замешательство
 
 Top
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



mihail пишет:
applecutter пишет:
предел значений 8-битного регистра очень даже предельный
Можно использовать вложенные циклы.:

Ну я это и называю ужасными конструкциями, на которые страшно смотреть, а не то что пользоваться. В примерном виде я себе такую уже составил, не думайте - http://paste.org.ru/?v84rgf

Цитата:

У ATtiny2313 есть шестнадцатиразрядный таймер/счетчик. Считает от 0 до 65535. И максимальный предделитель у него на 1024 (если память не изменяет).

Ну мне бы хотя бы заведомо рабочий пример как им пользоваться.

Цитата:
Насколько это все совместимо с генератором сигналов для VGA монитора незнаю Замешательство

Должно быть совместимо. А вот все базовые регистры почему-то заняты. По этой причине наверное до сих пор и моя сгорода не работает - после прохождения через нее монитор пишет что нет сигнала. Пробовал пушить и попать этот регистр в разных вариантах - хз, может нужно чтобы сигнал непрерывно шел.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



посмотрел код

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

и все регистры действительно заняты


applecutter сделали бы внешнюю схемку "нажимающую кнопку" раз в минуту и не мучались.
 
 Top
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



killgur пишет:
посмотрел код

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

и все регистры действительно заняты


applecutter сделали бы внешнюю схемку "нажимающую кнопку" раз в минуту и не мучались.

Возможно в конце концов так и придется поступить... Но мне бы хотелось хотя бы посмотреть как вообще работают с этим таймером - может че и удастся подгородить. Кстати, пробовал использовать незанятый регистр GPIOR0, а компилятор на него почему-то матерится "error: Invalid register". До этого пробовал использовать r2, но решил что матюки на него связаны с тем, что он чем-то отличается от того же r16(ну я не особо пока разбираюсь в этой теме). Интересно, с чем это может быть связано? И где можно надыбать сорцы с использованеим таймера на ATtiny2313? Гугл не предлагать, я и так гуглю в свободное время.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



только в документации на ATTINY можно это найти
 
 Top
applecutter Post Id


Рядовой


Сообщений всего: 12
Дата рег-ции: Март 2011  



killgur пишет:
только в документации на ATTINY можно это найти

Ну вот ищу... говорю же - много букав...
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Коротко врядли получится.
http://easyelectronics.ru/catego...vr-uchebnyj-kurs
Тут много ассемблера для AVR.
 
 Top
Страниц (2): [1] 2 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru