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

 
 
> 1 апреля толи от keil толи от F042
RadiatoR
сообщение Apr 1 2016, 08:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Имеется F042k6u6
К нему подключеан аналоговый мультиплексор HEF4051B. Он мультиплексирует аналоговые сигналы с 6 (на схеме есть 7 - не юзаю) ножек на 1 в ADC контроллера. (Схема старая, поэтому грязь и ужас, не обращайте внимания)


Частота смены 333Hz, что более чем норм.
Код следующий:
Опрос ADC 333Hz просто в таймере:
Код
if(ADC1->ISR&ADC_ISR_ADRDY)ADC_start;


Вот обработчик прерывания:
Код
void ADC1_IRQHandler(void)
   {
       static byte ADCChan=0;
       //static byte last;
       if(ADC1->ISR&ADC_ISR_EOC)
       {
           ADCVal[ADCChan++]=ADC1->DR;
           if(ADCChan>5)
           {
               ADCChan=0;
               ADC_ready=true;
           }
           GPIOB->BRR=7;
           GPIOB->BSRR=ADCChan;
       }
   }


Вот осциллограмма:


Зеленый - аналоговый сигнал
Желтый - бит 1
Голубой - бит 2
Фиолетовый - бит 3

Смотрите - я при каждом прерырвании инкрементирую канал и выставляю его, но у меня выставляются следующие значения канала:
0
1
0
1
2
3
4
5
Почему я так и не смог понять. Проблема решилась очень странно - я добавил в функцию переменную last (я хотел через нее было тестить, но обнаружил что с ней работает норм). В итоге если она закомменчена - не работает, а если присутствует, то работает. Хотя сам компилятор ее оптимизирует и хекс остается одинаковым - проверен побайтно через STlink utility.

Как это понимать? Первоапрельский розыгрыш?

ps. причем last должен обязательно быть static, иначе не работает

Сообщение отредактировал ЯadiatoR - Apr 1 2016, 08:33
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ЯadiatoR   1 апреля толи от keil толи от F042   Apr 1 2016, 08:13
- - Obam   "налоговый мультиплексор" да 1 апр. дейс...   Apr 1 2016, 08:20
- - ЯadiatoR   действительно :D   Apr 1 2016, 08:22
- - Obam   А всякий раз по входу в ADC1_IRQHandler static by...   Apr 1 2016, 08:35
|- - scifi   Цитата(Obam @ Apr 1 2016, 11:35) А всякий...   Apr 1 2016, 08:44
|- - Obam   Цитата(scifi @ Apr 1 2016, 12:44) А вас с...   Apr 1 2016, 08:52
|- - ЯadiatoR   Цитата(scifi @ Apr 1 2016, 11:44) А вас с...   Apr 1 2016, 09:01
|- - scifi   Цитата(ЯadiatoR @ Apr 1 2016, 12:01) Но в...   Apr 1 2016, 09:18
- - adnega   Цитата(ЯadiatoR @ Apr 1 2016, 11:13) Как ...   Apr 1 2016, 09:13
- - ЯadiatoR   Что-то идет непонятное Кодddiv_reciptbl 0x08003...   Apr 1 2016, 09:32
|- - adnega   Цитата(ЯadiatoR @ Apr 1 2016, 12:32) Что-...   Apr 1 2016, 09:52
||- - ЯadiatoR   Цитата(adnega @ Apr 1 2016, 12:52) Замени...   Apr 1 2016, 10:24
||- - adnega   Цитата(ЯadiatoR @ Apr 1 2016, 13:24) И по...   Apr 1 2016, 11:20
|- - scifi   Цитата(ЯadiatoR @ Apr 1 2016, 12:32) Попр...   Apr 1 2016, 10:07
- - ЯadiatoR   так то да, но в mapах я не силен - да и я ничего о...   Apr 1 2016, 11:25
|- - adnega   Цитата(ЯadiatoR @ Apr 1 2016, 14:25) так ...   Apr 1 2016, 11:35
- - ЯadiatoR   map не дал скинуть за пределы выходил массив Angl...   Apr 1 2016, 11:50
|- - adnega   Цитата(ЯadiatoR @ Apr 1 2016, 14:50) за п...   Apr 1 2016, 12:10
- - ЯadiatoR   ага, с предыдущего похожего проекта остался код, я...   Apr 1 2016, 12:37


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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 22:27
Рейтинг@Mail.ru


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