-         

Ergebnis 1 bis 6 von 6

Thema: Interrupt bei PWM geht nicht aus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Beiträge
    52

    Interrupt bei PWM geht nicht aus

    Anzeige

    Hallo,
    ich möchte 2 Motoren über PWM ansteuern. Ich lasse beide Motoren für par Sekunden laufen und dann schalte ich sie wieder aus und das in der for(ever)-Schleife.
    Sobald ich aber die globalen Interrupts enable, laufen die Motoren schneller und schalten sich an und aus im schnelleren Takt.

    Es kommt also ein Interrupt.
    Ich schalte schon die Interrupts aus:
    Code:
    TIMSK &= ~(1<<OCIE1A);
    TIMSK &= ~(1<<OCIE1B);
    TIMSK &= ~(1<<TOIE1);
    TIMSK &= ~(1<<TOIE0); 
    TIMSK &= ~(1<<TICIE1);
    Doch irgendwie passiert es immer noch.Sobald ich sei() ausführe.

    Woran kann denn das liegen?

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Beiträge
    52
    Die Richtungen bestimme ich über die PINS:
    PORTD5;PORTD6 und PORTD7;PORTB0

    Auf PORTB0 liegt auch ICP1.
    Kann das etwas beeinflussen?

    Irgendwie habe ich das aber doch durch TIMSK disabled oder?

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Du brauchst die Interrupts nicht ausschalten, sie sind bei Anschalten der Versorgungsspannung schon ausgeschaltet.

    Hilfreich wäre es vielleicht, den ganzen Code zu posten, denn so, wie du es beschrieben hast, dürfte sei() absolut keinen Einfluss auf dein Programm nehmen.

    Gruß, Yaro

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    03.07.2008
    Beiträge
    10

    Unter Bascom ähnliches Problem

    Ich Suche momentan an der gleichen Stelle, nur im Anfängermodus (Bascom)

    Wenn ich den Port auf 0 setze, dann sollt eigentlich alles aus sein, aber der Motor dreht auf volle Leistung hoch. Das Stoppen des Timers hat geholfen, aber den konnte ich dann nicht mehr einschalten.
    An dem C-Code wäre ich auch interessiert, da ich mich frage ob Bascom oder C (ich war früher in der Windows C++ programmierung)

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Beiträge
    52
    ich werde mal alle signalhandler einrichten und gucken woher das kommt und eventuell noch im oszi mir genau anschauen, was an den ports passiert.

    Irgendwie funktioniert es nur 1 - 2 mal und dann dreht der Motor voll auf (wie du auch sagtest).

    Aber es liegt eigentlich definitiv am Interrupt, denn ohne sei() (also default) geht alles super.

    Es kann nur ein Interrupt sein.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.416
    Es kann nur ein ... sein.
    wie oft hab cih diese aussage nur gehört und selber schon geäußert und dann wars doch ne triviale sache bei der initialisierung ... blöd nur, man kann net helfen, wenn man keinen code lesen kann um den fehler zu suchen ^^

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •