Програмный шим неработает подскажите как организовать

код в cvavr
итак делаю програмный шим тк с таймерами и апаратным шим работать ещё не научился но все ещё впереди
поглядел примеры в интернете и воспользовавшись логикой написал такой код

  1. void pwm (void)
  2. {
  3. PORTC.0==0;
  4. delay_ms(250);
  5.  
  6. PORTC.0==1;
  7. delay_ms(250);
  8. };

код конечно как всегда не работает и cv авр предупреждает что delay_ms(250); сюда некатит

идею я взял отсюда https://avrlab.com/node/60
управление 4 обмотками к счатью обмоток у меня только 1 = )

фрагмент кода который я хотел использовать ниже
авр студио 5 съедает его на раз а вот свавр ругается
подскажите как организовать временную задержку для портов для СВАВР
может воспользоваться таймером ? я уверен что вариантов не 1 но я к сожалению не знаю ни одного

  1. void delay(int t)
  2. {
  3. for (x=0; x<t ;x++)
  4. nop ();
  5.  
  6. }
  7.  
  8. //Функция длинной задержки
  9. void long_delay(int p)
  10. {
  11. for (j=0; j<p; j++)
  12. {
  13. delay(300);
  14. }
  15. }
  16.  
  17. //Функция поворота ротора вправо
  18. void right (void)
  19. {
  20. PORTD = 0b10001000;//обмотка A
  21. long_delay(m);
  22.  
  23. PORTD = 0b01000100;//обмотка B
  24. long_delay(m);
  25.  
  26. PORTD = 0b00100010;//обмотка C
  27. long_delay(m);
  28.  
  29. PORTD = 0b00010001;//обмотка D
  30. long_delay(m);
  31. }

Добавь строку: #define nop()

Добавь строку:

  1. #define nop() {asm("nop");}//подключаем функция для формирваония задержки

хорошее предложение но CVAVR

хорошее предложение но CVAVR ругаеться
#define nop() {asm("nop");} - это катит
потом я пишу nop(); ругается гад
Error: ppc.c(160): undefined symbol 'asm'

#define nop() __asm__

#define nop() __asm__ __volatile__("nop")
А так?

пробовал команду в авр студио

пробовал команду в авр студио 5 проблем нет
#define nop() __asm__ __volatile__("nop")
СВАВР ругается когда я в коде указываю nop();
пишет такую фигню
Error: V2.c(179): undefined symbol '__asm__'

Значит AVR Studio тебе в

Значит AVR Studio тебе в помощь!

Спасибо я добил долго парился

Спасибо
я добил долго парился и получилось
#define nop #asm ("nop")
код код код
if (a>0){a+b;
nop;}
работает
спасибо за помощь