Skapa två olika frekvenser med timer1 på AVR?
Postat: 19 december 2015, 12:31:39
Hej
Jag drev en stegmotor(via en stegmotor-drivare med STEP ich DIR) med en Atmega328p men kommer inte på hur jag ska kunna driva två motorer. För att driva en använde jag CTC i timer1 där timern räknar upp till OCR1A, togglar STEP-pinnen(OC1A), sen räknar timern ner till 0, togglar igen och börjar räkna upp igen.
Då får man ett fint pulståg som man kan styra frekvensen på genom att ändra OCR1A-registret.
Men nu tänkte jag att det var enkelt att implementera en ytterligare stegmotor eftersom det finns ett OCR1B-register som styr en OC1B-pinne. Men nej, i data-bladet står det att det är OCR1A som styr toppen på räknaren så det är fortfarande det registret som styr frekvensen, så naturligtvis tänkte jag lite fel.
Jag har läst i data-bladet och googlat men inte tagit mig förbi problemet. Jag har funderat också hur man skulle kunna lösa det men har hjärnsläpp så jag hoppas på att någon kan peka mig i rätt riktning.
Alltså jag vill skicka pulståg med olika frekvens till två olika stegmotor-drivare, men med hjälp av endast en timer(timer1 är den jag har ledig för tillfället), det är bra om duty-cycle är 50% men inte nödvändigt. Hur kan jag göra det?
Jag drev en stegmotor(via en stegmotor-drivare med STEP ich DIR) med en Atmega328p men kommer inte på hur jag ska kunna driva två motorer. För att driva en använde jag CTC i timer1 där timern räknar upp till OCR1A, togglar STEP-pinnen(OC1A), sen räknar timern ner till 0, togglar igen och börjar räkna upp igen.
Då får man ett fint pulståg som man kan styra frekvensen på genom att ändra OCR1A-registret.
Men nu tänkte jag att det var enkelt att implementera en ytterligare stegmotor eftersom det finns ett OCR1B-register som styr en OC1B-pinne. Men nej, i data-bladet står det att det är OCR1A som styr toppen på räknaren så det är fortfarande det registret som styr frekvensen, så naturligtvis tänkte jag lite fel.
Jag har läst i data-bladet och googlat men inte tagit mig förbi problemet. Jag har funderat också hur man skulle kunna lösa det men har hjärnsläpp så jag hoppas på att någon kan peka mig i rätt riktning.
Alltså jag vill skicka pulståg med olika frekvens till två olika stegmotor-drivare, men med hjälp av endast en timer(timer1 är den jag har ledig för tillfället), det är bra om duty-cycle är 50% men inte nödvändigt. Hur kan jag göra det?