Страница 18 из 132
Добавлено: Вт дек 30, 2008 22:55:16
smac
sachok писал(а):Проблема с настройкой ШИМ. Делаю это так: (вложение). В протеусе работает только 1 канал, почему не пойму.

лучше в железе смотреть. Кстати, компилятор вот так сделать не позволяет TCNT1=0x00 ? Другие 16-ти битные регистры соответсвено, по идее он должен сам нужный порядок чтения/записи двухбайтных регистров правильно ставить.
Добавлено: Ср дек 31, 2008 18:02:53
sachok
Железа пока нету. С ШИМ на ATtiny2313 работаю первый раз и то через мастер настройки CVAVR. Нужно настроить все 4 канала ШИМ для начала на любую скважность потом в программе с помощью кнопок буду менять её.
Добавлено: Сб янв 03, 2009 22:29:59
poff
доброго времени суток в новом году..
Есть три подпрограммы:
Код: Выделить всё
_01: sbi portd,4
nop
cbi portd,4
rjmp _01
_02: sbi portd,3
nop
cbi portd,3
rjmp _02
_03: sbi portd,2
nop
cbi portd,2
rjmp _03
Подскажите чайнику, каким образом можно вызывать данные подпрограммы через прерывание, например нажатие кнопки на входе INT0. Если можно, кинте приблизительный или похожий кусок кода на асме. Организовывать прерывания я умею. Заранее благодарен..
Добавлено: Вс янв 04, 2009 17:42:26
smac
poff писал(а):доброго времени суток в новом году..
Подскажите чайнику, каким образом можно вызывать данные подпрограммы через прерывание, например нажатие кнопки на входе INT0. Если можно, кинте приблизительный или похожий кусок кода на асме. ..
Это просто, единственное, что каждая подпрограмма у вас- бесконечный цикл, поэтому вызвав один раз эту подпрограмму вы из прерываний уже не вернетесь. Если это вас устраивает, то сделать проще простого.
Код: Выделить всё
...
.org INT0addr; размещаем вызов по адресу вектора INT0
rjmp _03; прыгаем на код
.. далее ваш код
но так делать на самом деле не стоит, если же "дернуть ногой" в обработчике нужно 1 раз, то сделать надо так:
Код: Выделить всё
...
.org INT0addr; размещаем вызов по адресу вектора INT0
rjmp _03; прыгаем на код
.. далее ваш код
...
_03: sbi portd,2
nop
cbi portd,2
reti; возврат из обработчика прерывания
Остальные подпрограммы переделать по образу и подобию
Добавлено: Пн янв 05, 2009 23:34:43
poff
Приветствую Вас Smac. Способ описанный Вами я знаю. Возможно я не правильно сформулировал задачу. Требуется по прерыванию INT0 перебирать друг за другом подпрограммы _01, _02, _03, итд. Причем каждая из них является бесконечным циклом. Вставлять чтото в подпрограммы не хочется поскольку они формируют нужную мне частоту. Я уже и так разогнал процессор на 20МГц. Думал что есть какое-то изящное решение с использованием программного счетчика и регистровых пар...? В любом случае спасибо за внимание.
З.Ы. О моем проекте. Летом купил участок по застройку. В красивом месте, в дельте двух рек. В комплекте старый развалившийся дом, сарай и пр. Место очень древненее. Вот и захотелось мне перед застройкой найти у себя клад или какую нибудь экзотику - что-то есть наверняка. Пошерстил в инете схемы металлоискателей - все они какие-то любительские, не вызывают доверия и ктому-же с ошибками.
Собрал парочку(кварцевый и на биениях) - работают, но плохо. Заходелось сделать чтото приличное самостоятельно. Сейчас пытаюсь написать синтезатор эталонной частоты с отображением на 7-сегментном индикаторе. Хочется все устройство сделать на одном кристалле. Может быть эту тему нужно выложить в отдельную ветку.
Есть у кого-то идеи?????????
Добавлено: Вт янв 06, 2009 00:05:07
smac
poff писал(а):Приветствую Вас Smac. Способ описанный Вами я знаю. Возможно я не правильно сформулировал задачу. Требуется по прерыванию INT0 перебирать друг за другом подпрограммы _01, _02, _03, итд. Причем каждая из них является бесконечным циклом. ...
Место очень древненее. Вот и захотелось мне перед застройкой найти у себя клад или какую нибудь экзотику - что-то есть наверняка. Пошерстил в инете схемы металлоискателей - все они какие-то любительские, не вызывают доверия и ктому-же с ошибками.
.....
Т. е. Вам требуется генератор прямоугольных импульсов на три канала, частота которых одинакова, а фаза каждого сдвинута относительно другого на определенную величину? Я правильно понимаю? Лучше вы нарисуйте сигнал, который Вам нужен, а дальше посмотрим как это можно решить. На рисунке желательно указать параметры сигнала (период, длительность импульса, смещение фаз и т.п.)
Желательно также описать, что еще вы хотите от контроллера (как можно более конкретно) чтобы оценить возможно ли это на данном кристалле.
По поводу клада. А времени не жалко на собирание металлоискателей?
Может быть и нет ничего, или находка по ценности не превысит затрат на детали, не говоря уже о потерянном времени?
Добавлено: Вт янв 06, 2009 01:14:10
poff
to Smac.До весны, похоже, работы не будет. Времени навалом. Я все время занимаюсь самообразованием. За 2 года самостоятельно изучил ПИКи и Атмел и даже заработал не этом денег. А еще здорово расширил кругозор...
Код который был выложен на форуме был написан специально для форума, чтобы упростить обьяснялки.
Есть идея изготовить на базе 2313 прямой синтезатор частоты (Direct Digital Synthesizers, DDS).
Предполагается две кнопки: + и - . Частоту 1 МГЦ сдвигать с минимальным шагом в пределах +/- 10кгц. Выход синтезатора - прямоугольные импульсы. Далее эти импульсы суммируются на логическом элементе с импульсами генератора подключенного к рамке металлоискателя. Разностные биения двух генераторов можно услышать а можно, например, попытаться проанализировать програмно. Текущую частоту можно запомнить в ПЗУ и увидеть на индикаторе - вот и вся идея.
Добавлено: Вт янв 06, 2009 10:24:29
smac
poff писал(а):to Smac.Д
Есть идея изготовить на базе 2313 прямой синтезатор частоты (Direct Digital Synthesizers, DDS).
Предполагается две кнопки: + и - . Частоту 1 МГЦ сдвигать с минимальным шагом в пределах +/- 10кгц. Выход синтезатора - прямоугольные импульсы. Далее эти импульсы суммируются на логическом элементе с импульсами генератора подключенного к рамке металлоискателя. Разностные биения двух генераторов можно услышать а можно, например, попытаться проанализировать програмно. Текущую частоту можно запомнить в ПЗУ и увидеть на индикаторе - вот и вся идея.
Прямой цифровой синтез предполагает наличие ЦАП например матрицы R-2R. Использование DDS оправдано когда нужен сигнал с формой отличной от прямоугольной, обычно с помощью DDS можно получить сигнал либо низкой частоты, либо с низким количеством отсчетов на период (особенно применительно к AVR).
Если же требуется меандр с частотой 1 МГц с возможностью сдвига на 10 кГц, то на AVR это малореальная задача, т. к. на частоте 20 МГц длительность полупериода сигнала составляет 10 тактов, прибавление 1 такта к полупериоду равносильно изменению частоты на 100 кГц. При этом контроллер практически будет занят исключительно генерацией сигнала данной частоты.
Думаю что генератор сигнала нужно сделать аппаратный, управляемый с МК, мк попробовать использовать для обработки и индикации, но я бы взял мегу8 или мегу88, вместо тини, хотя бы потому что в первых есть АЦП, которые могут понадобиться в вашей задаче.
Добавлено: Пт янв 09, 2009 19:06:34
poff
Ok.Спасибо за развернутый совет. Буду думать..
Добавлено: Пн янв 12, 2009 18:37:18
Lex_miniman
Такая проблема:
Программировал через lpt на 5 проводах через AVReal.
Потом поменял мамку. Теперь не работает.
Прошил один раз новый контроллер(непонятно как, но он не работал) и больше не прошивает. не может resync (((
Так же пробывал другие 5 проводков, которые manda systems STK200. Через Codevision, номера порта все пробывал. Не работает!
Изза чего это может быть? И как же решить?
------------
Спаял программатор на COM, что на
http://easyelectronics.ru/avr-shag-perv ... mator.html
Не работает! менял в биосе адреса COM и режимы LPT.
Пытался программировать через uniprof. Ни один программатор он не определяет!
Мог ли я до этого благополучно спалить контроллеры через lpt?
Добавлено: Чт янв 15, 2009 21:33:04
Ross
Здравствуйте. Сделал простые часы
http://radiokot.ru/circuit/digital/home/33/ , поставил фузы для кварца 10мгц: cksel=1111, sut=11. Работают, но примерно в 10 раз медленнее (деление ckdiv8 снял). Осциллограф на кварце ничего не показывает. Хотел перейти на внутренний генератор, AVRDUDE пишет ошибку верификации. Программатор usbasp.
Подскажите, что неправильно делаю. Спасибо.
Добавлено: Пт янв 16, 2009 16:48:33
Ross
Часы заработали после замены кварца.
Добавлено: Сб янв 17, 2009 00:18:10
Lestat
есть ATTiny2313
ставлю фюзы как на рисунке, после этого контролер начинает глючить когда обращаюсь к нему через программатор, 1 з 5 раз нормально прочитает "Chip signature", сама программа которая зашита в мк работает, после того как снимаю скдив/8 контролер нормально программируется, что такое?
П.С. экспериментировал с 2мя контролерами, тоже самое.
П.С.С. то есть частота мк при фюзах как на рисунке=500кГц, а частота прошивки 750кГц, через это глючит?
Добавлено: Сб янв 17, 2009 00:27:47
smac
Lestat писал(а):есть ATTiny2313
...
П.С. экспериментировал с 2мя контролерами, тоже самое.
П.С.С. то есть частота мк при фюзах как на рисунке=500кГц, а частота прошивки 750кГц, через это глючит?
Именно через это, частота программирования должна быть раза в 3 меньше, тактовой частоты контроллера, а лучше в 4.
Добавлено: Ср янв 21, 2009 20:49:03
Tramp
Я тут поигрался немного с фьюзами у Тинни2313 и загнал ее в стопор, теперь она не определяется. Предположительно RSTDISBL=0 (но точно не помню)
Код: Выделить всё
avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.26rev3 (Oct 31 2008 14:01:29) http://www.ln.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua
Command: -p1 +TINY2313 -o4000 -as -e -%
% LPT port number 1
% LPT base address 0x378
% DLportIO.dll succesfully loaded, DLportIO.sys interface activated
% LPT write cycle 4.46us
% Atmel adapter for STK*00 found
% STK mode
% osc = 4000kHz -> setup=1, hold=1,1
% Reset
% PgmOn reply FF FF FF FF
% Try 1 to resync by reset pulse % PgmOn reply FF FF FF FF
% Try 2 to resync by reset pulse % PgmOn reply FF FF FF FF
% Try 3 to resync by reset pulse % PgmOn reply FF FF FF FF
% Try 4 to resync by reset pulse % PgmOn reply FF FF FF FF
Can't resync
Reset pin released
Adapter disabled
это можно вылечить без параллельного программатора?[/code]
Добавлено: Пн янв 26, 2009 19:44:44
Human
Здравствуйте. Собрал две схемы из обучалки - Байт Бластер и бегущие огоньки только на ATtiny2331, а не на 90s2313. Скомпилировал залил вроде все без ошибок, а огоньки не бегут. Прилагаю скриншот консоли и исходник. Посмотрите пожалуйста. То что на скриншоте означает -что программатор работает или не факт? Просто не знаю где ошибку искать.
Добавлено: Пн янв 26, 2009 21:05:06
радан
всем доброй ночи уважаемые Коты давно занимаясь аналоговой электроникой решил занятся микроконтроллерами для пробы собрал часы на attini 2313 те что в
http://radiokot.ru/circuit/digital/home/33 все собрал прошил но вот незадача часы идут но ровно в десять раз медленней положенного тоесть за 10 минут текущего времени на них проходит всего лиш минута где ошибка подскажите начинающему
Добавлено: Вт янв 27, 2009 19:57:19
kvark85
Здравствуйте. Нужна пмощь. Делаю димммер на ATtiny2313. Написана небольшая програмка опроса сенсорной кнопки в maind. Добавляю прерывание INT0 (с помошью него принимаю команду с ик пульта) - и CodeVisionAVR при компиляции после этого момента выдает предупреждение, которая прикреплена в виде небольшой картинки.
вот перевод на корявый русский этого предупреждения: Оценочные данные стека 38 байта (ов), превышает объем средств, выделяемых на эти цели в конфигурации с компилятором.
Она рекомендовала увеличить размер данных мешков. непонял какого стека можем нехватить для моей программы??
Добавлено: Вт янв 27, 2009 20:10:12
ЛеонидК
радан
Это может быть из-за неправильной установки конфигурационного бита CKDIV8. По умолчанию (в новой микросхеме) он запрограммирован и тактовая частота делится на 8.
Добавлено: Вт янв 27, 2009 23:54:57
Паятель
радан писал(а): но вот незадача часы идут но ровно в десять раз медленней положенного тоесть за 10 минут текущего времени на них проходит всего лиш минута где ошибка подскажите начинающему
Если кварц такой, как надо, то, вероятно, фьюзы неправильно стоят. Найдите тему по этой статье, там написано, какие должны быть.