-         
Ergebnis 1 bis 4 von 4

Thema: Falscher Rücksprung aus ISR

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601

    Falscher Rücksprung aus ISR

    Anzeige

    Hi,

    ich habe hier grade ein ziemlich komisches Problem mit Bascom bzw. dem
    AVR. Der Versuchsaufbau sieht so aus, dass Empangene Daten vom
    HW UART zu einem Software UART weitergereicht werden sollen, ebenso
    andersrum. Beides ist Interruptgesteuert (der RxD pin des Softuarts liegt
    an INT0). Das Problem das sich auftut liegt in der Do..Loop Schleife. Zu
    Testzwecken ist noch ein 2ter Softuart angeschlossen. Nur komischerweise
    überspringt der Code manchmal die If Abfrage und ich erhalte an #3 eine 0.
    Wie kann man dieses Überspringen verhindern?

    Hier der Code:
    Code:
    $regfile = "m168def.dat"
    $crystal = 14745000
    $baud = 115200
    
    Open "comd.6:115200,8,n,1" For Output As #1
    Open "comd.7:115200,8,n,1" For Input As #2
    Open "comb.1:19200,8,n,1" For Output As #3
    
    On Urxc R1
    On Int1 R2 Nosave
    Config Int1 = Falling
    Enable Urxc
    Enable Int1
    Enable Interrupts
    
    Dim A As Byte
    Dim F As Byte
    Dim S As Byte
    
    Do
       If S = 1 Then
          Print #3 , S
       End If
    Loop
    
    R1:
       A = Udr
       Print #1 , Chr(a);
    Return
    
    R2:
       F = Inkey(#2)
       Print Chr(f);
    Return
    
    Close #1
    Close #2
    Close #3
    
    End
    Grüße Furtion

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    "Nosave" heisst, du willst dich selber um das Register-Sichern kümmern.
    Das kann ich aber in deinem Code nicht sehen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601
    Hi,

    wenn ich das Nosave lösche, sollte sich Bascom ja eigendlich um die
    Sicherung der Register kümmern, aber ohne Nosave funktioniert der
    Interrupt nicht richtig (Obwohl er das ja eingdlich sollte...) Irgendeine Ahnung
    woran das liegt?
    Grüße Furtion

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Du musst vermutlich SW-Stack erhöhen > 32
    https://www.roboternetz.de/wissen/in.../Bascom_Inside
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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