예제 #1
0
void main(){
    unsigned int out = 69;
    char len = get_num_len(out);
    char str[len] = ""; // must 
    char zz;


    for(zz = 0; zz < len; zz = zz + 1){
        str[zz] = (48+nthdigit(out,len-1-zz));
    }

    //strcat(str,". Zahl"); // TESTING SOON

   while(1){
   
   }
}
예제 #2
0
void displayMulti(uint32_t num,char special){
  //Pin 0 is actually 10^5 place
  for(int i=0;i<5;i++){
    if(i==0 && special){
      if(special == 'H'){
        displayNum(16);
      } else if(special == 'P'){
        displayNum(17);
      }
    } else {
      displayNum(nthdigit(num,4-i));
    }
    PORTD |= (1<<i);
    _delay_ms(1);
    PORTD &= ~(1<<i);
    displayClear();
  }
}
예제 #3
0
void displayMultiF(float numF){
  //Pin 0 is actually 10^5 place
  //Round to 2 decimals
  uint32_t num = (uint32_t)(numF*100+.5);
  unsigned int decimal = 1;
  if(num >= 100000){
    num = num/100;
    decimal = 0;
  }
  for(int i=0;i<5;i++){
    displayNum(nthdigit(num,4-i));
    if(i==2 && decimal == 1){
      DDRC |= (1<<7);
    }
    PORTD |= (1<<i);
    _delay_ms(1);
    PORTD &= ~(1<<i);
    displayClear();
  }

}
void UpdateBluetoothValues(void) {
    // set the date and time

    while (!RTCC_TimeGet(&Time)) {
    };

    DateTimeResponse[9] = (unsigned char) nthdigit(Time.tm_year, 1);
    DateTimeResponse[10] = (unsigned char) nthdigit(Time.tm_year, 0);

    DateTimeResponse[11] = (unsigned char) nthdigit(Time.tm_mon, 1);
    DateTimeResponse[12] = (unsigned char) nthdigit(Time.tm_mon, 0);

    DateTimeResponse[13] = (unsigned char) nthdigit(Time.tm_mday, 1);
    DateTimeResponse[14] = (unsigned char) nthdigit(Time.tm_mday, 0);

    DateTimeResponse[15] = (unsigned char) nthdigit(Time.tm_hour, 1);
    DateTimeResponse[16] = (unsigned char) nthdigit(Time.tm_hour, 0);

    DateTimeResponse[17] = (unsigned char) nthdigit(Time.tm_min, 1);
    DateTimeResponse[18] = (unsigned char) nthdigit(Time.tm_min, 0);

    DateTimeResponse[19] = (unsigned char) nthdigit(Time.tm_sec, 1);
    DateTimeResponse[20] = (unsigned char) nthdigit(Time.tm_sec, 0);


    //LastDate[x] = DateTimeResponse[x + 9];


    UART1_WriteString((unsigned char *) DateTimeResponse);

    __delay_ms(1);

    // get the current power usage from the ADC

    if (CurrentPowerUsage > 0) {
        tempDouble = CurrentPowerUsage * 1000;
        tempLong = (long) tempDouble;
    } else {
        tempLong = 0;
    }

    PowerUsageResponse[9] = nthdigit(tempLong, 7);
    PowerUsageResponse[10] = nthdigit(tempLong, 6);
    PowerUsageResponse[11] = nthdigit(tempLong, 5);
    PowerUsageResponse[12] = nthdigit(tempLong, 4);
    PowerUsageResponse[13] = nthdigit(tempLong, 3);
    PowerUsageResponse[14] = nthdigit(tempLong, 2);
    PowerUsageResponse[15] = nthdigit(tempLong, 1);
    PowerUsageResponse[16] = nthdigit(tempLong, 0);

    UART1_WriteString(PowerUsageResponse);

    __delay_ms(1);

    // check to see if the charger is currently active
    if (Power_Enable_GetValue() == 1) {
        UART1_WriteString((unsigned char *) "SHW,001C,01");
    } else {
        UART1_WriteString((unsigned char *) "SHW,001C,00");
    }

    __delay_ms(1);

    // Return the current power down voltage

    if (PowerDownVoltage > 0) {
        tempDouble = PowerDownVoltage * 1000;
        tempLong = (long) tempDouble;
    } else {
        tempLong = 0;
    }

    PowerDownVoltageResponse[9] = nthdigit(tempLong, 7);
    PowerDownVoltageResponse[10] = nthdigit(tempLong, 6);
    PowerDownVoltageResponse[11] = nthdigit(tempLong, 5);
    PowerDownVoltageResponse[12] = nthdigit(tempLong, 4);
    PowerDownVoltageResponse[13] = nthdigit(tempLong, 3);
    PowerDownVoltageResponse[14] = nthdigit(tempLong, 2);
    PowerDownVoltageResponse[15] = nthdigit(tempLong, 1);
    PowerDownVoltageResponse[16] = nthdigit(tempLong, 0);

    UART1_WriteString(PowerDownVoltageResponse);

    __delay_ms(1);

    // Power Up Voltage - float - 8 bytes
    // Return the current power up voltage

    if (PowerDownVoltage > 0) {
        tempDouble = PowerUpVoltage * 1000;
        tempLong = (long) tempDouble;

    } else {
        tempLong = 0;
    }

    PowerUpVoltageResponse[9] = nthdigit(tempLong, 7);
    PowerUpVoltageResponse[10] = nthdigit(tempLong, 6);
    PowerUpVoltageResponse[11] = nthdigit(tempLong, 5);
    PowerUpVoltageResponse[12] = nthdigit(tempLong, 4);
    PowerUpVoltageResponse[13] = nthdigit(tempLong, 3);
    PowerUpVoltageResponse[14] = nthdigit(tempLong, 2);
    PowerUpVoltageResponse[15] = nthdigit(tempLong, 1);
    PowerUpVoltageResponse[16] = nthdigit(tempLong, 0);

    UART1_WriteString(PowerUpVoltageResponse);

    __delay_ms(1);

    // Charging Device VID/PID  - uint32 - 4 bytes
    // return the VID and PID of the connected or last USB device

    VIDPIDResponse[9] = nthdigit(VID, 4);
    VIDPIDResponse[10] = nthdigit(VID, 3);
    VIDPIDResponse[11] = nthdigit(VID, 2);
    VIDPIDResponse[12] = nthdigit(VID, 1);
    VIDPIDResponse[13] = nthdigit(VID, 0);

    VIDPIDResponse[14] = nthdigit(PID, 4);
    VIDPIDResponse[15] = nthdigit(PID, 3);
    VIDPIDResponse[16] = nthdigit(PID, 2);
    VIDPIDResponse[17] = nthdigit(PID, 1);
    VIDPIDResponse[18] = nthdigit(PID, 0);

    UART1_WriteString((unsigned char *) VIDPIDResponse);

    __delay_ms(1);
    // Charging Device Start Time YYMMDDHHmmSS - 6 bytes
    // return the date and time of the charging start time


    StartTimeResponse[9] = (unsigned char) nthdigit(startTime.tm_year, 1);
    StartTimeResponse[10] = (unsigned char) nthdigit(startTime.tm_year, 0);

    StartTimeResponse[11] = (unsigned char) nthdigit(startTime.tm_mon, 1);
    StartTimeResponse[12] = (unsigned char) nthdigit(startTime.tm_mon, 0);

    StartTimeResponse[13] = (unsigned char) nthdigit(startTime.tm_mday, 1);
    StartTimeResponse[14] = (unsigned char) nthdigit(startTime.tm_mday, 0);

    StartTimeResponse[15] = (unsigned char) nthdigit(startTime.tm_hour, 1);
    StartTimeResponse[16] = (unsigned char) nthdigit(startTime.tm_hour, 0);

    StartTimeResponse[17] = (unsigned char) nthdigit(startTime.tm_min, 1);
    StartTimeResponse[18] = (unsigned char) nthdigit(startTime.tm_min, 0);

    StartTimeResponse[19] = (unsigned char) nthdigit(startTime.tm_sec, 1);
    StartTimeResponse[20] = (unsigned char) nthdigit(startTime.tm_sec, 0);

    UART1_WriteString((unsigned char *) StartTimeResponse);

    __delay_ms(1);
    // Charging Device Total Charge (Wh) - float - 7 bytes
    // return the total charge power for the current or last connected device


    if (TotalCharge > 0) {
        tempDouble = TotalCharge * 1000;
        tempLong = (long) tempDouble;
    } else {
        tempLong = 0;
    }
    TotalChargeResponse[9] = nthdigit(tempLong, 7);
    TotalChargeResponse[10] = nthdigit(tempLong, 6);
    TotalChargeResponse[11] = nthdigit(tempLong, 5);
    TotalChargeResponse[12] = nthdigit(tempLong, 4);
    TotalChargeResponse[13] = nthdigit(tempLong, 3);
    TotalChargeResponse[14] = nthdigit(tempLong, 2);
    TotalChargeResponse[15] = nthdigit(tempLong, 1);
    TotalChargeResponse[16] = nthdigit(tempLong, 0);

    UART1_WriteString(TotalChargeResponse);

    __delay_ms(1);
    // Charging Device End Time YYMMDDHHmmSS - 6 bytes
    // return the date and time of the charging end time
    // return now if the device is still charging


    EndTimeResponse[9] = (unsigned char) nthdigit(endTime.tm_year, 1);
    EndTimeResponse[10] = (unsigned char) nthdigit(endTime.tm_year, 0);

    EndTimeResponse[11] = (unsigned char) nthdigit(endTime.tm_mon, 1);
    EndTimeResponse[12] = (unsigned char) nthdigit(endTime.tm_mon, 0);

    EndTimeResponse[13] = (unsigned char) nthdigit(endTime.tm_mday, 1);
    EndTimeResponse[14] = (unsigned char) nthdigit(endTime.tm_mday, 0);

    EndTimeResponse[15] = (unsigned char) nthdigit(endTime.tm_hour, 1);
    EndTimeResponse[16] = (unsigned char) nthdigit(endTime.tm_hour, 0);

    EndTimeResponse[17] = (unsigned char) nthdigit(endTime.tm_min, 1);
    EndTimeResponse[18] = (unsigned char) nthdigit(endTime.tm_min, 0);

    EndTimeResponse[19] = (unsigned char) nthdigit(endTime.tm_sec, 1);
    EndTimeResponse[20] = (unsigned char) nthdigit(endTime.tm_sec, 0);

    UART1_WriteString((unsigned char *) EndTimeResponse);

    firstRun = false;
}