- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 23

Thema: 4 Led´s unabhängig per Zufall blinken lassen?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich programmiere selten mit Bascom und habe das jetzt mal mit dem Simulator überprüft:
    Code:
    ...
    Dim I As Integer
    Dim J As Integer
    Dim Led1 As Byte
    Dim Led2 As Byte
    
    Const Timervorgabe = 131
    On Timer0 Timer_irq
    Enable Timer0
    Enable Interrupts
    
    Led1 = 51
    Led2 = 86
    J = 0
    
    Do
    I = Rnd(10)
    Incr J
    Loop
    End
    ...
    Tatsächlich zeigt der Simulator im Watch-Modus nach immer der selben Anzahl von J-Durchläufen einen I-Wert von über 9! In der ersten Variante ohne J war der I-Wert über 9 aber wiederrum ganz anders. Interessanterweise funktioniert rnd() scheinbar richtig, wenn man den Timer0-Interrupt nicht freigibt oder alle Interrupts gesperrt sind. Vielleicht verwendet rnd() irgendwie den Timer0? Seltsam und wieder typisch Bascom..

    [Edit]
    Weil ich auch was sehen will habe ich das Programm an meinen asuro (8 MHz Mega8) angepasst:
    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 2400
    Config Timer0 = Timer , Prescale = 64
    
    Config Pind.2 = Output
    Config Pind.3 = Output
    
    Dim I As Integer
    Dim J As Integer
    Dim Led1 As Integer
    Dim Led2 As Integer
    
    Const Timervorgabe = 131
    On Timer0 Timer_irq
    Enable Timer0
    Enable Interrupts
    
    Led1 = 51
    Led2 = 86
    J = 0
    
    Print "Hallo"
    Print
    Do
    I = Rnd(10)
    Incr J
    If I > 9 Then
       Print "I: " ; I
       Print "J: " ; J
       Print
       J = 0
    End If
    Loop
    End
    
    Timer_irq:
    Timer0 = Timervorgabe
    
    If Led1 > 0 Then
       Decr Led1
    Else
       Toggle Portd.2
       If Pind.2 = 1 Then
          Led1 = 500                                            ' Anzeit
       Else
          Led1 = 500                                            ' Auszeit
       End If
    End If
    
    If Led2 > 0 Then
       Decr Led2
    Else
       Toggle Portd.3
       If Pind.3 = 1 Then
          Led2 = 200
       Else
          Led2 = Rnd(400) + 500
       End If
    End If
    
    Return
    Ausgabe auf dem Bascom-Terminal:
    Code:
    Hallo
    
    I: 4767
    J: 13
    
    I: 61
    J: 1
    
    I: 116
    J: 9
    
    I: 172
    J: 28
    
    I: 59
    J: 5
    
    I: 10
    J: 53
    
    I: 180
    J: 6
    
    I: 176
    J: 38
    
    I: 14
    J: 2
    
    I: 164
    J: 10
    
    I: 157
    J: 14
    
    I: 46
    J: 57
    
    I: 71
    J: 63
    
    I: 113
    J: 16
    Verblüffend

    btw. muss es Toggle PORTx.y lauten...

    [Edit2]
    So scheint es zu funktionieren:
    Code:
    Disable Interrupts
    I = Rnd(10)
    Enable Interrupts
    Geändert von radbruch (19.07.2011 um 20:28 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. Led blinken lassen mit Timer0
    Von sky2 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 25.12.2009, 18:33
  2. LED blinken lassen während Programm normal weiterläuft
    Von Steffen08 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 30.03.2009, 21:10
  3. LED im 1 oder 2 sek. Takt per Interrupt blinken lassen
    Von rogerberglen im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 17.04.2007, 19:51
  4. Led's unabhängig voneinander blinken lassen
    Von Thorsten75 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 20.03.2007, 12:41
  5. LED´s per Zufall leuchten lassen
    Von Hoomer im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 05.02.2006, 14:45

Berechtigungen

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

Solar Speicher und Akkus Tests