Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Помогите разобраться с кодом на СИ для ATmega8

Непрочитано 02.08.2012, 01:59  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от ut1wpr Посмотреть сообщение
фазе написания программ и при первичной отладке лучше всего оптимизацию отключать вообще
В том и дело, что при отладке в Proteus все нормально.
Сообщение от omercury Посмотреть сообщение
Оно точно работает хоть как-нибудь?
Это мне посоветовали на форуме, делать задержку по циклам программы..
Опрос DS18B20 происходит где-то через 3 мин., а аналоговых датчиков около 30 сек.
Сообщение от _Артём_ Посмотреть сообщение
почему бы от какого-нибудь таймера не синхронизироваться?
Пробовал, но когда включаю прерывание по таймеру, результаты почему-то не выводятся?
Сообщение от _Артём_ Посмотреть сообщение
delay_us(10) - зачем? Помогает лучшие результаты получить?
(ADC_VREF_TYPE & 0xff) - тоже странно - какой смысл на байт маску из всех единиц накладывать?
Такой код выдает CodeVision AVR, с ним и без результат одинаков. Убрать не проблема.
Реклама:
Dimitrij вне форума  
Непрочитано 02.08.2012, 09:09  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от Dimitrij Посмотреть сообщение
Пробовал, но когда включаю прерывание по таймеру, результаты почему-то не выводятся?
В прерывании только инкремент счётчика системных часов. Максимум - ещё проверка задержек и установка флагов.
Видимо слетают тайминги вывода на LCD и опроса DS18.
Кстати - зачем определение адреса для единственного датчика на 1wire?
Хотя на фоне математики и sprintf это всё мелочи.
omercury вне форума  
Непрочитано 02.08.2012, 10:55  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,458
Сказал спасибо: 3,227
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от _Артём_ Посмотреть сообщение
delay_us(10) - зачем? Помогает лучшие результаты получить?
Требуется время на стабилизацию опорного источника (если он включается вместе с АЦП, а не был выбран ранее для BOD или аналогового компаратора). Для mega8A - до 70 мкС.
ForcePoint вне форума  
Непрочитано 02.08.2012, 18:47  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от ForcePoint Посмотреть сообщение
Требуется время на стабилизацию опорного источника (если он включается вместе с АЦП, а не был выбран ранее для BOD или аналогового компаратора). Для mega8A - до 70 мкС.
Не понял причём тут BOD?
Ну и источнику не надо постоянно стабилизироваться, а в функции delay_us(10) каждый раз.
_Артём_ вне форума  
Непрочитано 02.08.2012, 22:17  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,693
Сказал спасибо: 28
Сказали Спасибо 4,526 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от _Артём_ Посмотреть сообщение
Не понял причём тут BOD?
Да ни при чем, конечно... Просто ТС умыкнул из стандартного автогенератора кода КадАВРа коментарии, а там для этой задержки 10us прописано:
Цитата:
// Delay needed for the stabilization of the ADC input voltage
Сообщение от omercury Посмотреть сообщение
Кстати - зачем определение адреса для единственного датчика на 1wire?
Это то как раз действительно мелочь на фоне остального, да и единожды в начале запуска программы никогда не помешает, а вдруг мыши провод отгрызли...
Сообщение от Dimitrij Посмотреть сообщение
а аналоговых датчиков около 30 сек.
Ну, это ... как сказать. Цикл опроса, да, а в цикле Вы дрючите каналы АЦП по полной, причем не понятно зачем циклы for(i=0;i‹2;i++) для давления и температуры, если вы там ничего не усредняете. Напрашивается концовка некогда популярного политического анекдота: "а что, с одного раза его пристрелить нельзя было?"
To Dimitrij, Вы бы "причесали" слегка код и выложили бы файлом, ну хотя бы текстовым, а то портянку эту крутить в онлайн тоскливо, а еще лучше проектом того же Протеуса с КадАВРовским - ускорится процесс помощи.

Последний раз редактировалось Halex07; 02.08.2012 в 22:20.
Halex07 вне форума  
Непрочитано 03.08.2012, 01:21  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от Halex07 Посмотреть сообщение
не понятно зачем циклы for(i=0;i‹2;i++)
Мне посоветовали: для того, чтобы показания не так прыгали, пропустить первый замер и для расчетов использовать второй. Не уверен, правильно ли я сделал? Может хватит и одного замера?
Немного переписал программу, убрал подсчет циклов и задействовал таймер.
А как еще "причесать"?
Проект выкладываю.
Вложения:
Тип файла: rar Meteo.rar (41.3 Кб, 53 просмотров)

