fork download
  1. #define CPU_FREQUENCY 1000000
  2. #define PRESCLER 1024
  3. #define DESIRED_DELAY_MS 100
  4.  
  5. // Function to calculate initial timer value
  6. uint8_t calculateInitialTimerValue(uint32_t desiredDelayMs) {
  7. double tickTime = (double)PRESCLER / CPU_FREQUENCY; // Time per tick in seconds
  8. double maxDelay = 256 * tickTime; // Maximum delay before overflow
  9. double initialValue = (maxDelay - (desiredDelayMs / 1000.0)) / tickTime; // Initial value
  10. return (uint8_t)initialValue;
  11. }
  12.  
  13. // Main function
  14. int main() {
  15. uint8_t initialValue = calculateInitialTimerValue(DESIRED_DELAY_MS);
  16. // Load initialValue into the timer register
  17. // Start the timer
  18. // ... (wait for overflow or interrupt)
  19. return 0;
  20. }
Success #stdin #stdout 0.02s 25772KB
stdin
Standard input is empty
stdout
#define CPU_FREQUENCY 1000000
#define PRESCLER 1024
#define DESIRED_DELAY_MS 100

// Function to calculate initial timer value
uint8_t calculateInitialTimerValue(uint32_t desiredDelayMs) {
    double tickTime = (double)PRESCLER / CPU_FREQUENCY; // Time per tick in seconds
    double maxDelay = 256 * tickTime;  // Maximum delay before overflow
    double initialValue = (maxDelay - (desiredDelayMs / 1000.0)) / tickTime; // Initial value
    return (uint8_t)initialValue;
}

// Main function
int main() {
    uint8_t initialValue = calculateInitialTimerValue(DESIRED_DELAY_MS);
    // Load initialValue into the timer register
    // Start the timer
    // ... (wait for overflow or interrupt)
    return 0;
}