Nет ШИМ

gal
Offline
Зарегистрирован: 08.06.2018
Здравствуйте.
Когда включаю строки в loop ШИМ исчезает, как исправить ?
 
//http://www.stm32duino.com/viewtopic.php?f=19&t=3037&start=10
//uint8_t = 256;

//volatile uint8_t indx;
volatile int i = 0; //initializing a integer for incrementing and decrementing duty ratio.
void Tim2_ISR(void)
{
  Timer2.setCompare(TIMER_CH4, i);
}


HardwareTimer pwmtimer2(2);

void setup() {
  pinMode(PB3, INPUT_PULLDOWN);
  pinMode(PB5, INPUT_PULLDOWN);
  pinMode(PA3, PWM);

  pwmtimer2.pause();
  pwmtimer2.setPrescaleFactor(100);     
  pwmtimer2.setOverflow(256);          
  pwmtimer2.setCompare(TIMER_CH4, 128);  
  pwmtimer2.refresh();

  pwmtimer2.resume();
}

void loop()

{
/*
  analogWrite(PA3, i);  // analogWrite values from 0 to 255

  if (digitalRead(PB3) == HIGH)

  {

    if (i < 255)

    {

      i++;//if pin PB3 is pressed and the duty ratio value is less than 255

      delay(30);

    }

  }

  if (digitalRead(PB5) == HIGH)

  {

    if (i > 0)

    {

      i--;// if pin PB5 is pressed and the duty ratio value is greater than 0

      delay(30);

    }

  }
*/
}

 

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Он не исчезает. У него скважность равна i, а i равен нулю.
А зачем в сетапе его включать ?

gal
Offline
Зарегистрирован: 08.06.2018

Чтобы управлять скважностью ШИМ 

gal
Offline
Зарегистрирован: 08.06.2018

Включил всё,  при нажатии кнопок импульсов дальше нет.

 
//uint8_t = 256;

//volatile uint8_t indx;
volatile int i = 0; //initializing a integer for incrementing and decrementing duty ratio.
void Tim2_ISR(void)
{
  Timer2.setCompare(TIMER_CH4, i);
}


HardwareTimer pwmtimer2(2);

void setup() {
  pinMode(PB3, INPUT_PULLDOWN);
  pinMode(PB5, INPUT_PULLDOWN);
  pinMode(PA3, PWM);

  pwmtimer2.pause();
  pwmtimer2.setPrescaleFactor(100);     
  pwmtimer2.setOverflow(256);          
  pwmtimer2.setCompare(TIMER_CH4, 128);  
  pwmtimer2.refresh();
Timer2.attachInterrupt(0, Tim2_ISR);
  pwmtimer2.resume();
}

void loop()

{

  analogWrite(PA3, i);  // analogWrite values from 0 to 255

  if (digitalRead(PB3) == HIGH)

  {

    if (i < 255)

    {

      i++;//if pin PB3 is pressed and the duty ratio value is less than 255

      delay(30);

    }

  }

  if (digitalRead(PB5) == HIGH)

  {

    if (i > 0)

    {

      i--;// if pin PB5 is pressed and the duty ratio value is greater than 0

      delay(30);

    }

  }

}

 

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Запусти монитор, вывели туда i.
Посмотри , меняется или нет.

gal
Offline
Зарегистрирован: 08.06.2018

Монитор с ST link не работает

Kakmyc
Offline
Зарегистрирован: 15.01.2018

А зачем ты ее через stlink программируешь ?
Залей загрузчик и пользуйтесь через USB

gal
Offline
Зарегистрирован: 08.06.2018

может что то не так в строках; 1-8 и 23 ?

gal
Offline
Зарегистрирован: 08.06.2018

Kakmyc пишет:
А зачем ты ее через stlink программируешь ? Залей загрузчик и пользуйтесь через USB

потому что у меня ест а кабеля для USB нет

gal
Offline
Зарегистрирован: 08.06.2018

В начале сквозность должна быть 50%, строчка 21 сообщение #3 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

gal пишет:

Kakmyc пишет:
А зачем ты ее через stlink программируешь ? Залей загрузчик и пользуйтесь через USB

потому что у меня ест а кабеля для USB нет

Бегом за кабелем USB.  Без него не отладка, а @ботня

gal
Offline
Зарегистрирован: 08.06.2018

Бегу

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

АААААААААА, у тебя же STM, да? 

gal
Offline
Зарегистрирован: 08.06.2018

Да

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну значить, форум не тот. 

gal
Offline
Зарегистрирован: 08.06.2018

Если на осциллографе ничего нет , на мониторе тоже ничего не будет

nik182
Offline
Зарегистрирован: 04.05.2015

Timer & analogWrite и в принципе не совместимы.

b707
Offline
Зарегистрирован: 26.05.2017

gal пишет:

потому что у меня ест а кабеля для USB нет

как это? ты в пустыне или на северном полюсе? подойдет USB-кабель от почти любого современного мобильника. В любом доме их 2-3 штуки лишних всегда валяется...

И еще - в st-linke же есть RX TX

Судя по твоим темам на форуме, ты явно скрещиваешь ужа с ежом. Нафига новичку коды, писанные  под Уно переделывать для СТМ32?

Потренируйся сначала на обычных ардуинах.

gal
Offline
Зарегистрирован: 08.06.2018

Проблема не в кабеле а в программе, уже одна кнопка работает и СТ линк хватает.

gal
Offline
Зарегистрирован: 08.06.2018

Kakmyc пишет:
Он не исчезает. У него скважность равна i, а i равен нулю. А зачем в сетапе его включать ?

Ты был прав, но не сказал какое  "0"
Вот оно - строчка #5
Спасибо !!!
Все работает как надо .