Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Atmega8(A) - зависание при длительной цикличной работе.


Atmega8(A) - зависание при длительной цикличной работе.

Сообщений 1 страница 27 из 27

1

Была необходимость в реализации устройства записи-воспроизведения звука по типу атмеловского апноута AN335 - перепотрировали на Си для Меги 8, получили "попугая": продиктовал, запомнило в ЕЕПРОМ номер последней страницы записи, циклически читало и выводило на PWM через паузу 1сек. Работало без нареканий, этакий "попугай-трактор". Написали на Bascom, причем читали страницы из AT45хх побайтно с выводом на PWM - раз в несколько минут сбивалось и несколько циклов воспроизводило просто шум.
В нынешнем проекте Мега8А  опрашивает датчики по трем каналам и передает информацию c просчитанными результатами по RC5, после нескольких минут работы сбивается и виснет, может зациклиться на передаче одного байта. Вроде эффект пропадает с введением длительных пауз между циклами, но более 1-2сек недопустимо замыслом.
Печатки в вариантах, включая использование и встроенного RC генератора, и керамического резонатора, на емкости 0.1uF никогда не скупились. Тактовая частота всегда 8МГц. WDT никогда не программировали.
Может ли кто высказать мнение по этому поводу?

  Второй вопрос: та же Мега8A (L тоже пробовал). При питании от 3.3в не уверенно держит 8МГЦ от внутреннего RC (критично для конструкции), а при использовании керамического резонатора не всегда запускается. Правда, кварц не пробовал, да и размеры ограничены, а маленький кварц стоить будут прилично( по моему скромному мнению). С фузами игрался, лучше не становиться- может, правда, не с теми... :hobo:

0

2

IgorMK написал(а):

Была необходимость в реализации устройства записи-воспроизведения звука по типу атмеловского апноута AN335 - перепотрировали на Си для Меги 8, получили "попугая": продиктовал, запомнило в ЕЕПРОМ номер последней страницы записи, циклически читало и выводило на PWM через паузу 1сек. Работало без нареканий, этакий "попугай-трактор". Написали на Bascom, причем читали страницы из AT45хх побайтно с выводом на PWM - раз в несколько минут сбивалось и несколько циклов воспроизводило просто шум. В нынешнем проекте Мега8А  опрашивает датчики по трем каналам и передает информацию c просчитанными результатами по RC5, после нескольких минут работы сбивается и виснет, может зациклиться на передаче одного байта. Вроде эффект пропадает с введением длительных пауз между циклами, но более 1-2сек недопустимо замыслом. Печатки в вариантах, включая использование и встроенного RC генератора, и керамического резонатора, на емкости 0.1uF никогда не скупились. Тактовая частота всегда 8МГц. WDT никогда не программировали. Может ли кто высказать мнение по этому поводу?
              Второй вопрос: та же Мега8A (L тоже пробовал). При питании от 3.3в не уверенно держит 8МГЦ от внутреннего RC (критично для конструкции), а при использовании керамического резонатора не всегда запускается. Правда, кварц не пробовал, да и размеры ограничены, а маленький кварц стоить будут прилично( по моему скромному мнению). С фузами игрался, лучше не становиться- может, правда, не с теми...

При считывании с ЕЕПРОМ FIFO делали?  Кварц стоит копейки. В китае стоят как семечки. RC генератор никогда не будет стабильный тем более на 8Мгц. думаю понимаете почему )) Bascom тут явно не при чем. все должно пахать. Просто где-то завелся полтергейст или чего хуже шайтан )))

Отредактировано RN6LHC (2015-04-28 09:04:34)

0

3

Частота зависит не только от питания но и от температуры, так-что только кварц, как ни крути. В фьюзах скорт=0(запрограмирован, размах генератора = напр.пит) Проверить программу- стек, может где прерывание мешает, пользуйтесь командой END.

0

4

RN6LHC написал(а):

Никаких Ардуин и СИ , только ЛУТ и BASCOM , only HARDCORE  )))

:D  :D  :D  Эт точно!!

0

5

Так если на СИ пахало зачем переписывали в Баском?  Вам два попугая надо ? один BASя другой СИрожа?

0

6

RN6LHC написал(а):

Так если на СИ пахало зачем переписывали в Баском?

Меня это тоже насторожило.  :offtop:

0

7

