Одновременная работа трех таймеров в ATMega8. Идет сбой.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18670
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение ARV »

mr_smit писал(а):
ARV писал(а):боюсь, больше мне помочь нечем
Можно подумать вы хоть чем то помогли.
я пытался направить вас в правильную сторону - я в этом вижу помощь. ибо помогать вам и дальше заблуждаться, делая по-своему, я не собирался никогда.

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

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение mr_smit »

А я считаю что помощь это когда на kazus человек по имени CodeNameHawk сказал:
Но в вашем коде, после правильного декодирования не хватает сброса b_cnt = 0; и start_cond = 0; т.е. b_cnt будет присваиваться по очереди 33,34 аж до 255, вот вам и задержки при регулировании.
И реакция на нажатие клавиш стала нормальной. Это просто к слову. А вы всё куда то направлять пытаетесь. Я не буду ракеты в космос запускать, мне бы вот чтоб подсветка 15 сек горела и гасла. И я просто безумно счастлив буду.

А насчет того что проект не будет никем оценен вы заблуждаетесь. Я не банальный термометр делаю. А скажем так а-ля элемент умного дома. В продаже аналогов нет (за разумные деньги, чтобы и цветной дисплей и часы и 2 канала и пульт). Любой труд заслуживает уважения, и если человек пытается что то сделать не надо его в этом винить, подходя к вопросу с высоты своего опыта.

Я когда приезжаю к людям "оживлять" компьютеры, и вижу как 35-45 летние мужики не то что текст в ворде набрать/форматировать не знают как, а порно на флешку скопировать не могут. Когда приходится объяснять примитивнейшие вещи, что Paint это не панацея от всех бед, есть Excel, куча специализированных бесплатных программ, теория всплывающих баннеров на интернет страницах и как люди на этом зарабатывают и т.д. и т.п., я тоже смотрю на это с высоты... Но всегда объясняю и учу на пальцах, на примерах. А не начинаю на них наезжать, направлять. Человека сложно ПЕРЕучить. Он быстро привыкает. Приходиться подстраиваться. Указывать на ошибки в логике, а не на ошибки в мировозрении.
Последний раз редактировалось mr_smit Ср апр 06, 2011 13:50:43, всего редактировалось 1 раз.
Нельзя всё знать, достаточно понимать.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18670
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение ARV »

что я могу тут поделать... :(
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

Нашел косяк

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

char cnt[]; // промежуточная переменная для функции sprint()
Никогда так не делайте, это не большая машина. А CAVR не тот компилятор, на который следует полагаться:

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

char cnt[100];  // промежуточная переменная для функции sprint()
Или не 100 - сколько там по минимуму...
Если не получиться у вас - приложу проект
Последний раз редактировалось Goodefine Ср апр 06, 2011 14:22:47, всего редактировалось 1 раз.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

mr_smit писал(а): Можно подумать вы хоть чем то помогли.
Просто мнение со стороны - к любым советам нужно прислушиваться. Тем более, от таких грамотных людей, как ув. ARV.
По хорошему счету, советы такого качества, в принципе стоят денег - ведь никого же не удивляет, к примеру, что консультации у хорошего адвоката дороги. Чем хуже программисты? Это не к тому, что хочется денег, но хотя бы адекватной реакции...

Скажите, как вы думаете, отыскать подобный косяк (см. выше) в такой неструктурированной каше, насколько легко?..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение clawham »

это прерывание...оно не реагирует на отпускание кнопки или отработку(или неотработку) комманды!!!я это уже поправил...сичас буду откючать "модули" и смотреть чем кончится....
звыняйте . был немного на работе и занят :)))

код очень ужасный :) извините конечно но это полный абзац :)
но попытаюсь и его привести в чувство
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Реклама
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

clawham писал(а):это прерывание...
Был объявлен безразмерный массив с дислокацией в ОЗУ (см. выше). CAVR оказалось не под силу правильно определить его размер. В итоге при записи в него данных спринтфом, часть их вылезала за пределы и затирала другие данные. Вот и весь сказ...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
codenamehawk
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение codenamehawk »

