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

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

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

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

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

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

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

Закрытая тема
Опции темы
Непрочитано 18.04.2012, 13:15   #11
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Симуляция не поможет - ни один симулятор (ни AVR-Studio ни Proteus e.t.c.) не показывает, который из каналов включен.
Тут, в первую очередь, была ошибка в коде - при сложении по ИЛИ установленная "1" не сбросится никогда. А ожидание можно и по таймауту организовать... Некрасиво, но работоспособно.
Сообщение от OlegNZH Посмотреть сообщение
вставив всего 3 строчки
...скорее передвинув...

ДДН, старшие биты пишутся слева, младшие справа. Постарайтесь сразу выработать читабельный стиль.
Реклама:
omercury вне форума  
Непрочитано 18.04.2012, 21:03   #12
ДДН
Временная регистрация
 
Регистрация: 20.01.2011
Адрес: Витебск
Сообщений: 38
Сказал спасибо: 6
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
ДДН на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Сообщение от omercury Посмотреть сообщение
ДДН, старшие биты пишутся слева, младшие справа. Постарайтесь сразу выработать читабельный стиль.
я так понимаю это вы про эту строчку
ADMUX |= (0 ‹‹ MUX0) |(0 ‹‹ MUX1)|(0 ‹‹ MUX2)|(0 ‹‹ MUX3);

нужно так ADMUX |= (0 ‹‹ MUX3) |(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(0 ‹‹ MUX0);
ДДН вне форума  
Непрочитано 18.04.2012, 21:13   #13
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Угу.
Работать-то будет одинаково, но разбираться в таком...
omercury вне форума  
Непрочитано 19.04.2012, 00:26   #14
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Сообщение от ДДН Посмотреть сообщение
ADMUX |= (0 ‹‹ MUX0) |(0 ‹‹ MUX1)|(0 ‹‹ MUX2)|(0 ‹‹ MUX3);
А зачем эти пляски с Муксом Меги8?
В этом регистре находятся еще два бита выбора опорного. Надеюсь, их можно определить как константу, вы же не будете во время выполнения менять опору? Там же есть бит выравнивания. Тоже вполне себе константа.
А биты номера канала - младшие биты этого регистра.
Вполне достаточно определить один раз
Код:
#define  EXTRA_BITS    0xC0 + 0x20  // REFS=3 + ADLAR=1
А выбор номера канала выполнять без лишних OR-ов
Код:
ADMUX = EXTRA_BITS + Channel;  // Где Channel имеет реальный номер  канала.
Если выбор опорного и бит выравнивания равны нулю, то тогда можно прямо использовать номер канала. Так ведь проще?
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 19.04.2012, 00:44   #15
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Это опять история про читабельность кода. Я для себя вообще часто константами хексовыми забиваю,зато потом через год бошку ломаю,опять по битам расписываю...А оно это надо? (Тем более код выложен на всеобщее обсуждение)
OlegNZH вне форума  
Непрочитано 19.04.2012, 00:52   #16
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Сообщение от OlegNZH Посмотреть сообщение
Это опять история про читабельность кода. Я для себя вообще часто константами хексовыми забиваю,зато потом через год бошку ломаю,опять по битам расписываю...А оно это надо? (Тем более код выложен на всеобщее обсуждение)
Да что там по битам расписывать? Порядковый номер канала? А опора и выравнивание - это ж ведь два слова в каменте... И хоть через столетия все будет ясно.
Впрочем, к собственно программированию это отношения не имеет. Стиль, читабельность - все это околопрограммное. Суть ошибки указали коллеге, а это главное. А понравится кому мой стиль, или стиль другого - малосущественно. Мы-то понимаем друг друга...
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 19.04.2012, 01:00   #17
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Консенсус достигнут? Кстати стиль программирования достаточно важен (я вот безобразно пишу,сам над собой издеваюсь) И даже вот этот случай ,с мультиплексором- куча программ с АЦП,всегда по-разному делаю (ненавижу себя!) ,хотя чего проще- взять стандарт из даташита (там настолько всё вылизано,разработчики постарались) и принять через силу за основу. (Просто дифайны тоже через год-два забудутся,и придётся освежать в памяти)
OlegNZH вне форума  
Непрочитано 19.04.2012, 10:17   #18
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
Смех Re: Два канала АЦП Atmega8

Сообщение от OlegNZH Посмотреть сообщение
Просто дифайны тоже через год-два забудутся
Вот образчик, чему тут забываться? Для другого МК правда. И Асм...
PHP код:
.equ    ADCin    =    0b00100011    ;AREF=Vcc(00), Левая привязка(b5 1Вход ADC3(b3-011
Придут ещё и дефайны и макросы. Да и нормально здесь ещё. Вон в соседней ветке каша и в голове и в коде.
omercury вне форума  
Непрочитано 19.04.2012, 10:46   #19
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

ТОгда уж дальше идти,не останавливаясь

#define OPEN_CAN(Can) (ADMUX = 0xC0 + 0x20 + Can) // REFS=3 + ADLAR=1 +Can

...
OPEN_CAN(1);
...

("Ученого переучивать..." себе дороже бывает,если годами стиль вырабатывается.Другое дело изначально привыкать)
OlegNZH вне форума  
Непрочитано 19.04.2012, 11:25   #20
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Два канала АЦП Atmega8

Сообщение от OlegNZH Посмотреть сообщение
#define OPEN_CAN(Can) (ADMUX = 0xC0 + 0x20 + Can) // REFS=3 + ADLAR=1 +Can
А вот в каментах я люблю себя на потом
Код:
#define OPEN_CAN(Can) (ADMUX = 0xC0 + 0x20 + Can) // Внешняя опора N вольт, равнение влево, номер канала
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Закрытая тема

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЦАП токовый, 4...20мА, два канала ua_gruzin Микроконтроллеры, АЦП, память и т.д 43 20.09.2012 11:34
Из 1 канала 0-5в получить 2 канала 0-5в и добавить deadtime 0day TTL и CMOS логика 10 05.03.2011 22:20
АЦП ATmega8 ewgen404 Микроконтроллеры, АЦП, память и т.д 20 24.11.2010 20:18
USB АЦП на ATmega16 переделать на ATmega8 98mildg1 Микроконтроллеры, АЦП, память и т.д 12 25.09.2010 20:29
Проблема с прерыванием от АЦП, Atmega8 R-a-v-e-n Микроконтроллеры, АЦП, память и т.д 11 24.06.2009 14:12


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot