STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32 новичку в ARM что к чему

Сообщение amv2000 »

stemplar писал(а):Почему при потенциометре на опорное напряжение показания стабильные от нуля и до потолка, а ..

Ну писал же ChipKiller "привели бы код и схему", ну как Вы не поймете трудно судить почему такая каша, исходя только из Ваших слов.
Причин много от банальной сопли, до ошибки в монтаже или коде. А то у нас как в анекдоте "Мужик приносит в телеателье телевизор:
- Лежу я на диване, смотрю, значит, в ухе гвоздиком ковыряюсь. Вдруг что-то
щелкнуло и звук пропал, почините пожалуйста."
Без обид только.
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

TripleKill писал(а):Как я понял, Вы сетевое напряжение просто через делитель подаёте на вход АЦП. Я прав?


У него еще диод с конденсатором ... :)))
Реклама
stemplar
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вт ноя 27, 2012 17:50:35

Re: STM32 новичку в ARM что к чему

Сообщение stemplar »

TripleKill писал(а):stemplar, а Вы уверены, что кроме SWD ничего больше не отгорело?
Как я понял, Вы сетевое напряжение просто через делитель подаёте на вход АЦП. Я прав?
Если прав, то имейте в виду: сетевое напряжение двуполярное, а АЦП у камня работает только от 0 до 3,3 В.
Сетевое же при общей земле уйдёт ниже 0, что не есть хорошо.
Если выпрямляете, то дело другое, но я б перепроверил)
Ну и это самое - схему-то покажете может с кодом?)


Уверен. Я и swd полез проверять только из-за отказа в прошивке. Где накосячил - так и не выяснил, но факт PA13 (SWDIO) нога на земле.
Сетевое конечно через диод, а потом делитель. Со схемой сложно, её нет, она в голове. Набросать в осязаемый вид надо время, которое будет через пару дней, по приезду из командировки, ну или в обед может по старинке на бумажке нацарапаю,отсканю...
Программа тоже дома..навскидку по памяти, без дефайнов и функции задержки примерно так:

Код: Выделить всё

 

int main(void)
{
  GPIO_InitTypeDef PORT;
  RCC_APB2PeriphClockCmd((RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA) , ENABLE);
  PORT.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
  PORT.GPIO_Mode = GPIO_Mode_Out_PP;
  PORT.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init( GPIOC , &PORT);
  RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE);
  ADC1->CR2 |= ADC_CR2_CAL;
  while (!(ADC1->CR2 & ADC_CR2_CAL));
  ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0);
  ADC1->CR2 |= ADC_CR2_JEXTSEL;
  ADC1->CR2 |= ADC_CR2_JEXTTRIG;
  ADC1->CR2 |= ADC_CR2_CONT;
  ADC1->CR1 |= ADC_CR1_JAUTO;
  ADC1->JSQR |= (1<<15);
  ADC1->CR2 |= ADC_CR2_ADON;
  ADC1->CR2 |= ADC_CR2_JSWSTART;
  while (!(ADC1->SR & ADC_SR_JEOC));

  int volt,smb,adc_res;
unsigned char digit[] =
{
  0x01000101, //0
  0x01000101, //1
  0x01000101, //2
  0x01000101, //3 
  0x01000101, //4
  0x01000101, //5
  0x01000101, //6
  0x01000101, //7 
  0x01000101, //8
  0x01000101  //9   
};
  while(1)
  {
    adc_res=ADC1->JDR1;
    volt=260*adc_res/4095; //Коэфф. перерасчета под максимальное измеряемое напряжение
   
    smb=(volt-volt/10*10); //единицы
    GPIO_Write(GPIOC,digit[smb]);
    GPIO_SetBits(GPIOC,GPIO_Pin_7);
    delay();
    GPIO_ResetBits(GPIOC,GPIO_Pin_7);
    delay();
   
    smb=(volt/10-volt/100*100);//десятки
    GPIO_Write(GPIOC,digit[smb]);
    GPIO_SetBits(GPIOC,GPIO_Pin_8);
    delay();
    GPIO_ResetBits(GPIOC,GPIO_Pin_8);
    delay();

    smb=volt/100;
    GPIO_Write(GPIOC,digit[smb]);//сотни
    GPIO_SetBits(GPIOC,GPIO_Pin_9);
    delay();
    GPIO_ResetBits(GPIOC,GPIO_Pin_9);
    delay();
  }
}



Массив digit - знакогенератор, тут просто накидал одинаковые числа, в оригинале естественно все согласно выводимых чисел. Ноги 7,8,9 - катоды.Вроде в коде ничего не пропустил

