Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. /// Interrupt handlers for TC interrupts. Toggles the state of LEDs
  3. //------------------------------------------------------------------------------
  4. char token = 0;
  5. void TC0_IrqHandler(void) {
  6. volatile unsigned int dummy;
  7. dummy = AT91C_BASE_TC0->TC_SR;
  8. if(token == 1) {
  9. PIO_Clear(&leds[0]);
  10. PIO_Set(&leds[1]);
  11. token = 0;
  12. }
  13. else {
  14. PIO_Set(&leds[0]);
  15. PIO_Clear(&leds[1]);
  16. token = 1;
  17. }
  18. }
  19. //------------------------------------------------------------------------------
  20. /// Configure Timer Counter 0 to generate an interrupt every 250ms.
  21. //------------------------------------------------------------------------------
  22. void ConfigureTc(void) {
  23. unsigned int div;
  24. unsigned int tcclks;
  25. AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_TC0; // Enable peripheral clock
  26. TC_FindMckDivisor(1, BOARD_MCK, &div, &tcclks); // Configure TC for a 4Hz frequency and trigger on RC compare
  27. TC_Configure(AT91C_BASE_TC0, tcclks | AT91C_TC_CPCTRG);
  28. AT91C_BASE_TC0->TC_RC = (BOARD_MCK / div) / 1; // timerFreq / desiredFreq
  29. IRQ_ConfigureIT(AT91C_ID_TC0, 0, TC0_IrqHandler); // Configure and enable interrupt on RC compare
  30. AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;
  31. IRQ_EnableIT(AT91C_ID_TC0);
  32. printf(" -- timer has started nr");
  33. TC_Start(AT91C_BASE_TC0);
  34. }
  35.  
  36. while(1) {
  37. // action
  38.  
  39. while(1) {
  40. printf("hello");
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement