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

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

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

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

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

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


 
Опции темы
Непрочитано 09.08.2011, 14:53  
^smbd^
Частый гость
 
Регистрация: 18.01.2011
Сообщений: 21
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
^smbd^ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tanq Посмотреть сообщение
Я не понял этот код. Во-первых, не прописано общее число каналов в цепочке. Во-вторых, начало последоватеьности каналов лежит в регистре SQR1, а в SQR3 лежит окончание.

Флаг CONT отвечает за то, что АЦП после наступления события будет молотить без остановки.
Вот как сейчас выглядит инициализация
Цитата:
void ADC_init(void) // Инициализация ацп
{
RCC-›APB2ENR |= RCC_APB2ENR_ADC1EN; // подаем такты на АЦП
ADC1-›CR2 |= ADC_CR2_ADON; // подаем питание на АЦП

ADC1-›SQR1|= ADC_SQR1_L_0; // Выставили колличество преобразований равным 2
ADC1-›CR1 |= ADC_CR1_SCAN; // Режим сканирования
ADC1-›CR2 &= ~ADC_CR2_EXTSEL; // Обнулили ( Timer CC1 event)
ADC1-›CR2 |= ADC_CR2_EXTSEL_2; // Запуск по TRGO Timer 3

ADC1-›CR2 |= ADC_CR2_EXTTRIG; // включаем запуск от внешнего события

ADC1-›SQR3 |= ADC_SQR3_SQ1_1 | ADC_SQR3_SQ1_2|ADC_SQR3_SQ1_3;//На 14 канал 1-е преобр
ADC1-›SQR3 |=ADC_SQR3_SQ2_0| ADC_SQR3_SQ2_1 | ADC_SQR3_SQ2_2|ADC_SQR3_SQ2_3; //На 15 канал 2-е преобр

ADC1-›CR1 |= ADC_CR1_EOCIE; // вкл. прерывания
NVIC_SetPriority(ADC1_IRQn, 10);

}
При такой инициализации он похоже выкидывает прерывание после окончания преобразования по второму каналу , то есть когда в DA лежит значение из второго канала. Ну или я не знаю почему в этом случае он кажет именно второй канал.

Почему начало последовательности лежит в SQR1?
Вот выдержки из референса:
Миниатюры:
Нажмите на изображение для увеличения
Название: SQR1.JPG
Просмотров: 151
Размер:	54.9 Кб
ID:	24746   Нажмите на изображение для увеличения
Название: SQR3.JPG
Просмотров: 65
Размер:	50.3 Кб
ID:	24747  
Реклама:

Последний раз редактировалось ^smbd^; 09.08.2011 в 14:57.
^smbd^ вне форума  
Непрочитано 09.08.2011, 14:56  
^smbd^
Частый гость
 
Регистрация: 18.01.2011
Сообщений: 21
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
^smbd^ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от rtyugh Посмотреть сообщение
да, виснет STM32_Init.c на