mr_smit писал(а): Почему одновременная работа 3-х таймеров дает такие сбои???
Если в коде нет ошибок, то скорее всего не хватает скорости работы проца.
Это является следствием обработки длинного кода в прерываниях.
(Одно прерывание мешает другому.)
Я вроде вам уже советовал в прерывании установка флага, обработка уже в цикле в майн.
В принципе раз у вас в схеме есть часы их и используйте.
(При включении подсветки записали время, когда проц свободен проверка не пора ли выключить подсветку.)
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение clawham »

то я отвечал на " а где обнуляется cmd"

ответ прост - в прерывании обработки сигнала от твопа - неправвильный ответ!!!
потом вот я это поправил. вот дал стек 512 вот поставил правильно таймеры а всёравно....проблема решилась только выключением рисования картинки из еепрома....Draw_Bg_from_Eeprom

или мож я просто в симуляциях не мог дождаться вырисовки этой картинки ? :) но основной цикл тормозит безбожно...
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение clawham »

мож я чего не понял но затык происходит именно на data=twi_read(0);

без неё всё работает
Вложения
Dim2.rar
(146.52 КБ) 127 скачиваний
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

clawham писал(а): без неё всё работает
Поставьте размерность у массива и попробуйте :)
Вложения
Dim2222.rar
(116.61 КБ) 130 скачиваний
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение clawham »

Вот мой пример того что я попеределывал...только к 60-й секунде оно раздупливается закончив "рисовать" картинку из еепрома....но вроде как работает ..и безразмерный массив тут не при чём...
нажатия на кнопки....хмм...ктото мне говорил что лезть туда не надо...

И таки я присоединюсь к товарищу ARV - есть такая поговорка - как оно выглядит так и полетит.....
результат как говорится более чем нагляден...нужно просто тупо взять и всё переписать с нуля красиво и по полочкам расставив всё что нужно...поменьше использовать работы в прерываниях, как-то их структурировать, переменные пораскладывать на полочки, запустить в конце концов какую-то переменную времени и сделать примитивнейший флаговый автомат...

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

прикладываю результаты моих изголяний над этим кодом...
и примерчик своего первого кода в котором и пульт есть и пидрегуляторы и менюшки и spi и работа с тучей периферии.....сначала это была мега 16 потом за 5 минут пересел на 32...потом пришло ещё пара пультов подключить....любые операции делаются за 5 минут и наглядны....я не спорю..это не пример и я тоже начинающий проггер на МК но...тем не менее...хотябы к такому надо стремиться...ну и конечно переплюнуть
Вложения
1111.rar
моя програмулька...
(128.4 КБ) 167 скачиваний
Dim2.rar
результат моих коректировок
(161.91 КБ) 148 скачиваний
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

clawham писал(а): ..и безразмерный массив тут не при чём...
Да неужели?... :) Посмотрите приложенный выше код - там практически авторский вариант (пара строк изменено). И все работает - и не вдупляется минуту, а сразу...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение mr_smit »

Goodefine писал(а):Скажите, как вы думаете, отыскать подобный косяк (см. выше) в такой неструктурированной каше, насколько легко?..
Конечно же не легко. Просто я наверное не дорос до понимая советов такого уровня. Мне бы попроще. Отсюда и недопонимание.

И я преклоняюсь перед вами, ув. господа, за то что стараетесь мне помочь. Через 2 часа смогу проверить в железе все рекомендации. Отпишусь.
clawham писал(а):...нужно просто тупо взять и всё переписать с нуля красиво и по полочкам расставив всё что нужно...
За меня код никто переписывать не будет. А написать по другому я не могу. Не умею.
Последний раз редактировалось mr_smit Ср апр 06, 2011 15:43:05, всего редактировалось 1 раз.
Нельзя всё знать, достаточно понимать.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

clawham писал(а): и примерчик своего первого кода в котором и пульт есть и пидрегуляторы и менюшки и spi и работа с тучей периферии.....
Собственно, разница с кодом от mr_smit-a не уж такая большая, как вам кажется..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение clawham »

