Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. volatile boolean executed=1; // mygtuko paspaudimo veliavele
  2. String str = "";
  3. String par="";
  4. String val="";
  5. boolean str_complete = false;
  6. int temp = 0;
  7. int tempMasive[4];
  8. int total=0;
  9. int measuresDone=0;
  10. unsigned long loopInterval = 2000;
  11. unsigned long loopTimer = 5;
  12. void setup()
  13. {
  14. pinMode(btnPin, INPUT_PULLUP);
  15. pinMode(14, OUTPUT);
  16. attachInterrupt(PUSH2, blink, RISING); // ivykio registravimas!
  17. // P1DIR |= BIT6 | BIT0; // set GREEN led and RED led as output
  18. // P1OUT &= ~(BIT6 | BIT0); // turn off led if its on
  19. // Temp sensor formula Vtemp = 0.00355*(TEMPc)+0.986
  20. // ADC value for voltage Nadc = 1023*((Vin-(Vr-))/((Vr+)-(Vr-)))
  21. // Isvesta formule: TEMPc = ((27069L * Nadc) - 18169625L) >> 16;
  22. //--- START OF ADC10 SETUP -------------------------------------//
  23. // ENC must be 0 to be able to set parameters, 1 to be able to start conversion
  24. ADC10CTL0 = 0; // clear all configurations
  25. ADC10CTL0 |= ADC10IE; // Enable temp conversion done interrupt
  26. ADC10CTL0 |= SREF_1; // Select reference
  27. ADC10CTL0 |= ADC10SHT_3; // sample 64 values before conversion
  28. ADC10CTL0 |= MSC; // multiple sample and conversion support
  29. ADC10CTL0 |= ADC10ON; // turn of converter
  30. ADC10CTL0 |= REFON; // Enable internal reference
  31. 7
  32. ADC10CTL1 = INCH_10; // select 10th chanel for temp sensor
  33. ADC10CTL1 |= ADC10DIV_3; // Set clock divider
  34. ADC10CTL1 |= CONSEQ_2; // set ADC to repeated temp sensor sampling and conversion
  35. //--- END OF ADC10 SETUP ---------------------------------------//
  36. //--- START OF Timer_A SETUP -----------------------------------//
  37. TACCR0 = 0x00FF;
  38. TACCTL0 = CCIE;
  39. TACTL |= TACLR | TASSEL_2 | ID_3 | MC_1;
  40. //--- END OF Timer_A SETUP -------------------------------------//
  41. Serial.begin(9600);
  42. }
  43. void loop()
  44. {
  45. char c = 0x00;
  46. if( Serial.available() > 0 ) {
  47. c = (char)Serial.read();
  48. if( c == ';' )
  49. str_complete = true;// jei eilutes pabaigos simbolis, reikia nustatyti parametrus
  50. else str+=c;// jei ne eilutes pabaiga tai prideti simboli i str;
  51. }
  52. digitalWrite(14, btnState);
  53. if( (millis() - loopTimer > loopInterval) && executed )
  54. {
  55. if( str_complete == true )
  56. {
  57. par = str.substring(0, str.indexOf(":")); // get parameter name
  58. val = str.substring(str.indexOf(":")+1); // get value
  59. if( par == "LOOP_INTV" )
  60. {
  61. loopInterval = val.toInt();
  62. }
  63. 8
  64. str_complete = false;
  65. str="";
  66. }
  67. ADC10CTL0 |= ~ENC;
  68. LPM0; // turn off cpu and wait then it will be on
  69. Serial.println(temp);
  70. loopTimer = millis();
  71. }
  72. }
  73. __attribute__((interrupt(TIMER0_A0_VECTOR)))
  74. void Timer_A (void)
  75. {
  76. TACCTL0 &= ~CCIE; // Turn off timer events
  77. ADC10CTL0 |= ENC + ADC10SC; // start the conversion
  78. }
  79. __attribute__((interrupt(ADC10_VECTOR)))
  80. void ADC_interrupt (void)
  81. {
  82. temp = ((27069L * ADC10MEM) - 18169625L) >> 16;
  83. LPM0_EXIT; // turn on CPU
  84. }
  85. void blink()
  86. {
  87. btnState = !btnState;
  88. executed = !executed;
  89. btnFlag = HIGH;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement