Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #define F_CPU 16000000
  2.  
  3. #include <avr/io.h>
  4. #include <avr/interrupt.h>
  5. #include <util/delay.h>
  6.  
  7. #include "UI.h"
  8. #include "Car.h"
  9. #include "Uart.h"
  10. #include "Variables.h"
  11.  
  12. // Initier UI globalt, så det kan tilgåes fra ISR
  13. UI ui;
  14.  
  15. // Car defineres uden for main's scope, således den er tilgængelig for ISR også
  16. Car car;
  17.  
  18. // Uart til debug
  19. UART uart(0, 9600, 8, 'N');
  20.  
  21. int main(void)
  22. {
  23. // Som sikkerhed for, at Arduino er klar til at få opsat interrupts mv.
  24. _delay_ms(1000);
  25.  
  26. // Tænd for globale interrupts
  27. sei();
  28.  
  29. // Vis mulige trykknapper ved startup
  30. ui.showStartupMenu();
  31.  
  32. char buttonPressed;
  33. while(1)
  34. {
  35. if (ui.anyButtonPressed())
  36. {
  37. uart.sendString("BUTTON PRESSED\r\n");
  38.  
  39. buttonPressed = ui.getPressedButton();
  40.  
  41. // Menuer i hhv. idleMode og test-/trackMode
  42. if (car.isInIdleMode())
  43. {
  44. uart.sendString("BUTTON PRESSED IN IDLE MODE\r\n");
  45. switch (buttonPressed)
  46. {
  47. case DRIVE_TRACK_BUTTON_NUMBER:
  48. car.driveTrack();
  49. ui.showAbortMenu();
  50. break;
  51.  
  52. case TEST_MODE_BUTTON_NUMBER:
  53. car.testMode();
  54. ui.showAbortMenu();
  55. break;
  56. }
  57. } else if (car.isInTestMode() || car.isInTrackMode())
  58. {
  59. uart.sendString("BUTTON PRESSED IN TEST OR TRACK MODE\r\n");
  60. switch (buttonPressed) {
  61. case ABORT_BUTTON_NUMBER:
  62. car.abort();
  63. ui.showStartupMenu();
  64. break;
  65. }
  66. }
  67.  
  68. // Så der kun kan registreres ét tryk pr. sek.
  69. _delay_ms(1000);
  70. }
  71. }
  72. }
  73.  
  74. // Ekstern interrupt request 2 - Sensor Left. PD, ben 2 (og SW2 på Shield)
  75. ISR(INT2_vect) {
  76. uart.sendString("Reflection left detected.\r\n");
  77. car.reflectionDetected();
  78. }
  79.  
  80. // Ekstern interrupt request 3 - Sensor Right. PD, ben 3 (og SW3 på Shield)
  81. ISR(INT3_vect) {
  82. uart.sendString("Reflection right detected.\r\n");
  83. car.reflectionDetected();
  84. }
  85.  
  86. // Tænder for bilens sensorer igen
  87. ISR(TIMER1_COMPA_vect) {
  88. uart.sendString("Timer1 interrupt.\r\n");
  89. car.setReadyForNewReflection();
  90. }
  91.  
  92. // Accellerer / Deaccelerer
  93. ISR(TIMER5_COMPA_vect) {
  94. car.accelerationHandler();
  95. }
  96.  
  97. ISR(TIMER3_OVF_vect) {
  98. uart.sendString("TIMER 3 OVERFLOW \r\n");
  99.  
  100. if (car.isInTestMode())
  101. {
  102. uart.sendString(" - TESTMODE: ALTER TEST STATE \r\n");
  103. car.updateTestModeState();
  104.  
  105. } else if (car.isInTrackMode())
  106. {
  107. uart.sendString(" - TRACKMODE: TURN OFF BRAKELIGHTS \r\n");
  108.  
  109. car.turnOffBrakeLights();
  110. car.disableBrakeLightTimer();
  111. }
  112. }
  113.  
  114. ISR(TIMER0_OVF_vect) {
  115. car.headlightWinkHandler();
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement