ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

sachok писал(а):Проблема с настройкой ШИМ. Делаю это так: (вложение). В протеусе работает только 1 канал, почему не пойму.:)

лучше в железе смотреть. Кстати, компилятор вот так сделать не позволяет TCNT1=0x00 ? Другие 16-ти битные регистры соответсвено, по идее он должен сам нужный порядок чтения/записи двухбайтных регистров правильно ставить.
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

Железа пока нету. С ШИМ на ATtiny2313 работаю первый раз и то через мастер настройки CVAVR. Нужно настроить все 4 канала ШИМ для начала на любую скважность потом в программе с помощью кнопок буду менять её.
Я не Сашок!!!
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Сообщение 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. Если можно, кинте приблизительный или похожий кусок кода на асме. Организовывать прерывания я умею. Заранее благодарен..
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

poff писал(а):доброго времени суток в новом году..
Подскажите чайнику, каким образом можно вызывать данные подпрограммы через прерывание, например нажатие кнопки на входе INT0. Если можно, кинте приблизительный или похожий кусок кода на асме. ..

Это просто, единственное, что каждая подпрограмма у вас- бесконечный цикл, поэтому вызвав один раз эту подпрограмму вы из прерываний уже не вернетесь. Если это вас устраивает, то сделать проще простого.

Код: Выделить всё

...
.org INT0addr; размещаем вызов по адресу вектора INT0
rjmp _03; прыгаем на код
.. далее ваш код

но так делать на самом деле не стоит, если же "дернуть ногой" в обработчике нужно 1 раз, то сделать надо так:

Код: Выделить всё

...
.org INT0addr; размещаем вызов по адресу вектора INT0
rjmp _03; прыгаем на код
.. далее ваш код
...
_03:    sbi portd,2      
           nop
           cbi portd,2
           reti; возврат из обработчика прерывания

Остальные подпрограммы переделать по образу и подобию
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Сообщение poff »

Приветствую Вас Smac. Способ описанный Вами я знаю. Возможно я не правильно сформулировал задачу. Требуется по прерыванию INT0 перебирать друг за другом подпрограммы _01, _02, _03, итд. Причем каждая из них является бесконечным циклом. Вставлять чтото в подпрограммы не хочется поскольку они формируют нужную мне частоту. Я уже и так разогнал процессор на 20МГц. Думал что есть какое-то изящное решение с использованием программного счетчика и регистровых пар...? В любом случае спасибо за внимание.

З.Ы. О моем проекте. Летом купил участок по застройку. В красивом месте, в дельте двух рек. В комплекте старый развалившийся дом, сарай и пр. Место очень древненее. Вот и захотелось мне перед застройкой найти у себя клад или какую нибудь экзотику - что-то есть наверняка. Пошерстил в инете схемы металлоискателей - все они какие-то любительские, не вызывают доверия и ктому-же с ошибками.
Собрал парочку(кварцевый и на биениях) - работают, но плохо. Заходелось сделать чтото приличное самостоятельно. Сейчас пытаюсь написать синтезатор эталонной частоты с отображением на 7-сегментном индикаторе. Хочется все устройство сделать на одном кристалле. Может быть эту тему нужно выложить в отдельную ветку.

Есть у кого-то идеи?????????
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

poff писал(а):Приветствую Вас Smac. Способ описанный Вами я знаю. Возможно я не правильно сформулировал задачу. Требуется по прерыванию INT0 перебирать друг за другом подпрограммы _01, _02, _03, итд. Причем каждая из них является бесконечным циклом. ...
Место очень древненее. Вот и захотелось мне перед застройкой найти у себя клад или какую нибудь экзотику - что-то есть наверняка. Пошерстил в инете схемы металлоискателей - все они какие-то любительские, не вызывают доверия и ктому-же с ошибками.
.....

