Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: terrarus, ivan_fd  
прерывание для atmega325p в microbasic
Каримов Дата: Вт, 09.07.2013, 15:54  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 19.05.2013

Статус: Offline

Парни! помогите с написание:
Нужно организовать внешнее прерывание по входу Т0(нога 19) по достижении определенного числа (допустим 30),
выполнить подпрограмму. Счет должен вестись независимо от выполнения основной программы.
ЯНДЕКС Дата: 09.07.2013
anatol Дата: Чт, 11.07.2013, 01:44  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Тяжелый случай. Алгоритм если не складывается - то все без толку.
 Фиксируем наличие прерывания, складываем, если больше скажем 20 выход на подпрограмму, нет сброс флага прерывания и выход из п.прогрпммы обработки прерывания.
Каримов Дата: Пн, 15.07.2013, 20:56  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 19.05.2013

Статус: Offline

Дорогой человек! А можно подробнее? А то я сам ни как не могу понять ,как это можно сделать в mikroBasic!

Добавлено (15.07.2013, 20:56)
---------------------------------------------
Вот нашел пример, но
почему ошибка GICR ?

program timeduration
'cpu used is atmega16
'clock is 8 mhz
dim flag as bit
sub procedure int0handler() org 0x002 'int0 vector
TCCR1B=2 'start timer1 with prescaller 2
end sub
sub procedure int1handler() org 0x004 'int1 vector
TCCR1B=0 'stop timer1
flag=0
end sub

main:
' Main program
flag=1
MCUCR = 10 'interupt on falling edge(both int0 and int1)
GICR = 192 'start external int0 and int1
SREG.B7 = 1 'start global interupts
while (flag = 1)'loop untill time measurement is not complete
wend
'the rest of main program
'HERE i will write code to read TCNT1L AND TCNT1H AND TO DISPLAY AT LCD.
end.

Прикрепления: T6963C_240x128.mbpav (1.3 Kb)
DAlexV Дата: Вт, 16.07.2013, 00:17  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 655
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Цитата (Каримов)
Дорогой человек! А можно подробнее?

Давайте попробую я попробую ответить. Вас зовут если верить профилю Ильгам. Очень приятно. Меня зовут Алексей. Должен наверное Вас огорчить. Участники нашего форума в основном занимаются программированием микропроцессоров семейства PIC (Microchip), а Mega(Atmel) это совершенно другой тип микропроцессоров. Да, наши ребята пишут на Mikrobasic, но .... архитектура PIC и Atmel совершенно отличаются друг от друга (регистры, память и т.д.) и соответственно в Mikrobasic для PIC и Atmel то же будут различия несмотря на схожие команды(даже у PIC различных семейств есть отличия и подводные камни).

Цитата (Каримов)
Я недавно начал пробывать прогить на Васике (после долгого перерыва-Spectrum)

Если Вы начинающий то посмотрите в сторону BASCOMa. То же бейсик, но более популярен в России, и примеров больше. Так же не советую начинать со сложных камней. Начните с простого, а когда станет ясно как это все работает тогда уже можно и на серьезные камни переходить.
http://avr.ru/beginer/bascom
http://bascom.at.ua/
и т.д.

Цитата (Каримов)
Вот нашел пример, но почему ошибка GICR ?

Насколько понимаю этот кусок кода здесь задействованы пару таймеров и прерывания от пары ног. Ради любопытства скачал описание на Мегу. Искал что то похожее на GICR и не нашел. Этот набор букв сокращенное название регистров. В основном берутся первые буквы( EICRAExternal Interrupt Control Register A например) и они полностью совпадают с фирменным описанием на контроллер. Поэтому осмелюсь предположить: это либо очепятка, либо аббревиатура от другого контроллера(все остальные регистры в мануале есть).

Надеюсь что не сильно расстроил. И желаю удачи wink



Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
  • Страница 1 из 1
  • 1
Поиск: