Hallo, Seit etwas längeren sind wir daran einen BLDC Controller zu entwickeln, welcher dem aus dem Artikel Brushless-Controll für Modellbaumotoren nachempfunden ist. Der Hardware aufbau ist annähernd der gleiche. Jedoch verwenden wir einen lpc1313 als Controller und lesen auch den mittelabgriff der Back EMF über einen ADC Channel ein. Es ist nun soweit und ein erster Programmablauf wurde entwickelt und aufgespielt leidert resultiert dieser in einem stotternden Motor, welcher nicht in einen ruhigen verlauf Resultiert. Eventuell könnte jemand sich mal mein Programmablauf anschauen. Dieser ist recht abstrakt gehalten und das Prinzip sollte daher recht schnell zu erkennen sein. Eventuell fällt ja jemanden direkt ein Fehler auf...
hey thomas, also die eigentliche ansteuerung habe ich nicht nachvollzogen.. aber könnte es sein dass dein programm aufgrund von interrupts o.ä. einfach nicht isochron läuft..? hast du mal versucht in der mainloop nen pin zu togglen und mal aufm oszi geschaut obs jittert? gruß jan
dunno.. schrieb: > hey thomas, > > also die eigentliche ansteuerung habe ich nicht nachvollzogen.. > > aber könnte es sein dass dein programm aufgrund von interrupts o.ä. > einfach nicht isochron läuft..? > > hast du mal versucht in der mainloop nen pin zu togglen und mal aufm > oszi geschaut obs jittert? > > gruß > jan Hey, das könnte tatsächlich sein alle 72 takte kommt mein systick interrupt, allerdings nur sehr kurz. Oszi hab ich momentan leider nicht da. Aber ein Anhaltspunkt wäre das ja schonmal... Eventuell fällt ja nochmehr auf, danke schonmal...
alle 72 cpu-takte ein interrupt? schau dir mal die interruptroutine mitsamt kontextwechsel im disassembler an.. ich kenn jetzt die cortexe nicht, nur "alte" arm7, aber da ist mit dem kontextwechsel schon ein großteil der 72 takte verbraucht..... so schnelle interrupts sind nicht zielführend. mach das langsamer. oder hast du einen prescaler für den timer drin?
dunno.. schrieb: > alle 72 cpu-takte ein interrupt? > > schau dir mal die interruptroutine mitsamt kontextwechsel im > disassembler an.. ich kenn jetzt die cortexe nicht, nur "alte" arm7, > aber da ist mit dem kontextwechsel schon ein großteil der 72 takte > verbraucht..... > > so schnelle interrupts sind nicht zielführend. mach das langsamer. > > oder hast du einen prescaler für den timer drin? Ok das werde ich mal ändern, anstelle des systick_timers für delays nehm ich dann mal einen timer mit passenden prescaler
bist du eigentlich sicher dass du setPhase und StopWatch_Start bei jedem durchlauf machen willst, oder vielleicht nur beim eintritt in eine phase?
TM schrieb: > dunno.. schrieb: >> alle 72 cpu-takte ein interrupt? >> >> schau dir mal die interruptroutine mitsamt kontextwechsel im >> disassembler an.. ich kenn jetzt die cortexe nicht, nur "alte" arm7, >> aber da ist mit dem kontextwechsel schon ein großteil der 72 takte >> verbraucht..... >> >> so schnelle interrupts sind nicht zielführend. mach das langsamer. >> >> oder hast du einen prescaler für den timer drin? > > Ok das werde ich mal ändern, anstelle des systick_timers für delays nehm > ich dann mal einen timer mit passenden prescaler Stimmt!! Wird auch geändert dunno.. schrieb: > bist du eigentlich sicher dass du setPhase und StopWatch_Start bei > jedem > durchlauf machen willst, oder vielleicht nur beim eintritt in eine > phase? Bei setPhase hast du recht...Stopwatch_Start könnt ich mir vielleicht auch sparen, werd ich auch mal ändern...
dunno.. schrieb: > bist du eigentlich sicher dass du setPhase und StopWatch_Start bei > jedem > durchlauf machen willst, oder vielleicht nur beim eintritt in eine > phase? Ohja das mit dem StopWatch_Start ist nen riesiger Fehler danke!!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.