реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Подружить ADC12 и TimerB
aag
сообщение Jul 18 2007, 03:23
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 8-04-06
Из: Новосибирск
Пользователь №: 15 939



считывание значения заменил такой строкой:
Код
adc_value = ADC12MEM0;

(изначально я думал, что ADC12MEMx 8-битные, а раз ацп 12 разрядов, то соответственно первые 8 лежат в ADC12MEM(x), а оставшиеся 4 - в ADC12MEM(x+1) )

установки такие:
Код
ADC12CTL0 = ADC12ON | MSC | ENC | REF2_5V;
ADC12CTL1 = SHP;
P6SEL = 0x01;
ADC12IE = 0x01;


функция ADC12CTL0 |= ADC12SC; срабатывает по нажжатию кнопки.

вроде все должно нормально работать, только вот значения ADC12MEM0 не зависят от приложенного к пину напряжения почему-то. значение всегда равно 0x04D8
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jul 18 2007, 05:29
Сообщение #17


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(aag @ Jul 18 2007, 07:23) *
считывание значения заменил такой строкой:
Код
adc_value = ADC12MEM0;

(изначально я думал, что ADC12MEMx 8-битные, а раз ацп 12 разрядов, то соответственно первые 8 лежат в ADC12MEM(x), а оставшиеся 4 - в ADC12MEM(x+1) )

установки такие:
Код
ADC12CTL0 = ADC12ON | MSC | ENC | REF2_5V;
ADC12CTL1 = SHP;
P6SEL = 0x01;
ADC12IE = 0x01;


функция ADC12CTL0 |= ADC12SC; срабатывает по нажжатию кнопки.

вроде все должно нормально работать, только вот значения ADC12MEM0 не зависят от приложенного к пину напряжения почему-то. значение всегда равно 0x04D8


По моему вы невнимательно читаете документацию. Доки от ТИ заслуживают уважения к себе biggrin.gif a14.gif

1. Я не вижу где вы настраиваете непосредственно канал (регистр ADC12MCTL0).

2. Читайте в самом верху на регистры ADC12CTL1, ADC12CTL0, ADC12MCTL0 : Modifiable only when ENC = 0
Это значит, что
Код
ADC12CTL0 |= ENC;
вы должны сделать в самом конце. Вообще полезно после инициализации всех регистров проверить, а приинитились ли они как надо.

3. Прерывания от таимера и от АЦП происходят??? Точку останова поставте в обработчиках.

4. Если прерывания есть, в дебуггере сбросте значение ADC12MEM0 в 0 и посмотрите на следующем прерывании оно 0x04D8? Если нет, то это значит, что значение не меняется, а не неправильное.
Go to the top of the page
 
+Quote Post
aag
сообщение Jul 18 2007, 06:21
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 8-04-06
Из: Новосибирск
Пользователь №: 15 939



Цитата
2. Читайте в самом верху на регистры ADC12CTL1, ADC12CTL0, ADC12MCTL0 : Modifiable only when ENC = 0
Это значит, что


Блин..

после того как сделал так:
Код
ADC12CTL0 = ADC12ON | MSC | REF2_5V;
ADC12CTL1 = SHP;
P6SEL = 0x01;
ADC12IE = 0x01;

ADC12CTL0 |= ENC;

все заработало. теперь при изменении напряжения, ADC12MEM0 принимает значения от 0x00 до 0x0F39
smile.gif
больше не хочет принимать, видимо недостаточно напряжения.

Вобщем, проблема решена. Спасибо огромное

Сообщение отредактировал aag - Jul 18 2007, 06:26
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jul 18 2007, 07:10
Сообщение #19


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(aag @ Jul 18 2007, 10:21) *
теперь при изменении напряжения, ADC12MEM0 принимает значения от 0x00 до 0x0F39
smile.gif
больше не хочет принимать, видимо недостаточно напряжения.



Настройте канал!!! Регистр ADC12MCTL0, по умолчанию там может быть черт знает что.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 09:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016