Изображение
Ах да..по питанию еще дроссель 150мкГн стоит. Блокировочные по всем ногам питания.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Кто то здесь красиво поет о толерантности к новичкам .
А что для новичков какие то особые правила нужны, отличные от общепринятых?
Для новичков не писаны ТБ и читать основы схемотехники уже не обязательно?

Вы эту свою хрень так и подключали напрямую к сети? Без разделительного трансформатора и c STLink ?
Если так , то вы батенька полный идиот...
Реклама
Эиком - электронные компоненты и радиодетали
stemplar
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вт ноя 27, 2012 17:50:35

Re: STM32 новичку в ARM что к чему

Сообщение stemplar »

dosikus писал(а):Кто то здесь красиво поет о толерантности к новичкам .
А что для новичков какие то особые правила нужны, отличные от общепринятых?
Для новичков не писаны ТБ и читать основы схемотехники уже не обязательно?

Вы эту свою хрень так и подключали напрямую к сети? Без разделительного трансформатора и c STLink ?
Если так , то вы батенька полный идиот...

И провода сетевые без изоляции - так адреналинистей.А, еще экран по плате на фазу, ну чтоб не скучно.
Реклама
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Серийный самоубийца??? :))



Нарушение правил форума п. 2.4

aen
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: STM32 новичку в ARM что к чему

Сообщение ibiza11 »

теперь все стало на свои места, и я не удивлен, что SWD отвалился))) в следующий раз купите нормальный источник питания... а лучше вообще от батарейки запитайте.
Ставим плюсы: )
stemplar
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вт ноя 27, 2012 17:50:35

Re: STM32 новичку в ARM что к чему

Сообщение stemplar »

HHIMERA писал(а):Серийный самоубийца??? :))

В 6 утра на работу вставать тяжело..а тут хоп пальцем - и заряд бодрости. А если еще и с собой взять, то можно весь день быть в тонусе
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: STM32 новичку в ARM что к чему

Сообщение ibiza11 »

автор более не в состоянии обсуждать конструктивно. вижу только сарказмичные высказывания, вызванные, по всей видимости, ударом тока, который, как известно имеет пролонгированное во времени действие. (видимо не слабо ёб*уло :) )
Ставим плюсы: )
stemplar
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вт ноя 27, 2012 17:50:35

Re: STM32 новичку в ARM что к чему

Сообщение stemplar »

ibiza11 писал(а):теперь все стало на свои места, и я не удивлен, что SWD отвалился))) в следующий раз купите нормальный источник питания... а лучше вообще от батарейки запитайте.


Схем с гасящим конденсатором масса, и для потребителей с малым током они вне конкуренции. Что до swd - шилось все при питании от отладочной платы, в сети только рабочий режим. Основной критерий - габариты и даже маломощный импульсник пролетает. Многие промышленные образцы по такому принципу и питают. Единственное, что я бы добавил защитный стабилитрон по PA1 на случай превышения расчетных 260В. Интегральный стабилизатор на 3.3В при входных 12 замечательно избавляет от неприятных моментов. В конце-концов из-за фильтров входных нынче все компы половиной сетевого на корпусе, но работают и не чихают. Если господа не в курсе или изволят шутить дальше - таки в туман, еда тролям закончилась, на голодный паёк.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

stemplar писал(а):Схем с гасящим конденсатором масса, и для потребителей с малым током они вне конкуренции.

Заметьте - вам никто не сказал , что питальник гавно ...

stemplar писал(а):Что до swd - шилось все при питании от отладочной платы, в сети только рабочий режим.

Эти сказки можете рассказывать девочкам при прогулках .
SWD вот так взял и сам отвалился...
stemplar
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вт ноя 27, 2012 17:50:35

Re: STM32 новичку в ARM что к чему

Сообщение stemplar »

dosikus писал(а):Эти сказки можете рассказывать девочкам при прогулках .
SWD вот так взял и сам отвалился...


Заметьте, я не сказал что он взял и сам отвалился, я сказал что причин не нашел.
Если у меня не острый приступ возрастного склероза, то шился при питании от отладочной платы - кабель swd 10 см, чтоб питать от 220 надо было бы под столом сидеть. Скорее склоняюсь где-то к сопле по питанию, которую убрал не обратив внимания куда висела..Но меня интересует не причина мертвого порта. Впрочем, с таким обилием "юмористов" меня уже ничего не интересует, все что хотел я выяснил.Кроме даташита по АЦП надо было покурить принципы построения цифровых измерительных приборов. Спасибо menzoda
Последний раз редактировалось stemplar Вт май 28, 2013 14:28:26, всего редактировалось 1 раз.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

stemplar писал(а):Заметьте, я не сказал что он взял и сам отвалился, я сказал что причин не нашел.


