1. Си / Говнокод #20511

    −47

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    #define RETURN 100
    
    void interrupt[INT0_vect] INT0_interrupt(void)
    {
        char i,temp;
    
        /*Filter it to makes sure it was not only noise*/
        for (temp= 0;temp< 5;)          //Five samples noise filter
        	{
    	if(!(PIND & (1<<PD2)))
              temp++;
            else
              temp = RETURN;          
            }                           
            if(temp != RETURN)
              {
                
              /*Place your zero cross action here*/
    
              ...
    
              }
            
    }

    Application note code for showing how to implement a zero cross detector on AVR only with one external interrupt pin.

    Запостил: govnokod3r, 10 Августа 2016

    Комментарии (15) RSS

    • void interrupt[INT0_vect] INT0_interrupt(void)

      Что это?
      Ответить
      • Магический синтаксис какого-то говноконпелятора под AVR. Говорит о том, что эта функция должна срабатывать при прерывании INT0.
        Ответить
        • Кстати, недавно в каком-то ГК была дискуссия о невозможности написания обработчика прерывания на сях.

          Из Watcom C:
          The __interrupt keyword may be used with function definitions for functions that handle computer interrupts. All registers are saved before the function begins execution and restored prior to returning from the interrupt. The machine language return instruction for the function is changed to iret (interrupt return). Functions written using __interrupt are suitable for attaching to the interrupt vector using the library function _dos_setvect. Open Watcom C16 and C32 provide the predefined macros interrupt and _interrupt for convenience and compatibility with the Microsoft C compiler. They may be used in place of __interrupt.

          Надо покопаться. Может быть, и в других компиляторах есть похожая директива.
          Ответить
        • хехехе
          у борланда была тоже такая кейворда
          Ответить
          • Слово-то такое у многих есть, но индекс в квадратных скобках, пожалуй, только у AVR.
            Ответить
      • Это ебавший ослов говноед думал что в сях можно вернуть массив, да еще и указать его размер в сигнатуре
        Ответить
    • * g o a t s e x * g o a t s e x * g o a t s e x *
      g                                               g
      o /     \             \            /    \       o
      a|       |             \          |      |      a
      t|       `.             |         |       :     t
      s`        |             |        \|       |     s
      e \       | /       /  \\\   --__ \\       :    e
      x  \      \/   _--~~          ~--__| \     |    x
      *   \      \_-~                    ~-_\    |    *
      g    \_     \        _.--------.______\|   |    g
      o      \     \______// _ ___ _ (_(__>  \   |    o
      a       \   .  C ___)  ______ (_(____>  |  /    a
      t       /\ |   C ____)/      \ (_____>  |_/     t
      s      / /\|   C_____)       |  (___>   /  \    s
      e     |   (   _C_____)\______/  // _/ /     \   e
      x     |    \  |__   \\_________// (__/       |  x
      *    | \    \____)   `----   --'             |  *
      g    |  \_          ___\       /_          _/ | g
      o   |              /    |     |  \            | o
      a   |             |    /       \  \           | a
      t   |          / /    |         |  \           |t
      s   |         / /      \__/\___/    |          |s
      e  |         / /        |    |       |         |e
      x  |          |         |    |       |         |x
      * g o a t s e x * g o a t s e x * g o a t s e x *
      Ответить
    • Админ, забань спамеров
      Ответить
    • msvc:
      __declspec(naked)
      и
      иногда
      __asm
      Ответить
    • Какой багор )))
      Ответить

    Добавить комментарий