Перейти к содержанию
    

Они аналоговые по сбросу, я их не трогал на выбранном порту.

Изменено пользователем whale

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, whale сказал:

Они аналоговые по сбросу, я их не трогал на выбранном порту.

Тактирование порту задали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Порты работают отлично

Может с выборкой одиночного канала что то напутал в установках, там куча режимов у ацп есть

Изменено пользователем whale

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, whale сказал:

Может с выборкой одиночного канала что то напутал в установках, там куча режимов у ацп есть

Я конкретно с этим МК не работал, но работал с другими похожими, серией F0x1. В принципе, бегло глянув RM, там всё прозрачно. Нужно просто строчкую за строчкой прочитать ещё раз документ с описанием АЦП. Затем последовательно проинициализировать все регистры. Должно заработать, куда же без этого. Ну и посмотрите Errata, там что-то про АЦП и таймеры есть. Возможно и другая информация из этого документа окажется вам полезной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

46 минут назад, whale сказал:

STM32G070KB

пошагово тут сложно, во всяком случае затыка нигде нет.

Надо в отладчике тупо пошагово пройти весь модуль ацп, задаваясь на каждом шаге вопросом "Правильно-ли меняется бит?"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, whale сказал:

ADC1->CHSELR |= ADC_CHSELR_CHSEL8; // выбор канала ADC8 (PB0) в последовательности

Что-то я не нашел где alternate function для PB0 вывода выбирается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, HardEgor said:

Что-то я не нашел где alternate function для PB0 вывода выбирается.

LQFP32 корпус PB0 15 нога

1 hour ago, HardEgor said:

 

 задаваясь на каждом шаге вопросом "Правильно-ли меняется бит?"

Как это сделать в отладчике IAR ?

В ерате ничего интересного про ацп нет

 

lqfp32.png

Изменено пользователем whale

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможна тут ошибка проверить смогу завтра,

ADEN можно установить только при ADC->CR=0 а проверка флага EOCAL написана неправильно, завершение калибровки при EOCAL=1 

 // калибровка
    ADC->CCR |= ADC_CCR_VREFEN;                 // вкл внутренний ИОН для калибровки
    ADC1->CR |= ADC_CR_ADCAL;                   // вкл калибровку
    while((ADC1->ISR & ADC_ISR_EOCAL));         //пока ADCAL=1 ждем 
    // управление 
    ADC1->CR |= ADC_CR_ADEN;                    // включить adc
Spoiler

 

 

Изменено пользователем whale

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в отладчике тупо пошагово пройти весь модуль ацп, задаваясь на каждом шаге вопросом "Правильно-ли меняется бит?"


Скажу больше - в отладчике (у ТСа IAR) тупо, не пиша ни строчки, руками можно в окошке периферии (т.е. АЦП) можно включить, выставить все биты и смотреть как работает АЦП ;-) при остановленном ядре.

Ещё раз: GPIO настроили на аналоговую функцию? - Они аналоговые по сбросу, я их не трогал на выбранном порту.


Где они аналоговые по сбросу? - Натуральный 0-й бит порта B
Ж8-Ъ

Модераторам: ну святое тему в "Начинающим"-раздел! Там хоть поглумиться не зазорно будет ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Obam сказал:

Где они аналоговые по сбросу?

Здесь автор не ошибся, они действительно аналоговые по сбросу

image.thumb.png.b1a4d4acb140f7601c34e11596165dd5.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я и предполагал жопа была в калибровке которая почему то не проходит

 // калибровка
    ADC1->CR=0;
    ADC->CCR |= ADC_CCR_VREFEN;                                 // вкл внутренний ИОН для калибровки
    ADC1->CR |= ADC_CR_ADCAL;                                   // вкл калибровку
    while((ADC1->CR & ADC_CR_ADCAL) == ADC_CR_ADCAL);           //пока ADCAL=1 ждем 

кстати если я ничего не путаю проц работает сейчас на частоте 128 мгц ;)

( по мануалу макс 64 мгц )

Изменено пользователем whale

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цитата

The ADC has a specific internal voltage regulator which must be enabled and stable before using the ADC.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ещё может оказаться, что АЦП требуется отдельное тактирование. Кажись, в STM32L1xx именно так: проц и шины (а значит, и регистры АЦП) -- отдельно, а собственно АЦП -- отдельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, adnega said:

 

Не помогло, виснет на проверке

 

 // калибровка
    ADC1->CR=0;
    ADC1->CR |= ADC_CR_ADVREGEN;              // ADC Voltage Regulator Enable
    ADC->CCR |= ADC_CCR_VREFEN;               // вкл внутренний ИОН для калибровки
    
    ADC1->CR |= ADC_CR_ADCAL;                 // вкл калибровку
    while((ADC1->CR & ADC_CR_ADCAL) == ADC_CR_ADCAL);           //пока ADCAL=1 ждем 
   

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...