if (__RCC_CR_VAL & RCC_CR_HSEON) { // if HSE enabled
while ((RCC-›CR & RCC_CR_HSERDY) == 0); // Wait for HSERDY = 1 (HSE is ready)
Виснет в отладчике?
В отладчике он у меня тоже иногда на этом месте подвисал , если в пошаговом режиме отлаживать.
^smbd^ вне форума  
Непрочитано 09.08.2011, 15:15  
rtyugh
Частый гость
 
Регистрация: 16.01.2010
Сообщений: 14
Сказал спасибо: 1
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
rtyugh на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от ^smbd^ Посмотреть сообщение
Виснет в отладчике?
В отладчике он у меня тоже иногда на этом месте подвисал , если в пошаговом режиме отлаживать.

да и на дискавери нет никаких признаков (
сделал вот так, все работает:
#include "STM32_Init.h"
#include ‹stm32f10x.h›

int a=0;
void TIM1_UP_IRQHandler (void)
{
if ((TIM1-›SR & 0x0001) != 0)
{
if (a==0)
{
GPIOC-›BSRR=GPIO_BSRR_BS8;
a=1;
}
else
{
GPIOC-›BSRR=GPIO_BSRR_BR8;
a=0;
}

TIM1-›SR &= ~(1‹‹0);
}
}


int main (void)
{
stm32_Init ();
// у визарде отключил клок
RCC-›APB2ENR |= RCC_APB2ENR_TIM1EN;
RCC-›APB2ENR |= RCC_APB2ENR_IOPCEN;

while (1)
{

}
}
как настроить таймер на прерывание по переполнению без визарда
rtyugh вне форума  
Непрочитано 09.08.2011, 15:36  
tanq
Гражданин KAZUS.RU
 
Регистрация: 12.10.2009
Сообщений: 566
Сказал спасибо: 30
Сказали Спасибо 136 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от ^smbd^ Посмотреть сообщение
При такой инициализации он похоже выкидывает прерывание после окончания преобразования по второму каналу
Я ошибся немного, эти регистры SQR в обратном порядке пронумерованы. Откуда берется второй канал? Возможно где-то не так биты проставлены. Вот рабочий пример:

ADC1-›CR2 = ADC_CR2_ADON | ADC_CR2_CONT | ADC_CR2_DMA | ADC_CR2_TSVREFE; //power on, continuous mode with DMA, Vref enable
for (i=0; i‹20; i++) __NOP(); //wait 1 us
ADC1-›CR2 |= ADC_CR2_CAL; //start calibration
while(ADC1-›CR2 & ADC_CR2_CAL); //wait
ADC1-›CR1 = ADC_CR1_SCAN; //continuous mode
ADC1-›SQR1 = 1‹‹20; //2 conversions
ADC1-›SQR2 = 0;
ADC1-›SQR3 = 3‹‹0 | 4‹‹5;
ADC1-›CR2 |= ADC_CR2_ADON; //start ADC
tanq вне форума  
Непрочитано 09.08.2011, 17:48  
-jonns-
Временная регистрация
 
Регистрация: 15.02.2008
Адрес: Болгария
Сообщений: 59
Сказал спасибо: 37
Сказали Спасибо 28 раз(а) в 11 сообщении(ях)
-jonns- на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от rtyugh Посмотреть сообщение
как настроить таймер на прерывание по переполнению без визарда
Тут выкладывал проект мигалки работающий по прерывания Таймер2, на основе стандартной библиотеки SWLIB, надеюсь поможет.
-jonns- вне форума  
Непрочитано 09.08.2011, 17:49  
Oleg Galizin
Частый гость
 
Регистрация: 25.03.2010
Адрес: Voronezh
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
Oleg Galizin на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от rtyugh Посмотреть сообщение
как настроить таймер на прерывание по переполнению без визарда
Где то так
NVIC-›ISER[(TIM3_IRQn ›› 0x05)] =›(u32)0x01 ‹‹ (TIM3_IRQn & (u0x1F);

TIM3-›DIER |= TIM_DIER_UIE;
TIM3-›ARR = 10000;
TIM3-›CR1 |= TIM_CR1_CEN;

Плюс про тактирование таймера вспомнить.
Oleg Galizin вне форума  
Непрочитано 09.08.2011, 18:53  
rtyugh
Частый гость
 
Регистрация: 16.01.2010
Сообщений: 14
Сказал спасибо: 1
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
rtyugh на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от -jonns- Посмотреть сообщение
Тут выкладывал проект мигалки работающий по прерывания Таймер2, на основе стандартной библиотеки SWLIB, надеюсь поможет.
Большое спасибо ) Хороший пример, все четко да еще с комментариями ) Нет еще похожого типа примеров, хотелось разозбраться с АЦП и ШИМ

Последний раз редактировалось rtyugh; 09.08.2011 в 19:38.
rtyugh вне форума  
Непрочитано 09.08.2011, 22:27  
-jonns-
Временная регистрация
 
Регистрация: 15.02.2008
Адрес: Болгария
Сообщений: 59
Сказал спасибо: 37
Сказали Спасибо 28 раз(а) в 11 сообщении(ях)
-jonns- на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от rtyugh Посмотреть сообщение
хотелось разозбраться с АЦП и ШИМ
По встроенного АЦП помоч не могу, пока не осваивал. Пытаюсь подключить внешнее АЦП ADS8361 к STM32-Discovery. Етого АЦП напрямую к SPI МК нельзя подключить, приходится ставить SPI ведомим и генерить ШИМ-ом нужная последовательность для АЦП. Могу выложить код, (пока не закончений).
-jonns- вне форума  
Непрочитано 10.08.2011, 10:26  
Oleg Galizin
Частый гость
 
Регистрация: 25.03.2010
Адрес: Voronezh
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
Oleg Galizin на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от rtyugh Посмотреть сообщение
Нет еще похожого типа примеров, хотелось разозбраться с АЦП и ШИМ
Я выложил проект на радиокоте. Там можно посмотреть
АЦП (регулярные и инжектиравнные каналы, watch dog) и DMA для усреднения результатов, энкодер, простейшая работа с DAC, программирование flash, интерфейс nokia 3310, прерывания от таймеров, real time clock (коррекция хода там не правильна но направление там взято верное), backup domain, программный reset, проект для gcc или uvision. ШИМ там не применяется - есть готовый DAC. Но TIM1 почти настроен на использование ШИМ - просто этот ШИМ используется для запуска ADC. Для честного шим, выход нужно было вывести наружу.
Не уверен что это хороший пример - но работает
http://radiokot.ru/circuit/power/supply/22/01.rar
У ST есть примеры и исходники библиотек для stm32. Когда я заходил в тупик, то смотрел их, выковыривал минимально работающий вариант.

Последний раз редактировалось Oleg Galizin; 10.08.2011 в 10:46.
Oleg Galizin вне форума  
Непрочитано 10.08.2011, 16:08  
dmitriycor
Частый гость
 
Регистрация: 05.03.2011
Сообщений: 36
Сказал спасибо: 7
Сказали Спасибо 19 раз(а) в 19 сообщении(ях)
dmitriycor на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Хотел бы узнать мнение у более опытных людей, как вы считаете STM32F105 RCT6 тактируется от внешнего кварца на 8 МГц почему я максимум на выходном ШИМе TIM с PLL получаю где-то 30,8 МГц и какую максимум частоту я могу посылать и принимать с тайймера в режиме ШИМ какое ваше мнение?
dmitriycor вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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