Т. е. Вам требуется генератор прямоугольных импульсов на три канала, частота которых одинакова, а фаза каждого сдвинута относительно другого на определенную величину? Я правильно понимаю? Лучше вы нарисуйте сигнал, который Вам нужен, а дальше посмотрим как это можно решить. На рисунке желательно указать параметры сигнала (период, длительность импульса, смещение фаз и т.п.)
Желательно также описать, что еще вы хотите от контроллера (как можно более конкретно) чтобы оценить возможно ли это на данном кристалле.
По поводу клада. А времени не жалко на собирание металлоискателей?
Может быть и нет ничего, или находка по ценности не превысит затрат на детали, не говоря уже о потерянном времени?
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Сообщение poff »

to Smac.До весны, похоже, работы не будет. Времени навалом. Я все время занимаюсь самообразованием. За 2 года самостоятельно изучил ПИКи и Атмел и даже заработал не этом денег. А еще здорово расширил кругозор...

Код который был выложен на форуме был написан специально для форума, чтобы упростить обьяснялки.

Есть идея изготовить на базе 2313 прямой синтезатор частоты (Direct Digital Synthesizers, DDS).
Предполагается две кнопки: + и - . Частоту 1 МГЦ сдвигать с минимальным шагом в пределах +/- 10кгц. Выход синтезатора - прямоугольные импульсы. Далее эти импульсы суммируются на логическом элементе с импульсами генератора подключенного к рамке металлоискателя. Разностные биения двух генераторов можно услышать а можно, например, попытаться проанализировать програмно. Текущую частоту можно запомнить в ПЗУ и увидеть на индикаторе - вот и вся идея.
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение 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, вместо тини, хотя бы потому что в первых есть АЦП, которые могут понадобиться в вашей задаче.
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Сообщение poff »

Ok.Спасибо за развернутый совет. Буду думать..
Аватара пользователя
Lex_miniman
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср сен 10, 2008 18:28:39
Контактная информация:

Сообщение Lex_miniman »

