Rev 1872 | Rev 1952 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1872 | Rev 1887 | ||
---|---|---|---|
Line 500... | Line 500... | ||
500 | 500 | ||
Line 501... | Line 501... | ||
501 | gyro_calibrate(); |
501 | gyro_calibrate(); |
502 | 502 | ||
503 | // determine gyro bias by averaging (requires that the copter does not rotate around any axis!) |
503 | // determine gyro bias by averaging (requires that the copter does not rotate around any axis!) |
504 | for (i = 0; i < GYRO_OFFSET_CYCLES; i++) { |
504 | for (i = 0; i < GYRO_OFFSET_CYCLES; i++) { |
505 | Delay_ms_Mess(20); |
505 | delay_ms_Mess(20); |
506 | for (axis = PITCH; axis <= YAW; axis++) { |
506 | for (axis = PITCH; axis <= YAW; axis++) { |
507 | deltaOffsets[axis] += rawGyroSum[axis]; |
507 | deltaOffsets[axis] += rawGyroSum[axis]; |
Line 522... | Line 522... | ||
522 | 522 | ||
523 | // Rough estimate. Hmm no nothing happens at calibration anyway. |
523 | // Rough estimate. Hmm no nothing happens at calibration anyway. |
524 | // airPressureSum = simpleAirPressure * (AIRPRESSURE_SUMMATION_FACTOR/2); |
524 | // airPressureSum = simpleAirPressure * (AIRPRESSURE_SUMMATION_FACTOR/2); |
Line 525... | Line 525... | ||
525 | // pressureMeasurementCount = 0; |
525 | // pressureMeasurementCount = 0; |
526 | 526 | ||
Line 527... | Line 527... | ||
527 | Delay_ms_Mess(100); |
527 | delay_ms_Mess(100); |
528 | } |
528 | } |
529 | 529 | ||
Line 540... | Line 540... | ||
540 | int32_t deltaOffset[3] = { 0, 0, 0 }; |
540 | int32_t deltaOffset[3] = { 0, 0, 0 }; |
541 | int16_t filteredDelta; |
541 | int16_t filteredDelta; |
542 | // int16_t pressureDiff, savedRawAirPressure; |
542 | // int16_t pressureDiff, savedRawAirPressure; |
Line 543... | Line 543... | ||
543 | 543 | ||
544 | for (i = 0; i < ACC_OFFSET_CYCLES; i++) { |
544 | for (i = 0; i < ACC_OFFSET_CYCLES; i++) { |
545 | Delay_ms_Mess(10); |
545 | delay_ms_Mess(10); |
546 | for (axis = PITCH; axis <= YAW; axis++) { |
546 | for (axis = PITCH; axis <= YAW; axis++) { |
547 | deltaOffset[axis] += acc[axis]; |
547 | deltaOffset[axis] += acc[axis]; |
548 | } |
548 | } |
Line 563... | Line 563... | ||
563 | // changing offsets. |
563 | // changing offsets. |
564 | accNoisePeak[PITCH] = accNoisePeak[ROLL] = 0; |
564 | accNoisePeak[PITCH] = accNoisePeak[ROLL] = 0; |
Line 565... | Line 565... | ||
565 | 565 | ||
566 | // Setting offset values has an influence in the analog.c ISR |
566 | // Setting offset values has an influence in the analog.c ISR |
567 | // Therefore run measurement for 100ms to achive stable readings |
567 | // Therefore run measurement for 100ms to achive stable readings |
Line 568... | Line 568... | ||
568 | Delay_ms_Mess(100); |
568 | delay_ms_Mess(100); |
569 | 569 | ||
570 | // Set the feedback so that air pressure ends up in the middle of the range. |
570 | // Set the feedback so that air pressure ends up in the middle of the range. |
571 | // (raw pressure high --> OCR0A also high...) |
571 | // (raw pressure high --> OCR0A also high...) |
572 | /* |
572 | /* |
Line 573... | Line 573... | ||
573 | OCR0A += ((rawAirPressure - 1024) / rangewidth) - 1; |
573 | OCR0A += ((rawAirPressure - 1024) / rangewidth) - 1; |
574 | Delay_ms_Mess(1000); |
574 | delay_ms_Mess(1000); |
Line 575... | Line 575... | ||
575 | 575 | ||
576 | pressureDiff = 0; |
576 | pressureDiff = 0; |
577 | // DebugOut.Analog[16] = rawAirPressure; |
577 | // DebugOut.Analog[16] = rawAirPressure; |
578 | 578 | ||
579 | #define PRESSURE_CAL_CYCLE_COUNT 5 |
579 | #define PRESSURE_CAL_CYCLE_COUNT 5 |
580 | for (i=0; i<PRESSURE_CAL_CYCLE_COUNT; i++) { |
580 | for (i=0; i<PRESSURE_CAL_CYCLE_COUNT; i++) { |
581 | savedRawAirPressure = rawAirPressure; |
581 | savedRawAirPressure = rawAirPressure; |
582 | OCR0A+=2; |
582 | OCR0A+=2; |
583 | Delay_ms_Mess(500); |
583 | delay_ms_Mess(500); |
584 | // raw pressure will decrease. |
584 | // raw pressure will decrease. |
585 | pressureDiff += (savedRawAirPressure - rawAirPressure); |
585 | pressureDiff += (savedRawAirPressure - rawAirPressure); |
586 | savedRawAirPressure = rawAirPressure; |
586 | savedRawAirPressure = rawAirPressure; |
587 | OCR0A-=2; |
587 | OCR0A-=2; |
Line 588... | Line 588... | ||
588 | Delay_ms_Mess(500); |
588 | delay_ms_Mess(500); |