-         

Ergebnis 1 bis 9 von 9

Thema: Interrupt Problem

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177

    Interrupt Problem

    Anzeige

    Hallo,

    Ich möchte mittels Interupt ein Signal auswerten. Habe den Modus mit Config auf Falling gestellt, will aber nicht klappen (Atmega32).
    Folgendes Verhalten: Ist der Port auf High, gibt es keinen Interrupt, auf Low aber ständig, und damit meine ich auch ständig, so das nur noch die Interuptroutine abgeareitet wird. Was tun?

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175

    Re: Interrupt Problem

    Zitat Zitat von Rohbotiker
    ...
    Was tun?
    ...
    Erstmal Deinen Code hier posten, wuerde ich sagen - moeglichst komplett!

    Hab leider ein Treiberproblem mit meiner USB-Glaskugel...

    Gruesse

    Torsten

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Der Code ist wie folgt:

    Code:
    $regfile = "m32def.dat"                            
    $crystal = 16000000                             
    $baud = 9600
    $hwstack = 32
    $framesize = 24                              
    $swstack = 8                                       
    
    Config Portd.2 = Input
    
    Dim Begin as Long
    
    Config Int0 = Change
    On Int0 Interupt
    Enable Int0
    
    Enable Interrupts
    
    Do
    Print Begin
    Print
    Waitms 200
    Loop
    
    Interupt:
    Incr Begin
    Return
    Wenn ich Portd.2 auf High ziehe bleibt Begin gleich, auf GND macht er nichts anderes als den Interrupt abzuarbeiten, sieht man daran, dass wenn man den Port wieder auf High setzt, die Zahl größer geworden ist. Was tun?

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Probier' mal was anderes als "change". Es gab oder gibt Bascom-Versionen, die haben diese MCUCR-Bits nicht immer richtig gesetzt.

    Dann, wie legst du den PIN auf Low ? Ohne Entprellen kann das ganzschön nervös werden.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Das auf Low legen habe ich einfach an Gnd angeschlossen, also noch ohne Schalter.

    Mit anderem als Change habe ich auch schon probiert. Was sind "MCUCR-Bits" und wie setze ich die richtig?

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    MCUCR.0 und
    MCUCR.1
    sind für den Int0 zuständig
    0 0 Immer (und dauernd) bei Low
    0 1 bei change
    1 0 falling
    1 1 rising

    also
    MCUCR.0 = 1
    MCUCR.1 = 0
    wäre "on change"

    Wie gesagt, es scheint, als wären diese Bits bei dir beide auf "0", da er ja bei Pin auf GND dauernd auslöst.

    Du kannst das aber auch im Simulator überprüfen, was Sache ist, nicht, daß du den falschen Baum anbellst.

    Aber sonst scheint mir dein Programm unverdächtig. Ich würd's halt überprüfen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    versuch das einmal :

    Interupt:
    Disable Int0
    Incr Begin
    enable Int0
    Return

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Stimmt, das Programm ist so weit unverdaechtig.
    Allerdings wuerde mich interessieren, wie der PIN hardwaremaessig auf High bzw. auf Low gesetzt wird. Im Programm wird der interne Pullup nicht aktiviert ( das wuerde die Zuweisung Portd.2=1 nach dem Config Portd.2 = Input erfordern).

    Wenn extern kein Pullup (oder Pulldown) verbaut ist, wird die Sache kaum funktionieren, weil der INT0 in der Luft haengt und willkuerlich Interrupts ausloest.Die Eingangspins sind da wirklich hypersensibel, unklare Potenziale moegen sie gar nicht.
    Fuer das Entprellen wuerde noch zusaetzlich ein Kondensator benoetigt.

    Gruesse

    Torsten

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Danke, es lag an den Mcucr Bits, heißt es gibt keine Lowlevel Interrupts mehr, aber jetzt habe ich nochein Problem *fast am verzweifeln*

    Mein Signal hat 0 oder 2V (aus einem Operationsverstärker ) und möchte die zwei Volt zu fünf Volt machen, ich kriegs aber einfach nicht hin. Wenn möglich bitte ohne OP's, bei mir funktionieren die irgendwie nie. Wäre eine Lösung nur mit Widerständen, Dioden, Z-Dioden, Transistoren, Mosfets o.ä. möglich?

Berechtigungen

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