-         

Ergebnis 1 bis 4 von 4

Thema: Probleme mit MIDI und debounce/interrupts/fallunterscheidung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.10.2009
    Beiträge
    5

    Probleme mit MIDI und debounce/interrupts/fallunterscheidung

    Anzeige

    Moin
    Ich spiel grad ein bisschen mit MIDI rum, klappt theoretisch auch, aber halt nur theoretisch.
    Folgendes Problem:
    Das funktioniert einwandfrei:

    Code:
    $regfile = "M16def.dat"
    $crystal = 16000000
    Baud = 31250
    
    Config Pind.5 = Output
    Config Pind.6 = Output
    
    Do
    Print Chr(&Hb1) ; Chr(&H3) ; Chr(&H7f);
    toggle portd.5
    wait 1
    Print Chr(&H91) ; Chr(&H60) ; Chr(&H7f);
    toggle portd.6
    wait1
    
    Loop
    End
    Alles wird wünderschön empfangen und die LED schaltet um.

    Aber wenn ich die Codes nach einem Tastendruck senden will, geht gar nichts mehr.
    Code:
    $regfile = "M16def.dat"
    $crystal = 16000000
    Baud = 31250
    
    Config Pind.2 = Input                                       'taste1
    Config Pind.3 = Input                                       'taste2
    Config Pind.4 = Input                                       'taste3
    
    Config Pind.5 = Output                                      'led
    Config Pind.6 = Output                                      'led2
    
    Do
    Debounce Pind.2 , 1 , Taster1                          'taster entprellen
    Debounce Pind.3 , 1 , Taster2
    Debounce Pind.4 , 1 , Taster3
    Loop
    End
    
    Taster1:
    Print Chr(&Hb1) ; Chr(&H3) ; Chr(&H7f);
    Toggle Portd.5
    Return
    
    Taster2:
    Print Chr(&Hb1) ; Chr(&H12) ; Chr(&H0);
    Toggle Portd.6
    Return
    
    Taster3:
    Print Chr(&H91) ; Chr(&H60) ; Chr(&H7f);
    Return
    Am Interface blinkt zwar die MIDI-In Lampe, aber am PC kommen keine gültigen Midi-Daten an.
    Auch funktioniert das umschalten der LED nur sporadisch.
    Wenn ich Interrupts benutze geht es auch nicht.
    Wenn ich eine If-Abfrage benutze, kommt zwar manchmal was an, aber oft nicht das richtige, oder es wird zuviel oder zu wenig gesendet.

    Mfg und schon mal danke für die Hilfe

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Schreibe mal hinter den Debounce Befehl noch , Sub also
    Debounce Pind.2 , 1 , Taster1, Sub

    Du willst mit Return zurückkehren, aber da das Sub fehlt, hat sich Bascom keine Rücksprungadresse gemerkt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.10.2009
    Beiträge
    5
    Moin
    Danke, funktioniert.
    Das erklärt zwar immer noch nicht warum das mit If-Abfragen nicht ging, aber egal, werd ich noch rausfinden.
    mfg

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von C2H6O
    Moin
    Das erklärt zwar immer noch nicht warum das mit If-Abfragen nicht ging, aber egal, werd ich noch rausfinden.
    Das wird dir auch keiner erklären können, weil du keinen Code dazu gezeigt hast. Für den Interrupt Versuch auch nicht.
    Häufig liegt es an so Kleinigkeiten wie dem vergessenen Sub, dass eine an sich richtige Vorgehensweise nicht funzt.

Berechtigungen

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