⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d_output.c

📁 乐高机器人的源码,开发平台是IAR_for_AVR.
💻 C
字号:
//
// Programmer      
//
// Date init       14.12.2004
//
// Reviser         $Author:: Dktochpe                                        $
//
// Revision date   $Date:: 17-08-05 8:20                                     $
//
// Filename        $Workfile:: d_output.c                                    $
//
// Version         $Revision:: 13                                            $
//
// Archive         $Archive:: /LMS2006/Sys01/Ioctrl/Firmware/Source/d_output $
//
// Platform        C
//

#include  "stdconst.h"
#include  "m_sched.h"
#include  "d_output.h"
#include  "d_output.r"

static    SBYTE Dutycycle[NOS_OF_AVR_OUTPUTS];
static    UBYTE Frequency;
static    UBYTE LastOutputMode;


void      dOutputInit(void)
{
  UBYTE   Tmp;

  OUTPUTInit;
  for (Tmp = 0;Tmp < NOS_OF_AVR_OUTPUTS;Tmp++)
  {
    Dutycycle[Tmp] = 0;
    OUTPUTWrite(Tmp,Dutycycle[Tmp]);
  }
  LastOutputMode = 0x00;
}


void      dOutputUpdate(UBYTE Brake)
{
  UBYTE   Tmp;
  UBYTE   TmpMask;

  Tmp = IoToAvr.PwmFreq;
  if (Frequency != Tmp)
  {
    if ((Tmp >= 1) && (Tmp <= 32))
    {
      Frequency = Tmp;
      OUTPUTFreq(Frequency);
      for (Tmp = 0;Tmp < NOS_OF_AVR_OUTPUTS;Tmp++)
      {
        Dutycycle[Tmp] = 0;
      }
    }
  }

  TmpMask = IoToAvr.OutputMode;

  for (Tmp = 0;Tmp < NOS_OF_AVR_OUTPUTS;Tmp++)
  {
    if (Brake == TRUE)
    {
      TmpMask               |= (0x01 << Tmp);
      IoToAvr.PwmValue[Tmp]  = 0;
    }
    if ((Dutycycle[Tmp] != IoToAvr.PwmValue[Tmp]) || ((LastOutputMode ^ TmpMask) & (0x01 << Tmp)))
    {
      OUTPUTWriteBrakeMask(TmpMask);
      Dutycycle[Tmp] = IoToAvr.PwmValue[Tmp];
      OUTPUTWrite(Tmp,Dutycycle[Tmp]);
    }
  }
  LastOutputMode = TmpMask;
  OUTPUTUpdate;
}


void      dOutputExit(void)
{
  OUTPUTExit;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -