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

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

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

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

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

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


 
Опции темы
Непрочитано 07.08.2011, 21:00  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tanq Посмотреть сообщение
Предполагается, что
... если всё сделано правильно, то всё работает как хотелось... и ещё остаются свободные ресурсы...
Изначально вопрос был...
Сообщение от dosikus Посмотреть сообщение
Насколько целесообразно впихивать столько в прерывание ?
А где и что, и как делать... это уже по задаче... по конкретной задаче...
Реклама:
st_1 вне форума  
Непрочитано 07.08.2011, 21:54  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tanq Посмотреть сообщение
При этом более приоритетное прерывание будет начинать обрабатываться СРАЗУ, не дожидаясь окончания менее приоритетного.
Сомневаюсь, что индикация является приоритетной задачей. За исключением, пожалуй, индикации ради индикации.

Код:
ADC1-›SR&=~(1‹‹ADC_SR_EOC);
Мож так попробовать?

Последний раз редактировалось omercury; 07.08.2011 в 22:12.
omercury вне форума  
Непрочитано 08.08.2011, 00:33  
tanq
Гражданин KAZUS.RU
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от omercury Посмотреть сообщение
Сомневаюсь, что индикация является приоритетной задачей. За исключением, пожалуй, индикации ради индикации.
Конкретно индикация - не является. Обсуждение было для более общего случая. Индикация - это, пожалуй, единственное что я выношу за пределы прерываний.

Сообщение от omercury Посмотреть сообщение
Мож так попробовать? ADC1-›SR&=~(1‹‹ADC_SR_EOC);
Операция сдвига - лишняя, а тк идея здравая весьма.
tanq вне форума  
Непрочитано 08.08.2011, 15:32  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Код:
ADC1-›SR&=~(1‹‹ADC_SR_EOC);
Цитата:
Операция сдвига - лишняя, а тк идея здравая весьма.
Всё зависит от того, как описаны биты в includ-ах. Обычно как номер бита. В этом случае сдвиг необходим.
omercury вне форума  
Непрочитано 09.08.2011, 07:55  
^smbd^
Частый гость
 
Регистрация: 18.01.2011
Сообщений: 21
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
^smbd^ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вот как задефайнен, поэтому не вижу зачем сдвиг.
Цитата:
#define ADC_SR_EOC ((uint8_t)0x02)
Поставил
Цитата:
ADC1-›CR1 |= ADC_CR1_SCAN; // Режим сканирования
Заработало- спасибо, tanq.
Однако, в отладчике я вижу , что порядок чтения каналов - как будто хаотичен. То есть написав так:
Цитата:
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-е преобр
Я ожидал увидеть значение ацп сначала 14 , а потом 15 канала и так они должны чередоваться дальше- тогда можно будет сделать обработку значения ацп просто по номеру отсчета. Однако , вопреки всему в отладчике на
Цитата:
ADC=ADC1-›DR;
появилось сначала значение 15 канала , потом опять 15 , потом 14 три раза и далее считывание происходило как будто случайно.

Что я делаю не так?

А еще мне не нравится
Цитата:
ADC1-›CR2 |= ADC_CR2_CONT; // Режим непрерывных преобразований
Ибо в нем постоянно происходит обработка значения АЦП , а не по событию ( или я не понял как это совместить), однако без этого режима не работает. С выключенным сканом на ацп значения 14 канала , а со включенным сканом с 15( почему так я не понял, но думаю , что преобразование как-то происходит за один раз и новое значение затаптывает старое. Или нет?).

Итого:
1) Как понять какой канал сейчас у тебя в DR?
2) Как обрабатывать несколько каналов по событию?

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

Настроил таймер и порт с помощью STM32_Init.c все норм 0 Error(s), 0 Warning(s). Отлаживаю в Кеилле тоже все работает, но когда загружаю на дискавери выдает error while attempting to read 312 bytes from 0x10000000 нажимаю ок, отлажую, но виснет после stm32_Init (); ((((

#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 ();
while (1)
{

}
}
Вложения:
Тип файла: rar STM32_Timer.rar (262.5 Кб, 62 просмотров)
rtyugh вне форума  
Непрочитано 09.08.2011, 13:03  
^smbd^
Частый гость
 
Регистрация: 18.01.2011
Сообщений: 21
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
^smbd^ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

ROM начало и объем прописаны?
^smbd^ вне форума  
Непрочитано 09.08.2011, 14:00  
tanq
Гражданин KAZUS.RU
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от ^smbd^ Посмотреть сообщение
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-е преобр
Я не понял этот код. Во-первых, не прописано общее число каналов в цепочке. Во-вторых, начало последоватеьности каналов лежит в регистре SQR1, а в SQR3 лежит окончание.

Флаг CONT отвечает за то, что АЦП после наступления события будет молотить без остановки.
tanq вне форума  
Непрочитано 09.08.2011, 14:16  
gamklo
Прохожий
 
Регистрация: 03.08.2011
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
gamklo на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Доброго времени суток! появилась проблема, мож кто сталкивался...
Во время обработки прерывания от таймера в переменную сохраняется значение регистра, примерно так:
void TIM3_IRQHandler(void)
{


Flag_Front=1; //флаг для дальнейшей обработки
Time_Front=TIM3-›CCR2; // та переменная о которой идет речь
TIM_ITConfig(TIM3, TIM_IT_CC1, DISABLE);

TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);

}
эта переменная больше нигде не используется, кроме как проверяется на содержимое, примерно так:


if(Time_Front == 0x0D)
{
GPIOB-›BRR = GPIO_BRR_BR10; //зажигаем светодиод

}
НО ЧТО В НЕЙ ТОКА НЕ БЫВАЕТ))) хотя регистр TIM3-›CCR2 всегда равен 0х0D, смотрел по остановке в отладчике.

пытался написать так:
if(TIM3-›CCR2== 0x0D)
{
GPIOB-›BRR = GPIO_BRR_BR10; //зажигаем светодиод

}
опять же ставишь точку остановки на else этого if смотришь регистр он равен 0x0D, спрашивается кокого лешего он защел в else.

ЧТО ЭТО чудеса компиляции ???

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

Сообщение от ^smbd^ Посмотреть сообщение
ROM начало и объем прописаны?
да, виснет 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)
rtyugh вне форума  
 

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

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

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, время: 03:20.


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