-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: meine Probleme mit dem Interrupt

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    119

    meine Probleme mit dem Interrupt

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    hallo ich habe ein kurzes Testprogramm geschrieben um den Hardware- Interrupt zu testen.
    Immer wenn ein Interrupt ausgelöst wird soll meine Variable I um 1 incrementiert werden doch das funktioniert leider nciht so recht...
    wo liegt mein Fehler ?

    Code:
    Declare Sub Mycounter()
    
    $regfile = "m32def.dat"
    
    Dim I As Word
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    
    Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8
    
    On Int1 Mycounter
    
    Config Int1 = Rising                           'rising for high level/ falling low level
    Enable Int1
    Enable Interrupts
    
    I = 0
    
    Do
           Print "this is a test for high-level interrupts I = " ; I
           'main loop starts here
           Sound Portd.7 , 700 , 750                            'BEEP
           Waitms 10
    Loop
    End
    
    Sub Mycounter()
     'Print "interrupt has occurent"
     I = I + 1
    End Sub

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ehrlich, du solltest etwas deutlicher werden.
    "funktioniert leider nicht so recht" ist als Voranalyse nicht wirklich umwerfend.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    Hallo alecs,

    wenn Du
    • On Int1 Mycounter

    schreibst, erwartet Bascom keine Sub sondern ein Label:
    • Mycounter:
      'Print "interrupt has occurent"
      incr I
      Return


    - Reinhard -

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    119
    Sorry PicNick, das nächste Mal mache ich eine bessere Fehlerbeschreibung.

    Vielen vielen Dank Reinhard, das war das Problem.

    Doch nun steh ich vor folgenden Problem, mein Variable I steiger ständig ihren Wert und das ganz unregelmäßig, obwohl nix am Port D angeschlossen ist. Die Variable startet bei 131 und steigert sich im nächsten Schritt auf 202 und im dritten Schritt ( print Ausgabe ) auf 432. Und dabei setzte ich doch die Variable am Programmstart auf 0.

    seht ihr den Fehler ?

    Danke



    Code:
    Declare Sub Mycounter()
    
    $regfile = "m32def.dat"
    
    Dim I As Word
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    
    Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8
    
    On Int1 Mycounter
    
    Config Int1 = Rising                                        'interrupt für high level
    Enable Int1
    Enable Interrupts
    
    I = 0     ' I auf Null setzen 
    
    Do
           Print "this is a test for high-level interrupts I = " ; I
           'main loop starts here
           Waitms 10
    Loop
    End
    
    Mycounter:
     Incr I
    Return

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    Hallo alecs,

    Zitat Zitat von alecs
    obwohl nix am Port D angeschlossen ist.
    das könnte das Problem sein. Der Port ist auf keinen
    definierten Pegel und "schwingt" hin & her ... und der Interrupt
    wird dadurch ausgelöst.

    vermutet einfach mal: - Reinhard -

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    119
    Hallo Reinhard,

    ich habe nun die kontakte für Int1 und Int2 auf Masse und einmal direkt auf 5V geschlossen, doch in diesem Fall geschieht keine Print-Ausgabe mehr, ist das ein ständiger Interrupt ? Ich hab beide Kombinationen mit Rising und Falling ausgetestet doch immer wieder beim anschließen keine Print-Ausgabe.
    Ist nix angeschloßen läuft die Printausgabe und die Variable ändert ihren Wert sehr schnell wie schon beschrieben und sie startet auch nicht bei 0, was auch sehr komisch ist!

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    Hallo alecs,

    Dein Problem liegt definitiv daran, das Port D unbeschaltet
    praktisch in der Luft hängt.

    Wenn Du folgenden Code einfügst, sollte es funktionieren:
    • Config Portd = Input
      Portd = &HFF


    Unbeschaltete Ports solltest Du in einen definierten Zustand
    bringen. Die 2 Zeilen schalten den Port D auf Eingang und
    aktivieren die internen Pullup's.

    Das Dein Zähler so springt und nicht bei 0 anfängt, liegt an
    Deinen 10ms Pause. In der Zwischenzeit sind schon wieder
    ein paar Interrupts durch ...

    - Reinhard -

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    119
    Hallo Reinhardt,

    ich versteh es einfach nicht.

    haben den Interrupt auf Rising und es ist egal ob ich Masse oder 5 Volt anlege es wird immer ein Interrupt ausgelöst.
    Auch die 2 Zeilen haben keine Änderung verschafft
    Ich wollte es wirklich als Zähler nutzen aber solange es nicht theoretisch funktioniert brauch ich auch keinen Schmidttrigger oder ähnliches anschließen.
    Ich weiß jetzt wirklich nicht mehr was da nicht stimmen sollte.
    Im eigentlichen Sinne wird ja auch nur Int1 verwendet und somit ist es ja auch egal wie Int2 und die anderen am Port D belegt sind (sind alle frei) oder ? Kann der Int1 auch noch von einem andern Port ausgelöst werden ?

    danke
    Alex

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    @alecs:
    Kannst du die Hexfile reinstellen, ich schau mal, ob die Sache compilermäßig koscher ist.
    Mega32 hab ich gesehen
    Welche Bascom version ? (Help-about)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    119
    Hi,
    ich habe die Version 1.11.7.7 ...

    hier der HEX File :
    Code:
    :100000000C942A00189500000C94740018950000B8
    :10001000189500001895000018950000189500002C
    :10002000189500001895000018950000189500001C
    :10003000189500001895000018950000189500000C
    :1000400018950000189500001895000018950000FC
    :10005000189500008FE58DBFC0E4E0E44E2E88E0E7
    :100060008EBFD8E0F8E05F2EEEEFF7E0A0E6B0E05C
    :1000700088278D933197E9F787E689B980E080BDBD
    :1000800088E18AB966248D9A8C9A83EA8FBD80E0D4
    :100090008EBDBB27AEE48C9182608C9380E081BBE7
    :1000A0008FEF82BB85B7837F8C6085BF8BB78068FD
    :1000B0008BBF789480E090E0A0E6B0E08D939C93B5
    :1000C000E0EBF2E00E94C700A8E2B8E0E0E6F0E072
    :1000D0000E94FF000E94BF000E94CE0080E991E0D4
    :1000E0000E94DE000C9460000F921F922F923F92AC
    :1000F0004F925F927F92AF92BF920F931F932F9375
    :100100003F934F935F936F937F938F939F93AF939F
    :10011000BF93CF93DF93EF93FF938FB78F93EEED62
    :10012000F2E00E94C7000E94CE00A0E6B0E00D9170
    :100130001C9141E050E0040F151FA0E6B0E00D93C4
    :100140001C938F918FBFFF91EF91DF91CF91BF9162
    :10015000AF919F918F917F916F915F914F913F915F
    :100160002F911F910F91BF90AF907F905F904F9014
    :100170003F902F901F900F901895F894FFCFA8E212
    :10018000B8E08D91882311F00CD0FBCF08950E9428
    :10019000ED00802D11F005D0FACF08958DE001D04B
    :1001A0008AE05D9BFECF8CB908953197F1F70895F1
    :1001B000689462F80895E89462F80895EF93FF93C5
    :1001C000EE27E82BE92B31F0E0EAFFE03197F1F779
    :1001D0000197D1F7FF91EF910895C89531960020CE
    :1001E0000895000F111F221F331F089500951095C9
    :1001F000209530950F5F1F4F2F4F3F4F089501916E
    :1002000010810EC001911191219130810BC001919B
    :10021000108117FF05C03FEF2FEF04C000811127A9
    :100220002227332737FF03C0E1DF8DE28D93CF9381
    :10023000DF93CF92DF92EF92AA24BB24CC24DD245B
    :10024000EE2440E2CAE0DD2755E093E38881890F80
    :1002500087FD9F7083FD907F891B89935A95A9F72D
    :10026000C0DFAA1CBB1CCC1CDD1CEE1C4A9551F740
    :10027000E894EFE0FF2782910ED0EB30E0F71EF01C
    :1002800068948A2D0CD088278D93EF90DF90CF90C3
    :10029000DF91CF910895982F829501D0892F8F708B
    :1002A000805D26F0803309F4089568948D93089555
    :1002B00074686973206973206120746573742066A3
    :1002C0006F7220686967682D6C6576656C20696E51
    :1002D00074657272757074732049203D2000696ED8
    :1002E0007465727275707420686173206F636375D2
    :0602F00072656E7400004F
    :00000001FF

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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