Первое - спасибо за вразумительные акценты на что нужно обратить внимание.
Второе - зачем на Bascom? Да из тех же соображений про Си и Ардуино - "только Баском!"
Каждый к своему прикипел: многие, вообще, кричат - "только асм".
Когда пишешь на Баском, то просто говоришь камню, что нужно сделать, а для всего, что вне Баскома - еще и втирать КАК и Чем ...
Так вот захотелось оставить для "попугая" открытый путь для дальнейшего функционального ("интеллектуального") развития, например:  менять речевые ( или другие звуковые) сообщения по алгоритмам обусловленным периферийными сигналами.

0

8

IgorMK написал(а):

Когда пишешь на Баском, то просто говоришь камню, что нужно сделать

Так и есть. Но есть моменты, пока его не "поругаешь"  :D , то ничего не получишь.

IgorMK написал(а):

Так вот захотелось оставить для "попугая" открытый путь для дальнейшего функционального ("интеллектуального") развития, например:  менять речевые ( или другие звуковые) сообщения по алгоритмам обусловленным периферийными сигналами.

Это, типа, например есть 3 датчика и 6 записанных звуковых сообщений. При определённых показаниях датчиков (срабатывании), чип, анализируя датчики, выдаёт то или иное сообщение, (возможно комбинируя) из ранее в него записанных. Так?  :)

0

9

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

0

10

IgorMK написал(а):

Второй вопрос: та же Мега8A (L тоже пробовал). При питании от 3.3в не уверенно держит 8МГЦ от внутреннего RC (критично для конструкции)

Вот на днях столкнулся - при питании этого камня в 5в, тоже не уверенно держит 8МГЦ от внутреннего RC. Мне помогло снижение частоты.

0

11

При 5в  внутренний RС 8МГц Атмега8А держит хорошо, проверено не меньше чем на сотне : $baud 57600 - без проблем.

0

12

фирма Atmel себя очень хорошо зарекомендовала своей качественной продукцией уже много лет, смешно читать такое кидание какашек в их адрес (про их МК), когда на лицо кривизна или/и отсутствие опыта в программировании и знания архитектуры

0

13

RDW написал(а):

фирма Atmel себя очень хорошо зарекомендовала своей качественной продукцией уже много лет, смешно читать такое кидание какашек в их адрес (про их МК), когда на лицо кривизна или/и отсутствие опыта в программировании и знания архитектуры


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

Самое удивительное в том, что заменяя одно только слово "Atmel" на "Motorola, ST, NEC,PIC, etc."  - можно осчастливить актуальными постами огромное количество форумов вне зависимости от языка программирования или компилятора.
При этом не нужно даже читать заголовок темы и просматривать ее на предмет наличия в ней "кинутых" кем-либо субстанций, упомянутых в цитируемом перле.

+1

14

Это было на пост:

sevastopolets написал(а):

Вот на днях столкнулся - при питании этого камня в 5в, тоже не уверенно держит 8МГЦ от внутреннего RC. Мне помогло снижение частоты.

Как правило, большинство проблем бывает от плохого питания МК, что может быть последствием неправильной схемотехникой силовой части или ей подобной.
Вы схему реальную показали нам тут в теме? Нет.

0

15

Если проблемы с скоростью передачи, то тут обычная погрешность при RC, нужно использовать кратные скорости передачи (это как бы изъезженная тема). В инете есть онлайн калькуляторы.

0

16

Все будет прекрасно, если придерживаться следующих рекомендаций: Разводка плат микроконтроллеров и забыть, как страшный сон навесной монтаж.

Отредактировано sva-don (2015-05-05 17:32:26)

0

17

sva-don написал(а):

Все будет прекрасно, если придерживаться следующих рекомендаций: Разводка плат микроконтроллеров и забыть, как страшный сон навесной монтаж.

Отредактировано sva-don (Сегодня 17:32:26)

