

/*
102.11.11 first Version
102.11.12 ]ϥ Hall sensor ۰TӷAҥH²Ƭ۷h code
102.11.21 wi by sine-wave (jqyɭP Motor N)

102.12.27 1.w
          2.ʹqyp (ۦPt)
          3.{w bugA|yop
          4.tɡAY̵M 32 step ANLkF찪t (|)
          5.ADC Jt/ (|)
          
102.12.30 1.|̾tAMwX step @ SBLDCmain.c
          2.̧ǼW[t -> 2600 rpm ( ADC ճt\)
          3.tYվ KBI pattern ǡAN|tιqy (AS \F_h|b 2600 rpmF[cݤj½s)
          
103.01.01 1.y[ BUFFER ѨM (NextTBuffer)
          2.T1ISR 勵 priority AAd{Ho
          
          
*/



#include "REG_FA206.H"
#include "typedef.h"
#include "config.h"
#include "motor_parameter.h"
#include <math.h>

U8 Status;                  // Motor Status
U8 ROcnt = 0;              
U8 SLevel;                  // step + n (n=SLevel)
U8 Duty;
U16 NextTBufer;
bit NextTOWF = 0;

extern bit CommutateSignal,SpeedUp;
extern WTYPE commutateTx6;

//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
int main (void)
{ 
    U16 PrevcommutateTx2 = 0xFFFF;
    //
    Port_Init ();	        // Port1 (PCA), P0 (debug bus), P2.0~2 (KIB:commutate) ....
    disable_PCA ();	        // Disable PCA
    
    Status = IDLE;
    
    Timer1_Init ();         // motor start / commuate 
    PCA_Init ();            // PCA initial
    PLL32MHz ();            // PLL to 32MHz
        
    //
    SLevel = 1;
    Duty = 20;
    initial_SineWavePWM (Duty);
    ADC_init ();
    PID_Init ();
    EA = 1;

    // ----------------------------------------------------------------
    Rotating ();                            // start motor (rotat -> run)
       
    while (1) {
        
        // like ADC input (RPM)
        if (SpeedUp) {
            SpeedUp = 0;
            ADC_SpeedSample ();
        }

        // calculate NextT @ 15K Hz
        if (CommutateSignal) {
            CommutateSignal = 0;
            
            // calculate PWM pulse number            
            if (commutateTx6.W > T0CNT_RPM32x6) {// 32x6 (305 rpm)
                Nc = RPM_S32x6;                
            } else if (commutateTx6.W > T0CNT_RPM32x5) {// 32x5 (366 rpm)
                Nc = RPM_S32x5;                
            } else if (commutateTx6.W > T0CNT_RPM32x3) {// 32x4 (458 rpm)
            
            } else if (commutateTx6.W > T0CNT_RPM32x3) { // 32x3 (610 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM32x2) { // 32x2 (916 rpm)

            } else if (commutateTx6.W > T0CNT_RPM32) { // 32 (1831 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM31) { // 31 (1890 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM30) { // 30 (1953 rpm)
        
            } else if (commutateTx6.W > T0CNT_RPM29) { // 29 (2020 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM28) { // 28 (2093 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM27) { // 27 (2170 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM26) { // 26 (2254 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM25) { // 25 (2344 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM24) { // 24 (2441 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM23) { // 23 (2548 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM22) { // 22 (2663 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM21) { // 21 (2790 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM20) { // 20 (2930 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM19) { // 19 (3084 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM18) { // 18 (3255 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM17) { // 17 (3447 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM16) { // 16 (3662 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM15) {  // 15 (3906 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM14) {  // 14 (4185 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM13) {  // 13 (4507 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM12) {  // 12 (4883 rpm)

            } else if (commutateTx6.W > T0CNT_RPM11) {  // 11 (5327 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM10) {  // 10 (5859 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM9) {  // 9 (6510 rpm)
                
            } else if (commutateTx6.W > T0CNT_RPM8) {  // 8 (7324 rpm)      

            }
            
        }
        
        // 
        
        
        
        
    }
}

