C pælingar
Sent: Sun 23. Sep 2012 19:12
Er að búa til PWM stýringu fyrir motor með að nota ATMEGA32, forritað í C.
Ég get breytt duty cycle á milli 0-250, en málið er að ég vill ekki alla þessa upplausn heldur bara 0-100 og gerði þennan kóða til að geta kallað í function-ið með 0-100 sem parameter.
Kóðinn virkar eftir sem ég veit best en það sem ég er að velda mér uppúr er að parameter-inn fyrir fallið er 8 bita sem ég margfalda síðan með 25, ætti ekki að vera overflow áður en ég deili með 10 ? eða reiknar cpu alla súpuna sem 16 bita áður en útkoman er assign-uð í duty?
Er eitthvað vitlaust að gera þetta svona, er opinn fyrir hugmyndum.
Ég get breytt duty cycle á milli 0-250, en málið er að ég vill ekki alla þessa upplausn heldur bara 0-100 og gerði þennan kóða til að geta kallað í function-ið með 0-100 sem parameter.
Kóði: Velja allt
void setDutyCycle(unsigned char duty){
if(duty>100){
duty = 100;
}
if(duty>0){
duty = duty*25/10;
}
OCR1A = duty;
}
Kóðinn virkar eftir sem ég veit best en það sem ég er að velda mér uppúr er að parameter-inn fyrir fallið er 8 bita sem ég margfalda síðan með 25, ætti ekki að vera overflow áður en ég deili með 10 ? eða reiknar cpu alla súpuna sem 16 bita áður en útkoman er assign-uð í duty?
Er eitthvað vitlaust að gera þetta svona, er opinn fyrir hugmyndum.