Ни о каком навесном монтаже и речи не идет. Никогда не ленился сделать сразу плату (правда, на качественный ЛУТ руки и вправду кривоваты - использую пленку-фоторезист, а ЛУТ, если шаг не меньше SOIC (1,27mm)), шины питания всегда шире сигнальных, короткие и прямые, насколько возможно. На 0.1uF не скуплюсь.
Напомню, что первоначально спрашивал мнения по поводу того, почему, кстати на одной и той же плате и для Си и для Баском, МК впадает в ступор при непрерывном цикличном выполнении программы написанной на Баском.
Уже в процессе обсуждения темы меня натолкнуло на мысль прочитать фузы для варианта на Си (не предавал значения тому, что указывал в конфигурации камня в CV-AVR: заработало после портирования на Мегу8 и ладно) и сравнить с тем, что я накнопил в Баском.
Кроме того, для этого устройства есть возможность пробовать запустить  на внутр. 4МГц или даже 1МГц.

По второму вопросу: устройство на Мега8А питание  3.3в ( здесь нужно только 8МГц хотя бы с точностью достаточной для чтения USART при отладке) при работе от внутреннего RC - не вытягивает по частоте, что видно по нечитаемости символов в терминале. При использовании керамического резонатора - не всегда запускается. С кварцевым резонатором не пробовал: кварц "лодочка" не подходит по габаритам, совсем мелких  разумной цены не встречал. Спасибо, обратили внимание на CKOPT - попробую там ковырнуть.

Собственно, идеальный вариант ответа был бы: " Я с этим сталкивался, решил так-то...". Но и соображения приветствуются.

RDW, вы молодец, что сменили тон - нужно сеять позитив ( и конструктив).

0

18

IgorMK, а ведь вам правду говорят. AVRы удивительно надежны и работают и на макетке и при навесном монтаже и при неправильно разведенном питании и при отсутствии конденсаторов а кварце и питании и при нестандартной повышенной частоте (это все личный опыт : ) Да и Баском дает вполне приличный код.
Рекомендую поискать проблему там, где они обычно возникают:
- например прочитать топик на форуме, посвященный магическим константам $hwstack  $swstack $framesize,
- убедиться, что не переполняются текстовые переменные
- сделать отладку хотя бы через тот же UART

0

19

Декларирую: претензий ни к Atmel, ни к Bascom не выдвигатся (иначе давно бы пересел на ST и Си) , в отличие от собственной головы... :hobo:
А вот учиться никогда не поздно.

Civil написал(а):

IgorMK, а ведь вам правду говорят. AVRы удивительно надежны и работают и на макетке и при навесном монтаже и при неправильно разведенном питании и при отсутствии конденсаторов а кварце и питании и при нестандартной повышенной частоте (это все личный опыт : ) Да и Баском дает вполне приличный код.
Рекомендую поискать проблему там, где они обычно возникают:
- например прочитать топик на форуме, посвященный магическим константам $hwstack  $swstack $framesize,
- убедиться, что не переполняются текстовые переменные
- сделать отладку хотя бы через тот же UART

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

Отредактировано IgorMK (2015-05-06 01:29:55)

0

20

Из своего опыта, скажу, что ни разу МК не несоответствовал своим параметрам. Во всём сам виноват. По ссылке ваше, не увидел упоминания правил (закона) Кирхгофа. Одним словом питание МК цифры, МК аналога, Силовой части, должны быть отделены, и сходится в точке ИП. Это относится и к земле. Светодиоды, кстати - силовая часть. Недавно тоже волосы рвал - мк иногда подключал nRF через ключ. По питанию nRF стоит электролит. Запитывается всё от стабилизатора 3,3в. Так вот попутал местами электролиты стабилизатора и nRF. И по заданной мною программе, мк зависал. Ес-но, я не мог найти логику в зависании (хотя сам и написал) и материл "камень" (не себя-же любимого :flag: ) И задай я на форуме вопрос, кто бы УГАДАЛ :idea:  в чём дело? :tomato:

+1

21

IgorMK написал(а):

Если можно- ткните на информацию по переполнению текстовых переменных


Все просто. Длина строки не проверяется. Поэтому при записи строки длиной больше переменной, затираются следующие ячейки памяти.
Из той же области про размерность: например, если делите переменную типа long на word, то результат надо записать в long.

0

22

kip написал(а):

