Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
(05-08-2021, 08:07 PM)enaB Wrote: Moze da se koristi return u void funkcijama Smile

return;

Ma moze naravno i tako, poenta je bila za izlazenje iz switch/case/if/for uslova, tu ne moze return, nego moze jedino break a ako ti je to ugnjezdeno tamo u vise nivoa onda pocinje da bude naporno jer ne postoji na primer "break 3" kao u nekim jezicima da prekine 3 nivoa ili koliko vec treba pa bude problem, stavis lepo GOTO i skaci gde oces ako znas tacno gde treba.

Evo konkretan primer tamo sa druge teme, bas mi je cucnuo GOTO vise nego bilo koja druga logika Big Grin

//--------------------------------------------------------
//------------------------ RELAYS ------------------------
//--------------------------------------------------------
void Handle_Relays() {
    if (vol_change_flag) {
        if (SW_timers[7] == 1) { //prvi prolaz postavljamo sve koje trebaju
            if (bitmask1 != 0) GPIOA->BSRR = RY1_on; //PA3 -1dB
            if (bitmask2 != 0) GPIOA->BSRR = RY2_on; //PA4 -2dB
            if (bitmask3 != 0) GPIOA->BSRR = RY3_on; //PA5 -4dB
            if (bitmask4 != 0) GPIOA->BSRR = RY4_on; //PA6 -8dB
            if (bitmask5 != 0) GPIOA->BSRR = RY5_on; //PA7 -16dB
            if (bitmask6 != 0) GPIOB->BSRR = RY6_on; //PB0 -32dB
            if (MyData[DELAY]==0) goto odradi_ostalo; //nema delay odradi i ostalo
        } else if (SW_timers[7] >= (MyData[DELAY]+1)) {//kada istekne gasimo koje trebaju
            odradi_ostalo:
            SW_timers[7] = 0;
            vol_change_flag = 0;
            if (bitmask1 == 0) GPIOA->BSRR = RY1_off; //PA3 -1dB
            if (bitmask2 == 0) GPIOA->BSRR = RY2_off; //PA4 -2dB
            if (bitmask3 == 0) GPIOA->BSRR = RY3_off; //PA5 -4dB
            if (bitmask4 == 0) GPIOA->BSRR = RY4_off; //PA6 -8dB
            if (bitmask5 == 0) GPIOA->BSRR = RY5_off; //PA7 -16dB
            if (bitmask6 == 0) GPIOB->BSRR = RY6_off; //PB0 -32dB
        }
    }
}

// Konfiguracija (72000) za SysTick da radi kao 1kHz (1ms) timer
// Iskoriscen SysTick HW tajmer za jos X SW tajmera + Handle_relays()
void SysTick_Handler (void) {
    if (SW_timers_enable[0] == 1) SW_timers[0] ++;
    SW_timers[1] ++;
    SW_timers[2] ++;
    SW_timers[3] ++;
    SW_timers[4] ++;
    SW_timers[5] ++;
    SW_timers[6] ++;
    SW_timers[7] ++;
    Handle_Relays(); //Function call every 1ms
}
Reply


Messages In This Thread
RE: Arduino - tutorijali, pitanja, primjeri i projekti - by mikikg - 05-08-2021, 08:50 PM

Forum Jump:


Users browsing this thread: 30 Guest(s)