/*
  SHIFT

  Routines, die Madwizard aansturen als een schuifregister

  Pros 2007
*/




void shift2MW(unsigned char commandunsigned int data)
{
    unsigned char cnt;
    unsigned int DELINT;
    double tmp;

    tmp = DDS_frequency / 1000.0;                               // 6250000 -> 6250
    tmp = 2000000.0 / tmp;                                      // 2000000 / 6250 = 320
    if (tmp > 65535.0) {
        tmp = 65535.0;
    } else if (tmp < 400.0) {
        tmp = 400.0;
    }
    DEL = (unsigned inttmp;
    INT = DEL / 400;


    for (cnt = 0cnt < 4cnt++) {                             // 4 command-bits
        if ((command & 0x08) == 0x08) {
            sbi(SHIFTPORTMW_DATA);                            // Data-bit = 1
        } else {
            cbi(SHIFTPORTMW_DATA);                            // Data-bit = 0
        }
        delay_us(INT);
        cbi(SHIFTPORTMW_INT0);                                // INT0 van Madwizard laag maken
        delay_us(INT);
        sbi(SHIFTPORTMW_INT0);                                // INT0 van Madwizard terug hoog maken
        delay_us(DEL);
        command = command << 1;
    }

    for (cnt = 0cnt < 16cnt++) {                            // 16 data-bits
        if ((data & 0x8000) == 0x8000) {
            sbi(SHIFTPORTMW_DATA);                            // Data-bit = 1
        } else {
            cbi(SHIFTPORTMW_DATA);                            // Data-bit = 0
        }
        delay_us(INT);
        cbi(SHIFTPORTMW_INT0);                                // INT0 van Madwizard laag maken
        delay_us(INT);
        sbi(SHIFTPORTMW_INT0);                                // INT0 van Madwizard terug hoog maken
        delay_us(DEL);
        data = data << 1;
    }

    cbi(SHIFTPORTMW_INT1);                                    // INT1 van Madwizard laag maken
    delay_us(INT);;
    sbi(SHIFTPORTMW_INT1);                                    // INT1 van Madwizard terug hoog maken
    delay_us(DEL * 2);
}