roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 ноя 2024, 16:24

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 86, 87, 88, 89, 90, 91, 92 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 15:32 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Часто наблюдается такая ошибка - манипуляция значением счётчика в обработчике прерываний, с целью задать требуемый интервал между прерываниями. Чаще всего это означает, что неверно выбран режим работы таймера. В данном случае, для 50 Гц меандра - установить режим CTC/toggle on compare, в OCR0 записать 71, прескэйлер 1024. Прерывание не нужно

Добавлено спустя 1 минуту 41 секунду:
Это я протелепатировал, что тактовая частота 7.3728 МГц :)

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 15:41 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
ну частота естесс-но такая :wink:
но 7372800/1024/50=144 почему 71?
все-таки как сбросить последствия прихода прерывания таймера в порту?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 15:47 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Потому что toggle on compare - один цикл работы таймера равен полупериоду меандра. Еще раз : прерывания тебе не нужны

Добавлено спустя 45 секунд:
В даташите есть формула, не 72, а именно 71

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 15:55 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
да, точняк, стр77 пункт 14.7.2 формула
Вложение:
formula.JPG
formula.JPG [ 11.57 КиБ | Просмотров: 1579 ]

спасибо blindman

но вот про прерывания чет не пойму, почему они все-таки не нужны, попробую ДШ перевести.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 15:57 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Твое прерывание ничего не делает, кроме как перевзводит таймер и меняет состояние ноги - всё это таймер может делать сам, без участия программы

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 16:03 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
а, ну так это пока тестовый вариант, в последствии в обработчике прерывания будет еще всяко-разное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 16:39 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Всякого разного в прерывании как раз меньше всего должно быть. Чем прерывание короче тем лучше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 16:41 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
всякое разное можно повесить на флаги....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 17:03 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
ну смысл был в том, что там кроме сброса порта буду еще несколько команд.

Добавлено спустя 17 минут 17 секунд:
все-таки вопрос открытый, как в порту выключить выставленный бит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 17:40 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Можно использованием битовой маски а можно просто "очистить" бит иногда

ПОРТ.БИТ = 0;

Манипулирование отдельными битами регистров есть и в даташитах на Си и АСМ и вот из курса для начинающих картинка


Вложения:
avr123.nm.ru.png
avr123.nm.ru.png [ 74.94 КиБ | Просмотров: 1407 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 22:43 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
это все я понимаю, но дело в том, что после сброса бита, он автоматически выставляется на следующей команде! вот что меня и ставит в тупик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 22:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Вы покажите кусок кода. Что за бит и регистр ?

Лучше приложить проект целиком. Советую использовать PROTEUS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 23:05 
Не в сети
Аватара пользователя

Зарегистрирован: 25 мар 2009, 13:57
Сообщения: 217
Откуда: Ростов-на-Дону
ФИО: Виктор
на прошлой странице я выкладывал весь код, он особо не изменился

Код:
.INCLUDE "m16def.inc"

.CSEG


.def   temp   = r16

.ORG $0
   rjmp RESET       
.ORG $26
   rjmp timer0
.ORG $30

timer0:
   cli
   push temp
   clr temp
   out TCNT0,temp
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   out portB,temp
   out pinB,temp
   pop temp
   sei
   reti

reset:
   ldi   temp, low(RAMEND)
   out   SPL, temp
   ldi   temp, high(RAMEND)
   out   SPH, temp
   ldi temp,$FF
   out ddrB,temp
;init 8-bit timer on 50hz
   ldi temp,71
   out OCR0,temp
   ldi temp,(1<<OCIE0)
   out TIMSK,temp
   ldi temp,(1<<COM00)|(1<<COM01)|(1<<CS00)|(1<<CS02)
   out TCCR0,temp
   sei
mloop:
   rjmp mloop


таймер отрабатывает нормально, в прерывание заходит, и в первый раз устанавливает 1 в portB.3, и больше не отпускает
может еще надо какой регистр чистить, чтоб порт попустило?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 23:35 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
Дык это см рис


Вложения:
1234.JPG
1234.JPG [ 44.97 КиБ | Просмотров: 1352 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 20 ноя 2009, 23:45 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Код странный...
Что такое out PINB,temp, например?
Зачем cli в начале прерывания?
Зачем sei в конце прерывания?

Вообще, я честно не понял, что он должен делать :)

Основная ошибка вот в чем: если уж вы отдали ногу таймеру,
то рулить портом (через PORT) вы уже не сможете.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 86, 87, 88, 89, 90, 91, 92 ... 144  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO