-         

Ergebnis 1 bis 10 von 10

Thema: Problem mit int1...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.05.2005
    Beiträge
    25

    Problem mit int1...

    Anzeige

    hi
    hab folgendes problem:
    möchte wie viele vor mir schon einen drehzahlmesser machen
    jetzt hab ich auch ein prog geschrieben und zum teil geht es auch (sagt zumindest der simulator bei bascom).
    da ich jedoch nicht nur einen interrupt verwenden möchte sondern auch nen zweiten (int0 und int1) hab ich jetzt dieses problem dass der zweite interrupt gar nicht geht (k.a.wieso??? )

    sieht jemand den fehler?

    CU

    Code:
    $regfile = "M32def.dat"
    $crystal = 8000000
    
    'Timer Configuration
    Config Timer0 = Timer , Prescale = 256
    Timer0 = 0
    Start Timer0
    
    'Interrupts
    Enable Interrupts
    Enable Int0
    Enable Int1
    
    Config Pind.2 = 1                                          
    Config Pind.3 = 1
    
    On Ovf0 Timerinterrupt Nosave
    On Int1 Motorl_interrupt Nosave
    On Int0 Motorr_interrupt Nosave
    
    Timerinterrupt:
       Drehzahl1 = Intcounter0
       Drehzahl2 = Intcounter1
    
       Intcounter1 = 0
       Intcounter0 = 0
       Timer0 = 1
    Return
    
    Do
    ---------
    Loop
    
    
    
    Motorr_interrupt:
       Intcounter1 = Intcounter1 + 1
    Return
    
    Motorl_interrupt:
       Intcounter0 = Intcounter0 + 1
    Return

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hi, Beim Bascom kannst du deine Funktionen nicht irgendwie passend verteilen, so schlau is der nicht.
    DO..LOOP muß nach vor, gleich nach den on.. Anweisungen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.05.2005
    Beiträge
    25
    hi,
    ja habs falsch kopiert do...loop ist bei mir schon nach : on int0...
    das komische ist wie gesagt im simulator beachtet es nur den interrupt von int0 alle anderen werden nicht beachtet (also int1 und int2)

    kann es vielleicht daran liegen, dass ein fusebit falsch gesetzt ist?
    oder gibt´s eine priorität bei den interrupts, die da dazwischen geht?

    so wie ich das irgenwo gelesen hab, haben interrupts mit der kleineren zahl (also int0) eine höhere priorität als int1. aber das müsste eigentlich egal sein.

    und noch eine andere frage: hängen interrupts und die timer irgendwie zusammen? also so, dass man entweder int0 oder timer0 benutzen kann?
    (wahrscheinlich nicht oder?)

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hängen nicht zusammen, alles geht
    Aber zum Testen laß das "nosave" mal weg, das bringt Chaos
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.05.2005
    Beiträge
    25
    jep mach ich :
    hab hier mal den code nochmal und ohne anderes zeug
    Code:
    $regfile = "M32def.dat"
    $crystal = 8000000
    
    
    Dim A As Integer
    Dim B As Integer
    Dim Intanzeige0 As Integer
    Dim Intanzeige1 As Integer
    
    Config Timer0 = Timer , Prescale = 256
    
    
    Enable Interrupts
    Enable Int0
    Enable Int1
    
    A = 0
    B = 0
    
    On Timer0 Anzeige
    On Int0 Interrupt0
    On Int1 Interrupt1
    
    
    '----------------------------
    
    Do
    
    nop
    
    Loop
    End
    
    '----------------------------
    
    Interrupt0:
    
    A = A + 1
    
    Return
    
    
    Interrupt1:
    
    B = B + 1
    
    Return
    
    
    Anzeige:
    
    Intanzeige0 = A
    Intanzeige1 = B
    
    A = 0
    B = 0
    
    Return

  6. #6
    Gast
    Na ja, eigentlich sollt' er das tun.
    Frage ist nur, wie kontrollierst du das ?

  7. #7
    Gast
    ja....
    also momentan probier ichs eigentlich nur im simulator. da kann man ja einen interrupt auch auslösen.
    habs zwar schon auf den proz überspielt aber dort klappt es auch nicht.
    kann jemand es mal bei sich in Bascom probieren? vielleicht stimmt bei mir was nichr(obwohl ich auch schon neu installiert hab)


    CU

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    22.05.2005
    Beiträge
    25
    ups, war nicht eingelogt ^^

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hast du auf deinem Board eine Möglichkeit, irgendeine LED zu bedienen ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Gast
    hi,
    also leds nicht aber lcd.
    aber so wie ich das sehe gibt es bei Bascom einen bug, wenn man den simulator verwendet, denn als ich das program auf dem m32 draufmachte ging es und das lcd hat auch normal was angezeigt und gezählt

    ich denke/hoffe , dass das problem somit gelöst ist
    (mercí für die hilfe)


    CU

Berechtigungen

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