Такая проблема:
Программировал через lpt на 5 проводах через AVReal.
Потом поменял мамку. Теперь не работает.
Прошил один раз новый контроллер(непонятно как, но он не работал) и больше не прошивает. не может resync (((
Так же пробывал другие 5 проводков, которые manda systems STK200. Через Codevision, номера порта все пробывал. Не работает!

Изза чего это может быть? И как же решить?
----------
Спаял программатор на COM, что на http://easyelectronics.ru/avr-shag-perv ... mator.html
Не работает! менял в биосе адреса COM и режимы LPT.
Пытался программировать через uniprof. Ни один программатор он не определяет!
Мог ли я до этого благополучно спалить контроллеры через lpt?
Ross
Родился
Сообщения: 9
Зарегистрирован: Чт янв 15, 2009 21:22:43

Сообщение Ross »

Здравствуйте. Сделал простые часы http://radiokot.ru/circuit/digital/home/33/ , поставил фузы для кварца 10мгц: cksel=1111, sut=11. Работают, но примерно в 10 раз медленнее (деление ckdiv8 снял). Осциллограф на кварце ничего не показывает. Хотел перейти на внутренний генератор, AVRDUDE пишет ошибку верификации. Программатор usbasp.
Подскажите, что неправильно делаю. Спасибо.
Ross
Родился
Сообщения: 9
Зарегистрирован: Чт янв 15, 2009 21:22:43

Сообщение Ross »

Часы заработали после замены кварца.
Аватара пользователя
Lestat
Встал на лапы
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv
Контактная информация:

Сообщение Lestat »

есть ATTiny2313
ставлю фюзы как на рисунке, после этого контролер начинает глючить когда обращаюсь к нему через программатор, 1 з 5 раз нормально прочитает "Chip signature", сама программа которая зашита в мк работает, после того как снимаю скдив/8 контролер нормально программируется, что такое?
П.С. экспериментировал с 2мя контролерами, тоже самое.
П.С.С. то есть частота мк при фюзах как на рисунке=500кГц, а частота прошивки 750кГц, через это глючит?
Вложения
sshot-1.png
(6.56 КБ) 455 скачиваний
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Lestat писал(а):есть ATTiny2313
...
П.С. экспериментировал с 2мя контролерами, тоже самое.
П.С.С. то есть частота мк при фюзах как на рисунке=500кГц, а частота прошивки 750кГц, через это глючит?

Именно через это, частота программирования должна быть раза в 3 меньше, тактовой частоты контроллера, а лучше в 4.
Аватара пользователя
Tramp
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср янв 07, 2009 17:50:20
Контактная информация:

Сообщение 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]
Аватара пользователя
Human
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пт янв 16, 2009 19:17:37

Сообщение Human »

Здравствуйте. Собрал две схемы из обучалки - Байт Бластер и бегущие огоньки только на ATtiny2331, а не на 90s2313. Скомпилировал залил вроде все без ошибок, а огоньки не бегут. Прилагаю скриншот консоли и исходник. Посмотрите пожалуйста. То что на скриншоте означает -что программатор работает или не факт? Просто не знаю где ошибку искать.
Вложения
консоль.jpg
скриншот консоли при прошивке
(79.78 КБ) 445 скачиваний
code.asm
исходник
(1.49 КБ) 390 скачиваний
радан
Родился
Сообщения: 9
Зарегистрирован: Пн янв 26, 2009 20:55:01

Сообщение радан »

всем доброй ночи уважаемые Коты давно занимаясь аналоговой электроникой решил занятся микроконтроллерами для пробы собрал часы на attini 2313 те что в http://radiokot.ru/circuit/digital/home/33 все собрал прошил но вот незадача часы идут но ровно в десять раз медленней положенного тоесть за 10 минут текущего времени на них проходит всего лиш минута где ошибка подскажите начинающему
Аватара пользователя
kvark85
Встал на лапы
Сообщения: 108
Зарегистрирован: Сб ноя 08, 2008 21:23:06
Откуда: Харьков
Контактная информация:

Сообщение kvark85 »

Здравствуйте. Нужна пмощь. Делаю димммер на ATtiny2313. Написана небольшая програмка опроса сенсорной кнопки в maind. Добавляю прерывание INT0 (с помошью него принимаю команду с ик пульта) - и CodeVisionAVR при компиляции после этого момента выдает предупреждение, которая прикреплена в виде небольшой картинки.
вот перевод на корявый русский этого предупреждения: Оценочные данные стека 38 байта (ов), превышает объем средств, выделяемых на эти цели в конфигурации с компилятором.

Она рекомендовала увеличить размер данных мешков. непонял какого стека можем нехватить для моей программы??
Вложения
Warning.PNG
(8.78 КБ) 441 скачивание
Последний раз редактировалось kvark85 Вт янв 27, 2009 21:00:13, всего редактировалось 2 раза.
ЛеонидК
Встал на лапы
Сообщения: 85
Зарегистрирован: Чт янв 08, 2009 22:06:13
Откуда: Киев

Сообщение ЛеонидК »

радан
Это может быть из-за неправильной установки конфигурационного бита CKDIV8. По умолчанию (в новой микросхеме) он запрограммирован и тактовая частота делится на 8.
Аватара пользователя
Паятель
Модератор
Сообщения: 3174
Зарегистрирован: Пт июл 21, 2006 03:08:05
Откуда: Пенза

Сообщение Паятель »

радан писал(а): но вот незадача часы идут но ровно в десять раз медленней положенного тоесть за 10 минут текущего времени на них проходит всего лиш минута где ошибка подскажите начинающему

Если кварц такой, как надо, то, вероятно, фьюзы неправильно стоят. Найдите тему по этой статье, там написано, какие должны быть.
Если долго мучиться, что-нибудь... сломается.
Ответить

Вернуться в «AVR»