Naze32 clone with Frysky receiver
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

main.c 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * main() method
  3. */
  4. #include <avr/interrupt.h>
  5. #include <avr/wdt.h>
  6. #include "spi.h"
  7. #include "timer.h"
  8. #include "cppm.h"
  9. #include "rx.h"
  10. #include "main.h"
  11. void watchdogBoot(void) __attribute__((naked)) __attribute__((section(".init3")));
  12. void watchdogBoot(void) {
  13. MCUSR = 0;
  14. wdt_disable();
  15. }
  16. #ifdef DEBUG
  17. void uartMenu(void) {
  18. if (!serialHasChar(0)) {
  19. return;
  20. }
  21. uint8_t c = serialGet(0);
  22. time_t time = timerGet();
  23. switch (c) {
  24. case 't': case 'T':
  25. debugWrite("Uptime: ");
  26. serialWriteUnsigned64(0, time);
  27. debugWrite("ms / ");
  28. serialWriteUnsigned64(0, time / 1000);
  29. debugWrite("s\n");
  30. break;
  31. case 'q': case 'Q':
  32. debugWrite("Resetting...\n\n");
  33. wdt_enable(WDTO_15MS);
  34. for (;;) { }
  35. break;
  36. default:
  37. debugWrite("Unknown command: '");
  38. serialWrite(0, c);
  39. debugWrite("'\n");
  40. case 'h': case 'H': case '?':
  41. debugWrite("Available commands:\n");
  42. debugWrite(" h - Help\n");
  43. debugWrite(" t - Time\n");
  44. debugWrite(" q - Reset\n");
  45. break;
  46. }
  47. }
  48. #endif
  49. void main(void) {
  50. cppmInit();
  51. timerInit();
  52. #ifdef DEBUG
  53. serialInit(0, BAUD(38400, F_CPU));
  54. #endif
  55. sei(); // Enable interrupts (required for timer)
  56. //wdt_enable(WDTO_250MS); // Trigger Watchdog after 250ms
  57. wdt_enable(WDTO_2S); // Trigger Watchdog after 2s
  58. debugWrite("RX reset.\n");
  59. spiInit();
  60. rxInit();
  61. debugWrite("RX ready!\n");
  62. for(;;) {
  63. wdt_reset();
  64. rxReceivePacket();
  65. #ifdef DEBUG
  66. uartMenu();
  67. #endif
  68. }
  69. }