Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.08.2011, 22:39
|
|
Частый гость
Регистрация: 22.09.2005
Адрес: Россия Ставрополь
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
STM8S207 ADC?
Всем привет.
АЦП работает в Single mode.
По прерыванию таймера TIM4, данные одного канала получаю без проблем.
Упёрся в проблему при попытке получить в данные с двух каналов АЦП.
Для одного канала код такой(прошу сильно не пинать за кривость):
#pragma vector=TIM4_OVR_UIF_vector
__interrupt void TIM4_OVR_UIF(void)
{
TIM4_SR_bit.UIF=0;
ADC_CSR=0x01;
ADC_CR1_ADON=1;
adc1_h=ADC_DRH;
adc1_l=ADC_DRL;
ADC_CSR_EOC=0;
}
Для второго канала добавляю:
ADC_CSR=0x02;
ADC_CR1_ADON=1;
adc2_h=ADC_DRH;
adc2_l=ADC_DRL;
ADC_CSR_EOC=0;
В результате в двух каналах получаю результат измерения канала №2.
К вечеру мозг отказываецо работать, помогите пинком где накосячил.
|
|
|
Сказали "Спасибо" Keldish
|
|
|
07.08.2011, 23:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8S207 ADC?
Дык так и должно получиться.
Надо по прерыванию окончания преобразования АЦП. С анализом, какой канал был запущен. По результату анализа считывать в нужную переменную...
|
|
|
Сказали "Спасибо" omercury
|
|
|
08.08.2011, 00:45
|
|
Частый гость
Регистрация: 22.09.2005
Адрес: Россия Ставрополь
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: STM8S207 ADC?
Спасибо, попробую...
Странно что не получается иначе.
|
|
|
Сказали "Спасибо" Keldish
|
|
|
08.08.2011, 00:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8S207 ADC?
Для преобразования ему(МК) требуется 14 тактов АЦП (задаётся при конфигурации АЦП). Не тактов МК, а именно 14 тактов АЦП. Он просто не успевает сделать первое измерение, а ему дают уже следующее....
Вот и получается везде одно значение.
Сообщение от Keldish
|
Странно что не получается иначе.
|
Можно и иначе, без прерывания, ожидая флаг окончания преобразования ADC или дать ему времени с запасом...
Последний раз редактировалось omercury; 08.08.2011 в 01:03.
|
|
|
Сказали "Спасибо" omercury
|
|
|
08.08.2011, 01:21
|
|
Частый гость
Регистрация: 22.09.2005
Адрес: Россия Ставрополь
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: STM8S207 ADC?
Пробовал вариант с "запасом" времени, результат отрицательный, похоже что подобная реализация не предусмотрена.
Похоже что нашёл простое решение этой пролемы, завтра проверю и отпишусь.
|
|
|
Сказали "Спасибо" Keldish
|
|
|
08.08.2011, 01:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8S207 ADC?
Сообщение от Keldish
|
похоже что подобная реализация не предусмотрена.
|
Да ему, в общем-то, по-барабану. При однократном преобразовании оттарабанил своё и, пока не произведено новое измерение, данные в ADCDR.
|
|
|
Сказали "Спасибо" omercury
|
|
|
08.08.2011, 12:35
|
|
Частый гость
Регистрация: 22.09.2005
Адрес: Россия Ставрополь
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: STM8S207 ADC?
Как всегда утро вечера мудренее...
Вся проблема была в том что забыл по запарке отключить PB_CR1 all PD pins output push pull, что вносило глюк, при работе с одним каналом глюк не был замечен.
немного изменил код, сейчас всё работает:
ADC_CSR=0x01;
ADC_CR1_ADON=1;
ADC_CSR_EOC=0;
adc_eh=ADC_DRH;
adc_el=ADC_DRL;
while(!ADC_CSR_EOC);
ADC_CSR=0x02;
ADC_CR1_ADON=1;
ADC_CSR_EOC=0;
adc_qh=ADC_DRH;
adc_ql=ADC_DRL;
while(!ADC_CSR_EOC);
Так же для этой задачи можно было использовать Scan Single mode.
|
|
|
Сказали "Спасибо" Keldish
|
|
|
08.08.2011, 12:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8S207 ADC?
Сообщение от Keldish
|
while(!ADC_CSR_EOC);
|
Вот пока флаг не выставится, МК висит в ожидании завершения преобразования АЦП и ничего больше выполнять не может....
|
|
|
Сказали "Спасибо" omercury
|
|
|
08.08.2011, 12:58
|
|
Частый гость
Регистрация: 22.09.2005
Адрес: Россия Ставрополь
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: STM8S207 ADC?
В моём случае это не имеет значения, других "важных" задач у МК всё равно нет.
Для других задач будет другая реализация.
|
|
|
Сказали "Спасибо" Keldish
|
|
|
08.08.2011, 13:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8S207 ADC?
Тогда разбирайтесь с остальными режимами. Чтоб больше не возвращаться.
|
|
|
Сказали "Спасибо" omercury
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Фиксированная опора 0.6В ADC PIC16F887
|
Tujman |
Микроконтроллеры, АЦП, память и т.д |
3 |
09.03.2011 21:47 |
STM8S207 непонятки с портом E
|
Keldish |
Микроконтроллеры, АЦП, память и т.д |
5 |
01.03.2011 14:24 |
Помогите настроить АЦП в Atmega32
|
sergx1300 |
Микроконтроллеры, АЦП, память и т.д |
72 |
09.11.2010 00:28 |
Особенности ADC у ATTiny
|
rpocc |
Микроконтроллеры, АЦП, память и т.д |
14 |
06.07.2010 18:43 |
Шумит и свистит ADC на LPC2148
|
Vas2 |
Микроконтроллеры, АЦП, память и т.д |
5 |
01.03.2009 16:14 |
Часовой пояс GMT +4, время: 18:10.
|
|