А здесь и гадать не надо . Если бы он висел в воздухе с ним бы ничего не произошло .
И даже прошивать в это время не надо было , достаточно было того, что STLINK подключен во время запитки от сети .
Ну хорошо основы радиоэлектроники вам не известны и вы этим можете продолжать гордится .
Но то что PE у вас в розетках болтается в воздухе , это как пить дать...

stemplar писал(а):Но меня интересует не причина мертвого порта. Впрочем, с таким обилием "юмористов" меня уже ничего не интересует, все что хотел я выяснил.

А это собственно уже и не важно . Важней другое, вы со своим "кулибинством" уже попали в кунсткамеру...
Последний раз редактировалось dosikus Вт май 28, 2013 17:11:12, всего редактировалось 1 раз.
stemplar
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вт ноя 27, 2012 17:50:35

Re: STM32 новичку в ARM что к чему

Сообщение stemplar »

dosikus писал(а):А это собственно уже и не важно . Важней другое, вы со своим "кулибинством" уже попали в кунсткамеру...

Меня посчитали!©

Пойду повешусь\утоплюсь от горя
Пишите еще, Ваше мнение очень важно для нас.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Зачем сразу вешаться... продолжайте играть в русскую электрорулетку!!! :)))
Если у вас ещё не пропало желание петросянить, то рассмешите нас... огласите номиналы делителя на PA1...
И это... подстроечник желательно ставить последовательно с резистором и диодом, а не на землю... При потере контакта можете получить повышенное напряжение по входу МК, что не есть гуд...
"Я не даю готовых решений, я заставляю думать!"(С)
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: STM32 новичку в ARM что к чему

Сообщение TripleKill »

stemplar, позвольте поинтересоваться, а куда идёт выпрямленное напряжение с моста? Может, от него плата запитана, а не от VDDx?
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение urry »

по коду - вы пытались уйти от использования прерываний по таймерам - так вот, в данном случае это не получится. При измерении переменного напряжения частотой 50 Герц нужно за эти 20 мс произвести 64 или 128 измерений (по вкусу), каждое измерение возвести в квадрат, затем сумму поделить на 64/128 и взять корень из результата.
Да, и пользуйте ДМА, чтобы забрать результат из АЦП в память :)

Те скажем, юзаем 2 таймер и входная частота на нем 24 мегагерца

Код: Выделить всё

#define TMR2_IN ((u32)24000000)
#define TMR2_IN_PS ((u32)24000000)
#define TMR2_OUT ((u32)(50*128)) // частота измерений ацп
#define CCR1_Val (u16)((u32)TMR2_IN_PS/(u32)TMR2_OUT)



NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

   /* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 65535;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
   /* Prescaler configuration */
TIM_PrescalerConfig(TIM2, 0, TIM_PSCReloadMode_Immediate);
   // входная 24, на таймер - 24 , делим на 1
   /* Output Compare Timing Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);
   /* TIM IT enable */
TIM_ITConfig(TIM2, TIM_IT_CC1 );
   /* TIM2 enable counter */
TIM_Cmd(TIM2, ENABLE);
// и прерывание
void TIM2_IRQHandler(void)
{
   if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
   {
        TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
       capture = TIM_GetCapture1(TIM2);
   TIM_SetCompare1(TIM2, capture + CCR1_Val);
}
}
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: STM32 новичку в ARM что к чему

Сообщение SergeBS »

"Маленькие" приколы по схеме:
1. В нарисованном виде - неработоспособна (как включен мостик - все прохлопали :) )
2. Измеряется вовсе не положительная полуволна сети, а нечто с ней связанное - сравните потенциал 0 у питания и измерения.
3. Про какие маленькие токи идет речь - не понимаю. По схеме - больше 20 мА. Смотрим на питание индикатора - там транзистор в катоде.
4. Подстроечник БЕЗ постоянного резистора в измерительной цепи - значит цепь даже ПРИМЕРНО не рассчитывалась.

Так что с одной стороны urry изложил способ измерения действующего (эффективного) напряжения, а с другой - этот способ в данной "конструкции" не сработает. Аж по 2-м причинам.

dosikus писал(а):Важней другое, вы со своим "кулибинством" уже попали в кунсткамеру...

Заслуженно.
Человек - это звучит гордо, а обезьяна - объективно...
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение urry »

ну схему можно переделать вот так (продолжим практику рисования в паинте ) :)
Вложения
1.jpg
(37.2 КБ) 508 скачиваний
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Re: STM32 новичку в ARM что к чему

Сообщение SergeBS »

Ну, если хочется за халявщика все сделать... Откровенно объявляющего - "ничего не знаю и знать не хочу - ХОББИ у меня такое!".
И вдобавок - оффтоп. Поскольку это схемотехника, а не STM32.
Человек - это звучит гордо, а обезьяна - объективно...
Ответить

Вернуться в «ARM»