-         

Ergebnis 1 bis 5 von 5

Thema: Interrupt Routine

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    31.01.2006
    Beiträge
    23

    Interrupt Routine

    Anzeige

    Hallo zusammen,

    sorry,.. ich habe Suchfunktion gequält bis zum umfallen und nichts gefunden, was mich weiterbringt (

    Ich habe da mal eine Anfänger F44rage:

    Ich habe hier ein RN-Control 1.4 und programmiere mit Bascom 1.11.7.4 und bin grade ein paar Experimente zu machen um mich in die Gegebenheiten einzuarbeiten.

    Ich hänge gerade bei folgendem:

    Ich möchte eine Interrupt Routine bauen, welche ausgeführt wird, sobald ich einen Schalter umlegen.

    Pulling in Mailloop funktioniert. Dann Wechselt der Porta.0 von 1 auf 0.
    Jetzt möchte ich das ganze aber nicht über pulling sondern über eine ISR machen. Ich möchte, dass jedesmal wenn der Schalter gedrückt wird "Schalter gedrückt" mittels Print ausgeben.

    Wie mache ich das?

    Den Interrupt habe ich wie folgt konfiguriert:

    Code:
    enable interrupts
    enable int0 on int0 isrint0
    
    
    isrint0:
      print "schalter gedrückt"
    return
    Soweit so gut. Einziges Thema was mir aufgefallen ist... Unter http://www.roboternetz.de/wissen/ind...com_Interrupts steht beschrieben, dass man den Interrupt per
    Code:
    Config Int0 = Low Level
    konfigurieren soll. Sobald ich dies eingebe kommt vom Compiler die Fehlermeldung: "Int0 - Int3 are always low level triggered in the MEGA [INT0]"
    Heisst das also für mich, dass ich mit dem RN-Control nur LowLevel Ints abfangen kann?

    Zurück zum Thema:
    Was muss ich jetzt genau tun. Int0 liegt auf dem RN-Control auf PortD Pint 3. Jetzt habe ich mir gedacht, dass ich einfach den Schalter, welchen den INT auslösen soll mit daran (Also an portd.3) anschließen muss. Aber sobald ich irgendwas an portd.3 anschließe (Ein kabel, welches ins nichts führt) wird meine ISRINT0 ausgeführt.

    Also meine Frage als Anfänger an euch: Was mache ich falsch? Wie muss ich es richtig machen?

    Vielen Dank auf jedenfall schonmal im Vorraus

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Freie Leitungen sind suboptimal. Die Inputs sollten immer definitiv auf + oder GND liegen.
    Der Pin sollte mit "Pullup"-Widerstand (~4 k, nicht heikel) auf + gelegt werden, der Schalter verbindet dann beim Drücken den Pin mit GND.

    Ich denke, du solltest eher "Int0 = FALLING" sagen, denn sonst wird der Interrupt immer wieder ausgeführt, solange der Pin auf LOW ist.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    31.01.2006
    Beiträge
    23
    ich hab einfach weiter gefummelt. Es hat dann hinterher doch funktioniert. Warum weiß ich nicht.

    Aber ich kann nach wie vor die Interrupts nicht konfigurieren.

    Wenn ich Config Int0 = Falling eingebe, bekomme ich besagte Fehlermeldung vom Compiler (Int0 - Int3 are always low level triggered in the MEGA [INT0])

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Bist du sicher, dass du den richtigen Chip ausgewählt hast ?
    Options->COmpiler->Chip
    bzw.
    $regfile = "m32def.dat"

    ??
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    31.01.2006
    Beiträge
    23
    Neuste Bascom Version installiert. Jetzt tut

Berechtigungen

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