Из своего опыта, скажу, что ни разу МК не несоответствовал своим параметрам. Во всём сам виноват. По ссылке ваше, не увидел упоминания правил (закона) Кирхгофа. Одним словом питание МК цифры, МК аналога, Силовой части, должны быть отделены, и сходится в точке ИП. Это относится и к земле. Светодиоды, кстати - силовая часть. Недавно тоже волосы рвал - мк иногда подключал nRF через ключ. По питанию nRF стоит электролит. Запитывается всё от стабилизатора 3,3в. Так вот попутал местами электролиты стабилизатора и nRF. И по заданной мною программе, мк зависал. Ес-но, я не мог найти логику в зависании (хотя сам и написал) и материл "камень" (не себя-же любимого  ) И задай я на форуме вопрос, кто бы УГАДАЛ   в чём дело?

Вы знаете, во всех случаях зависания светодиоды присутствуют на 5в шине , как коллекторная нагрузка n-p-n или p-n-p ключа, но с другой стороны - та же плата залитая прошивкой из-под Си работает, как трактор, причем месяцами беспрерывно. Но там не было USART.
Нигде в hardware USART не может быть переполнения?
Затронуты Noric'и, как я понял. Как раз сижу, кручу в руках. Купил nRF24L01 еще года 4 назад, вот так же достану, покручу, почитаю и откладываю "на потом". Читаю апноут  AN#151 - громоздко смотрится, наверное, если разделить на две части Rx и Tx и еще убрать PRINT'ы, то будет покомпактней. Есть на пробу и пара RFM70 (Hope) - тоже репу иногда почесываю, а руки не доходят... Если есть что посоветовать - открыть новую тему?

0

23

IgorMK написал(а):

Вы знаете, во всех случаях зависания светодиоды присутствуют на 5в шине , как коллекторная нагрузка n-p-n или p-n-p ключа

Т.е. Вы не поняли.
Если питание идёт http://sh.uploads.ru/t/wkODm.jpg
Если питание светодиода и МК по такой схеме-(именно движение тока) то рискуете получить глюки.
Электрическая схема будет выглядеть так
http://sh.uploads.ru/t/kwAoh.jpg
Дальше законы Ома и понятно, что при включении светодиода, будет просадка напряжения  на питании МК. А это помеха и  глюк.  При этом не важно сколько вы керамики навешали на ноги МК - не поможет. Толщина проводника - тоже не выход.
Про нордики- тем много, Тут вроде всё разжевали.

0

24

Mrshilov написал(а):

AN#151 слишком наворочен, там можно выкинуть 90%. Я делал c nRF24L01 пультик на Tiny2313, обмен туда и обратно (полудуплекс). И еще места много осталось. Отослал вам в личку, посмотрите.

Спасибо, гляну сейчас. Глянул, а в AN#151, ко всей разухабистости, еще и хардовый SPI обязательно.

kip написал(а):

Т.е. Вы не поняли.
Если питание идёт...

Нет, все нормально, я представил о чем речь шла. Ссылка ладная. Спасибо, что ткнули, а гугл смолчал..., видать для себя приберегли.

Тут вечером новую для меня "манечку" нашел - оч. компактные RF 433MHz для UART-коммуникаций: пара на однокорпусных SYN115( SOT23-6, кварцованный передатчик) и SYN480( SOIC-8, кварцованный супергетеродин), скорость до 10кбит - мне сейчас хватит. Заказал два готовых комплекта по 155руб. на ebay.

Отредактировано IgorMK (2015-05-07 03:02:05)

0

25

Попутный вопрос от начинающего о зависании . Я использую watchdog , при этом сброс его осуществляю с помощью таймера0 . Примерно так

Config Watchdog = 2048
Config Timer0 = Timer , Prescale = 1024
On Timer0 Sekunda
________________________________
.
.
.
Sekunda:                                                 
            Sek = Sek + 1                                 
            Reset Watchdog
           Toggle L1
Return
.
.
.
Это сделано ,что бы не расставлять сброс по всей программе .
Вопрос , можно ли так делать? Или мне это ничего не дает .И надо сбрасывать как положено .Сомнения появились ,когда мк зависал , а светодиод L1 продолжал моргать .

0

26

igor27065 написал(а):

Я использую watchdog , при этом сброс его осуществляю с помощью таймера0

Основной цикл может зависнуть, а прерывания при этом будут успешно работать. В итоге собака не сбросит МК.

0

27

Понял свою ошибку . Я думал ,что зависание может быть вызвано только остановкой тактового генератора . А оказывается генератор может преспокойненько работать, делитель делить ,  а  в цикле основной программы  при этом образоваться каша .

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Atmega8(A) - зависание при длительной цикличной работе.