Chirurgia endoscopică a hipofizei
"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală. Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale. www.neurohope.ro |
Arduino IDE - RPM
Last Updated: Jun 14 2020 23:30, Started by
mellbo
, Jun 13 2020 17:19
·
0
#1
Posted 13 June 2020 - 17:19
Acest cod foloseste TIMER1, as vrea sa-l convertesc in TIMER2.
Se poate ? Putin ajutor va rog. /* PINS*/ #define TACHOMETER_PIN 8 #define buff_time_SIZE 32 //32 volatile unsigned t1CaptureValue = 0; volatile unsigned pulseCount = 0; volatile unsigned long t1time; volatile unsigned long t1last = 0; volatile unsigned long int buff_time[buff_time_SIZE]; volatile byte head = 0; volatile byte tail = 0; unsigned long int PERIODuS = 0; long int RPM = 0; double HZ = 0; unsigned long cMs = 0; uint32_t lstTest = 0; float WindSpeed = 0.0; /*-----------------------------------------------------------------------------*/ void setup() { pinMode(TACHOMETER_PIN, INPUT); //RPM READER SETUP cli(); TCCR1A = 0x0; TCCR1B = 0x2; TIFR1 = (1<<ICF1) | (1<<TOV1); TIMSK1 |= (1<<ICIE1) | (1<<TOIE1); sei(); Serial.begin(9600); Serial.println("UPX - RPM"); for (int i=0;i<buff_time_SIZE;i++) buff_time[i] = 0; } /*-----------------------------------------------------------------------------*/ void loop() { cMs = millis(); computeRPM(); if ((cMs-lstTest) >= 500UL) { lstTest = cMs; Serial.print(F("WindSpeed: ")); Serial.print(WindSpeed); Serial.print(F("\tRPM: ")); Serial.println(RPM); } } /*-----------------------------------------------------------------------------*/ void computeRPM(){ uint32_t buff_time_bkp[buff_time_SIZE]; byte newhead; static unsigned long lastReadRPM = cMs; if(head != tail) { newhead = (head + 1) % buff_time_SIZE; head = newhead; PERIODuS = buff_time[newhead]; HZ = 1000000.0/PERIODuS; RPM = (unsigned int)(HZ/0.0166666666666667); // 1/60 lastReadRPM = cMs; } if ((cMs-lastReadRPM)>=2000UL) { //no RPM RPM = 0; HZ = 0; PERIODuS = 0; } if (PERIODuS > 0) WindSpeed = (3.8453184 / (float(PERIODuS)/1000000.0)); else WindSpeed = 0.0; } /*-----------------------------------------------------------------------------*/ ISR(TIMER1_OVF_vect) { pulseCount++; } /*-----------------------------------------------------------------------------*/ ISR(TIMER1_CAPT_vect) { unsigned long t1Tmp; t1CaptureValue = ICR1; t1Tmp = ((unsigned long)pulseCount << 16) | t1CaptureValue; t1time = (t1Tmp - t1last) >> 1; t1last = t1Tmp; tail = (tail + 1) % buff_time_SIZE; buff_time[tail] = t1time; } /*-----------------------------------------------------------------------------*/ Nu e vorba de lene, e vorba ca ma depaseste captura in isr. Va multumesc. Edited by mellbo, 13 June 2020 - 17:19. |
#2
Posted 14 June 2020 - 23:30
l-am facut pana la urma cu atach, mi-ar fi placut insa sa pot face schimbarea.
codul asta l-am facut acum doi ani si acum am uitat tot... nu se prind timerele astea de mine veac. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users