Registri znotraj class-a

Arduino je pojav za katerega bi težko rekli, da opisuje samo HW ali samo SW, zato mu tu namenajm poseben prostor.

Moderator: tilz0R

Registri znotraj class-a

OdgovorNapisal/-a Lovro7 » 06 Feb 2025, 18:24

Pozdravljeni,
Pišem osnovno knjižnico za koračne motorje (Znane knjižnice ne ustrezajo, ker imam specifične zahteve) in sem naletel na problem.
Imam narejen void, ki nastavi hitrost motorja:
Koda: Izberi vse
void stepper::setSpeed(uint16_t steps_per_second){
    OCR1B = (125000 / steps_per_second) - 1;
}


Problem je, ker se vrednost registra ne posodablja.
Mogoče kdo ve zakaj?

Tukaj je še en primer, ko nastavi CS12:0 bite, da zažene timer:
Koda: Izberi vse
void stepper::startMoving(){
    TCCR1B |= (1 << CS12);
}

Ko kličem to funkcijo se timer ne zažene. Enako je z zaustavitvijo timerja in ostalimi void-i.

Če pa to naredim pri inicializaciji, pa deluje (zakomentirana vrstica):
Koda: Izberi vse
stepper::stepper(uint16_t step_n){
    _step_n = step_n;
    DDRB |= (1 << 1);
    TCCR1B |= (1 << WGM12);
    TCCR1A |= (1 << COM1A0);
    OCR1A = 0xFFFF;
    TIMSK1 |= (1 << OCIE1A);
    //TCCR1B |= (1 << CS12);
    sei();
}
Vse je lahko žarnica, če je dovolj toka. http://lovro7.eu/index.html
Uporabniški avatar
Lovro7
 
Prispevkov: 350
Pridružen: 11 Feb 2024, 20:19
Kraj: Velenje (Šmartno ob Paki)
Zahvalil se je: 130 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 8

Re: Registri znotraj class-a

OdgovorNapisal/-a Lovro7 » 06 Feb 2025, 21:27

Isto kodo za timer sem testiral v void setup() (zunaj classa) in vse deluje tako kot mora.
Ugotovil sem tudi, da ni pravilno zapisalo vrednosti v registre?
Zakaj?
Vse je lahko žarnica, če je dovolj toka. http://lovro7.eu/index.html
Uporabniški avatar
Lovro7
 
Prispevkov: 350
Pridružen: 11 Feb 2024, 20:19
Kraj: Velenje (Šmartno ob Paki)
Zahvalil se je: 130 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 8


Vrni se na Arduino

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost