BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 43
Зарегистрирован: Сб апр 05, 2014 20:41:29
Откуда: Иваново

Сообщение ksv68 »

А функция тогда где?
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область

Сообщение Gordon Shumway »

ksv68 писал(а):функция где?
При выполнении первого условия идёт проверка второго. Если второе условие выполняется, то Return. Если первое условие не выполняется, то end if. Если второе условие не выполняется, то end if.
С уважением,
Алексей.
Контактная информация:
Реклама
Открыл глаза
Сообщения: 43
Зарегистрирован: Сб апр 05, 2014 20:41:29
Откуда: Иваново

Сообщение ksv68 »

Спасибо, а в одну строку можно написать?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Вам же сказали что можно. Второй If уберите.

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

If Keynim = 0 And Key = 0 Then 
...
End If
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область

Сообщение Gordon Shumway »

ksv68 писал(а):а в одну строку можно написать?
Ну, теоретичски:

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

If Keynim = 0 and Key = 0 then Return
только мне сейчас проверить негде.
С уважением,
Алексей.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Так тоже можно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область

Сообщение Gordon Shumway »

edm2007 писал(а):Так тоже можно.
В вашем варианте можно несколько действий добавить при выполнении условий.
Например мигнуть светодиодом перед ретурном.
С уважением,
Алексей.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Угу. Все предложенные варианты имеют право на жизнь. Все зависит от задачи.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина

Сообщение vanyap1 »

Здравствуйте. Подскажите пожалуйста, или ткните носом в литературу.
В программе задействованы два прерывания. Первое по выходу таймера реального времени, по которому он и опрашивается ежесекундно. А второе для рс232.
Если произойдет прерывание во время приема данных, контроллер пропустит или отложит опрос часов?
Какая вероятность что МК что то пропустит с рс232, если прерывания часов на несколько тактов только для установки флага наступит во время приема данных?
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Здравствуйте.

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

P.S. Флаги прерываний не считают количество вызовов, а лишь фиксируют факт срабатывания. Проще говоря, если на INT0 сидит кнопка, то флаг зафиксирует ее нажатие первый раз, и после выполнения текущего прерывания уйдет обрабатывать INT0 так же один раз. Один раз, даже если кнопка была натыкана 100500 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина

Сообщение vanyap1 »

Спасибо. Часы надо, но на них как то пофигу. главное с рс232 ничего не пропустить.
Последний раз редактировалось vanyap1 Сб янв 10, 2015 14:52:09, всего редактировалось 1 раз.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Не переживайте, пока Вы в обработчике, только одно прерывание может Вам помешать. Это RESET. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина

Сообщение vanyap1 »

Кстати. При программировании загрузчика забыл включить сторожевой таймер.
Его возможно включить в программе? Программатор уже отпаял.

Упс вопрос глупый. Будет сбрасывать еще на этапе загрузчика. В нем нет функции сброса таймера.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Да. Его лучше там и включать, потому как про фьюз можно запросто забыть, и получить массу проблем с отладкой.

P.S. C загрузчиком да, но в остальном пусть совет останется. Удалять не буду. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Открыл глаза
Сообщения: 43
Зарегистрирован: Сб апр 05, 2014 20:41:29
Откуда: Иваново

Сообщение ksv68 »

Написал часть проекта, гляньте опытным взглядом, может какие грубые ошибки допустил. В протеусе работает, в железо пока не стал заливать, это скорее даже заготовка , первый блин как говорится. Перешёл с другого языка, по тому ли пути иду, сильно не ругайте. https://yadi.sk/d/xH_QjhEhdtAuo За ранее благодарен.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Грубого ничего не увидел, вполне неплохо. Сложно конечно судить о коде, не зная совершенно логики работы. Лишь одно для меня совершенно неприемлемо - ни единого комментария в коде.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Открыл глаза
Сообщения: 43
Зарегистрирован: Сб апр 05, 2014 20:41:29
Откуда: Иваново

Сообщение ksv68 »

edm2007 писал(а): Ни единого комментария в коде.
Большое спасибо, с комментариями конечно поленился и сам начинаю путать , чего зачем . Залил в железо и как всегда первая неудача, работает только индикатор, кнопки молчат, хотя в протеусе все ОК. Вывел на дисплей переменную Key, что читается с порта с кнопками и 255 или бегают цифры, наверное наводка, хотя прога предыдущая (в флов коде написанная) работала, хотя я там читал только 4 бита. Странно, протеус показывает на экране одно (код 30) те 4 бита и есть , а в железе другое (код 255) ???
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Проверьте в железе, при отжатых кнопках на пинах МК кнопок есть +5В?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Открыл глаза
Сообщения: 43
Зарегистрирован: Сб апр 05, 2014 20:41:29
Откуда: Иваново

Сообщение ksv68 »

5 вольт есть на всех кнопках, при нажатии на кнопку код (вывел на экран) меняется, при отжатых немного бегают цифры. Думаю надо задать ,чтоб читались 4 бита порта.
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина

Сообщение vanyap1 »

Как достучаться до фуз битов в - at90s8515
В баскоме недоступно. Во вкладке просто ничего нет.
Надо включить таймер сторожевой.

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

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