Как бы похожи мы небыли но это моя первая програмка на МК и начиналась она с простого хелловорд для экранчика 3310 а потом обростала бростала и обростает до сих пор....сейчас она и зарядка и 16 портовый источник токов напряжений и т.д. и при этом никогда с подобными проблемами я не сталкивался....больше проблем с самими устройствами микрухами с которыми я пытаюсь работать ...да и вот например понадобилось мне внедрить новый набор кнопочек пультик новый...я за пол минуты нашел где что и куда писать .... всё просто стурктурировано не конфликтует(а на СПИ висят 4 устройства) и с большим компутером такие общения происходят что лампочки тхрх не гаснут на компортах....но ведь при этом при всём никаких сбоев и без перезагрузок моя платка успешно дошла до своей естественной перезагрузки(переполнение переменной времени - два с половиной месяца!!!) а комп то в это время и на полубайте затыкался и перегружался и зависал...
В моей програмке всё работает по очереди и последовательно...нету лишнего ничего и самое тяжелое прерывание это прерывание тсопа...да и менюшек там туева хуча....и всё взаимовсязано....эт мой "умный дом" :))) а заодно и следилка вачдог для сервера....дергающего питание или резет в случае чего....но вот за 3 года я ниразу не столкнулся с тем что проц делает чтото не то что я ему сказал:) и разобраться в моём исходнике явно проще ;) но я ж говорю..это минимум.....смотреть на программы товарисча АРВ просто приятно глазу....всё лаконично и оптимально без излишков и т.д. я не спорю...но и некрасиво тоже можно писать красивенько
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение mr_smit »

Goodefine писал(а):Нашел косяк

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

char cnt[]; // промежуточная переменная для функции sprint()
Никогда так не делайте, это не большая машина. А CAVR не тот компилятор, на который следует полагаться:

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

char cnt[100];  // промежуточная переменная для функции sprint()
Или не 100 - сколько там по минимуму...
Если не получиться у вас - приложу проект
Вы меня конечно все извините, говорите про кривой код... ну ну. Только один нормальный толковый и грамотный человек попался - Goodefine.

char cnt[100]; и всё, подсветка работает как надо. 30 сек горит - гаснет. Как и надо.

Goodefine, огромное спасибо!!!!!!!!!!!!!

Только теперь вместо:

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

rtc_set_time (bin2bcd(20),bin2bcd(52),bin2bcd(19));
rtc_set_date (bin2bcd(5),bin2bcd(4),bin2bcd(11)); 
Устанавливается 04:52:19 и 03.05.04
Дата/время чет плывет. Хотя часы идут, всё нормально. Что за новая фигня?

Т.е. 04 вместо часов и 04 вместо года. А спустя примерно минут 10 дата становится такая какую задаешь, т.е. 05.04.11
Untitled-1.jpg
(98.77 КБ) 432 скачивания
Последний раз редактировалось mr_smit Ср апр 06, 2011 18:26:33, всего редактировалось 2 раза.
Нельзя всё знать, достаточно понимать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18670
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение ARV »

mr_smit писал(а):Устанавливается 04:52:19 и 03.05.04
Дата/время чет плывет. Хотя часы идут, всё нормально. Что за новая фигня?
ржунимагу :))) :))) :)))
ну-ка, все нормальные чуваки, быстренько навалились на проблемку! :))) :))) :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение Goodefine »

mr_smit писал(а): ...Только один нормальный толковый и грамотный человек попался...
Пожалуйста, конечно. Но вывод вы сделали неправильно - большинство советов были полезны, поверьте - знаю, даже не ошибусь, если скажу выстраданы в свое время... И на массив этот обратил внимание, только благодаря интуиции. Казалось бы - совершенно несвязанные вещи. Если б изначально кто-нибудь говорил бы об этом, еще до проблемы - ведь наверняка не поверили бы? Поэтому простым советам тем более доверяйте, ведь аукаться будет постояно
ЗЫ. размерность 100 - пожалуй многовато, подсчитайте примерно максимальную длину буфера и накиньте еще процентов 30-50... Глядишь, и остальных глюков поменьше станет :)
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
codenamehawk
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: Одновременная работа трех таймеров в ATMega8. Идет сбой.

Сообщение codenamehawk »

Устанавливается 04:52:19 и 03.05.04
Дата/время чет плывет. Хотя часы идут, всё нормально. Что за новая фигня?
А что отладка показывает?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»