Последний раз редактировалось Dimitrij; 03.08.2012 в 01:24.
Dimitrij вне форума  
Непрочитано 03.08.2012, 01:51  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от Dimitrij Посмотреть сообщение
Мне посоветовали: для того, чтобы показания не так прыгали, пропустить первый замер и для расчетов использовать второй. Не уверен, правильно ли я сделал?
Вроде правильно.
Можно еще несколько раз мерять с накоплением результата в сумму. И с ней работать.

Сообщение от Dimitrij Посмотреть сообщение
А как еще "причесать"?
Проект выкладываю.
Код:
char counter = 0;
char count = 0;
заменить на
Код:
volatile char counter = 0;
volatile char count = 0;
P.S. За форматирование следить тщательнее.
_Артём_ вне форума  
Непрочитано 03.08.2012, 08:49  
Vizitka
Почётный гражданин KAZUS.RUN
 
Аватар для Vizitka
 
Регистрация: 11.01.2008
Адрес: Ковель UA
Сообщений: 1,063
Сказал спасибо: 154
Сказали Спасибо 540 раз(а) в 330 сообщении(ях)
Vizitka на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от Dimitrij Посмотреть сообщение
для того, чтобы показания не так прыгали
Где-то на просторах встретил , что в самом кристалле Меги8 есть внутренняя связь по питанию аналоговой и цыфровой части из-за чего наблюдается плавание измеряемых величин.Ага , нашел , цитата оттуда - http://easyelectronics.ru/podklyuche...ra-likbez.html
Warning!!!

В чипе Mega8 похоже есть ошибка на уровне топологии чипа — Vcc и AVcc связаны между собой внутри кристалла. Между ними сопротивление около (!!!) 5Ом Для сравнения, в ATmega16 и ATmega168 между Vcc и AVcc сопротивление в десятки МЕГА ом! В даташите на этот счет никаких указаний нет до сих пор, но в одном из топиков за 2004 год на AVRFreaks сказано, что люди бодались с цифровым шумом АЦП, потом написали в поддержку Atmel мол WTF??? А те, дескать, да в чипе есть бага и Vcc и AVcc соединены внутри кристалла. В свете этой инфы, думаю что ставить дроссель на AVcc для Mega8 практически бесполезно. Но AVcc запитывать надо в любом случае — кто знает насколько мощная эта внутренняя связь?
Vizitka вне форума  
Непрочитано 03.08.2012, 09:15  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

Сообщение от Dimitrij Посмотреть сообщение
Мне посоветовали: для того, чтобы показания не так прыгали, пропустить первый замер и для расчетов использовать второй. Не уверен, правильно ли я сделал? Может хватит и одного замера?
Немного переписал программу, убрал подсчет циклов и задействовал таймер.
А как еще "причесать"?
Проект выкладываю.
Подобное может иметь место только после переключения канала. В таком случае достаточно просто отработать преобразование не вычитывая результата. Если нужна высокая точность - работаем с любым из методов фильтрации. Естественно, теряя время на фильтрацию.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 03.08.2012, 09:19  
dimanka
Временная регистрация
 
Регистрация: 30.03.2007
Адрес: Челябинск
Сообщений: 62
Сказал спасибо: 11
Сказали Спасибо 11 раз(а) в 9 сообщении(ях)
dimanka на пути к лучшему
По умолчанию Re: Помогите разобраться с кодом на СИ для ATmega8

for(i=0;i‹2;i++) для давления и температуры, если вы там ничего не усредняете. Напрашивается концовка некогда популярного политического анекдота: "а что, с одного раза его пристрелить нельзя было?"
To Dimitrij

А вот тут интересный момент в некоторых МК (AT32UC3Cxxxx) есть даже специальный битик. При его установке после переключения канала автоматически берётся только второе измерение. Утверждают как точнее получается.
dimanka вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с таймером в Atmega8 artyomugr Микроконтроллеры, АЦП, память и т.д 83 21.07.2011 16:18
Помогите разобраться с кодом _grey_ Микроконтроллеры, АЦП, память и т.д 1 23.07.2010 19:16
mega8 помогите разобраться с кодом AGAT0365 Микроконтроллеры, АЦП, память и т.д 10 27.05.2010 16:08
Помогите разобраться с кодом Micro C for AVR deeman30rus Электроника - это просто 7 09.02.2010 11:46
помогите с кодом для АВР. язык си. Curt_atmel-proger Микроконтроллеры, АЦП, память и т.д 13 23.08.2007 20:53


Часовой пояс GMT +4, время: 10:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.