DALI TX BACKWARDS

Dependencies:   mbed

main.cpp

Committer:
wikarapg
Date:
2021-01-16
Revision:
0:83a3126987ad

File content as of revision 0:83a3126987ad:

// Backward FRAME Code to debug

#include "mbed.h"

#define BROADCAST   0x00
#define OFF         0x01
#define ON          0x02

#define TE 834/2 //Halftime of The Transmitted BIT

DigitalOut myled(LED1);
DigitalOut dali(D7);
DigitalOut dali_tx(D8);


int man_packets[20];
int address;
int command;
int packet_fin;

//How To initialise the interrupt

void dali_packet(int address, int command){
    int i;
    int ones;
    //Start Bits 1
    man_packets[0] = 1;
    man_packets[1] = 0;
    man_packets[2] = 1;
    //Stop Bits
    
    for(i=0; i<8; i++){
        //For Address Conversion
        ones = address >> 7 - i;   //Shift the bit to the left   
        ones &= 0x01;
        if(ones == 1){
            man_packets[(i*2)+3] = 0;
            man_packets[(i*2)+4] = 1;
        } else {
            man_packets[(i*2)+3] = 1;
            man_packets[(i*2)+4] = 0;
        }
        
    man_packets[19] = 1;           //This is only a workaround solution
    }
}


int main() {
    while(1) {
        int i;
        dali = 1; 
        
        int value;
        printf("Enter an integer: ");
        scanf("%d", &value); 

        dali_packet(value, value+20);   //Process packets
        
        for(i=0; i<20; i++){
            dali =  man_packets[i];
            dali_tx = man_packets[i];
            wait_us(416);
            }
        dali = 1;
        dali_tx = 1;
        packet_fin = 1;   
        }
}