Перейти к содержанию
    

hc2hunter

Участник
  • Постов

    19
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о hc2hunter

  • Звание
    Участник
    Участник
  1. ух ты...! просто супер! :) Теперь, надеюсь, разберусь в чем там дело :)
  2. пасиба... ушел читать... :)
  3. Сенсорный дисплей

    Вы уж извините, что пишу в раздел AVR... даже не знаю, куда мою тему правильнее прилепить. Но поскольку разрабатываю устройство на базе AVR Mega8, то решил отпостить сюда. Суть в следующем. Вобщем, раздобыл я тут дисплей LCD цветной от поломанного видеофона, обучил Megу8 выводить на него картинки и пиктограммы. Еще как оказалось, дисплей является сенсорным. Умел когда-то назад устройству возвращать координаты Х и Y, куда в него торнули пальцем... Экран оказался банально простым - резистивным. К нему идут 4 дорожки. Сама конструкция экрана (после вскрытия) оказалась такой: Озадачился приделкой этого тачскрина к контроллеру Mega8 (чтобы самому определять координаты, куда тыркнули), но вот столкнулся с проблемой... что куда подавать на этот тачскрин? Само-собой, снимаю сигналы через АЦП, пытаясь подавать на разные выводы дисплея опорное напряжение +5В. Но ничего путного не получается... Прозвонил дисплей, и получил следующую картину - примерная эквивалентная схема его выглядит так: При этом переменные сопротивления (сам экран) изменяют свое сопротивление примерно в пределах 600...1500 Ом как по-горизонтали, так и по-вертикали. То есть получается у него Х и Y связаны гальванически., и в итоге координаты меняются "вместе" и не прослеживается однозначного закона изменения х и у. Так что же куда надо подать, чтобы снять с него координаты? Что тут можно эдакого толкового придумать?
  4. э... туплю кажись... м-де... :smile3046:
  5. Собственно вот... :07: Прошерстил местные магазины в нашей деревне - ничерта нету. На заказ везут невесть сколько (около месяца). Заказывать через интернет микросхему ценой 160р. дороговато обходится, причем почти все конторы отказываются выполнять заказ на сумму менее 500р... Поэтому решил кинуть объявку тут... на "ура". А вдруг найдется кто-то из земляков, да еще у кого есть лишний корпус Mega32...! Был бы очень признателен :beer:
  6. Да, я встречал подобную запись, когда разбирал чей-то код. Однако работаю в CVAVR, а там такое не прокатывает... не знает он что такое WGM и OCIE2... :(
  7. А это для чего? что оно мне даст? куда же я тогда возвращаться-то буду... в "никуда" получается... Вот это мне тоже, кстати, не совсем понятно... Звучит как заученная фраза из книжек. А если мне нужно по возникновении прерывания выполнить массу всего? Что мне тогда делать...? Ведь мне никто не запрещает в прерывании остановить таймер, выполнить все что мне нужно, а по выходу из прерывания снова его запустить? С моей (ламерской) точки зрения процедура-обработчик может быть сколь угодно долгой. Главное, чтобы в это время я не наловил новых прерываний...
  8. Да, конечно. В самой процедуре прерывания я тоже поправляю счетчик таймера. В любом случае, огромное спасибо за наводку на мою ошибку! Пойду, попробую "прикрутить" полученное под свою конкретную задачу...
  9. Вобщем, сделал как сам же написал выше TCCR0=0x05; TCNT0=0xFF; вроде бы все заработало... щас буду думать дальше...
  10. а как же мне тогда правильно таймер проинициализировать? Получается TCCR0=0x05; TCNT0=0xFF; так?
  11. Работаю от кварца, это совершенно точно. Я такую простенькую программку написал уже от безысходности, чтобы выяснить где же я дурак... Раньше с таймерами не работал, факт. А почему Вы пишете 8e6/1024/256 - 30 Гц ? отуда 256? Мастер мне пишет, что частота настроенная составляет 15625 Гц.
  12. AVR Mega8, 16МГц, среда разработки CVAVR v1.25. Делаю все по шаблону, как предлагает мастер. Пытаюсь создать прерывание по таймеру №0 каждые 64 мкс (15625 Гц). Вот текст программы: Результат смотрю на осциллографе - хрен два! Постоянная единица, ничего не прерывается. Пробовал и так и эдак... И что я только не писал в обработчик прерывания - ничего не помогает. И запрещать прерывания там пробовал, и заново таймер реинициализировал... Разве что проскакивает этот самый ожидаемый "0" каждые примерно 5 секунд (определяю по взмаргиванию линии на осциллографе). И что это за бред...? :cranky: Где моя ошибка?
  13. В принципе, можно его считать практически нулевым. Все зависит от того, откуда выбирать данные. Я выбирал с FLASH - скорость выборки довольно большая. Если на полностью белый фон выводить черные квадратики 8*12 (по размеру символа), то между ними видны еле-заметные белые полосочки. А если выбирать из SRAM, то все заполняется очень плотно. Тогда влазит по-горизонтали даже до 47-48 символов. Без пробелов. Но нужен контроллер с большим объемом памяти.... Причем, выбирать нужно тоже не из самих массивов, а однозначно напрямую - через указатели.
  14. idono, ...от себя хотел добавить - обратите внимание на уровень оптимизации кода вашим компилятором (на какой уровень он выставлен). От этого будет сильно зависеть скорость работы таких конструкций как i=10; while(i--) { #asm("nop"); } или последовательный вывод строчек символов (где у вас подряд идут штук 20 одинаковых операторов). А вывод делать нужно действительно через SPI ! Это самый быстрый метод. Пропускная способность порта для наших задач - фактически 8000000 точек в секунду. Я сейчас озадачен той же самой проблемой, что и вы, с той лишь разницей, что я полностью формирую изображение на экране TV, а не накладываю текст. На данный момент я добился вывода ч/б текстового поля размером 43х27 символов. Размер символа 8х12 точек. Это же эквивалентно выводу ч/б картинки размером 340х312 пикселей. Делаю все на AVR Mega8, но собираюсь переползать на Mega32, т.к. у "восьмерки" (впрочем как и у мега16) катастрофически не хватает памяти, а все видеообразы и таблицы символов целесообразно хранить во FLASH...
  15. Конкретно интересует написание в CVAVR. Как указать, куда возвращаться из функции-обработчика прерывания?
×
×
  • Создать...