-         

Ergebnis 1 bis 3 von 3

Thema: Wait wartet über 10x so lang.

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2005
    Ort
    Bremerhaven (Ziemlich weit nödlich^^)
    Alter
    24
    Beiträge
    100

    Wait wartet über 10x so lang.

    Anzeige

    Nachdem ich von der blinkenden LED weg wollte und einen 7-segment display aus meinem cybot ausgebaut habe (siehe thread im bausatz forum), habe ich mich entschlossen ein kleines testprogramm zu schreiben. Welches in etwa so aussieht:
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    
    $baud = 9600
    
    Declare Sub Zahlanzeigen(byval Zahl As Byte)
    
    Config Porta.0 = Output
    Config Porta.1 = Output
    Config Porta.2 = Output
    Config Porta.3 = Output
    Config Porta.4 = Output
    Config Porta.5 = Output
    Config Porta.6 = Output
    Config Porta.7 = Output
    
    Dim I As Byte
    Dim J As Byte
    
    Do
       I = I + 1
       Call Zahlanzeigen(i)
       Waitms 50
       If I = 19 Then
          I = 0
       End If
    Loop
    
    Sub Zahlanzeigen(byval Zahl As Byte)
       Porta.0 = 1
       Porta.1 = 1
       Porta.2 = 1
       Porta.3 = 1
       Porta.4 = 1
       Porta.5 = 1
       Porta.6 = 1
       Porta.7 = 1
    
       If Zahl >= 10 Then
          Porta.4 = 0
       End If
       J = Zahl Mod 10
       If J = 1 Then
          'cb
          Porta.0 = 0
          Porta.7 = 0
       Elseif J = 2 Then
          'abged
          Porta.6 = 0
          Porta.7 = 0
          Porta.2 = 0
          Porta.3 = 0
          Porta.1 = 0
       Elseif J = 3 Then
          'abgcd
          Porta.6 = 0
          Porta.7 = 0
          Porta.2 = 0
          Porta.0 = 0
          Porta.1 = 0
       Elseif J = 4 Then
          'fgbc
          Porta.5 = 0
          Porta.2 = 0
          Porta.7 = 0
          Porta.0 = 0
       Elseif J = 5 Then
          'afgcd
          Porta.6 = 0
          Porta.5 = 0
          Porta.2 = 0
          Porta.0 = 0
          Porta.1 = 0
       Elseif J = 6 Then
          'fgecda
          Porta.5 = 0
          Porta.2 = 0
          Porta.3 = 0
          Porta.0 = 0
          Porta.1 = 0
          Porta.6 = 0
       Elseif J = 7 Then
          'abc
          Porta.6 = 0
          Porta.7 = 0
          Porta.0 = 0
       Elseif J = 8 Then
          'alles ausser 4
          Porta.0 = 0
          Porta.1 = 0
          Porta.2 = 0
          Porta.3 = 0
          Porta.5 = 0
          Porta.6 = 0
          Porta.7 = 0
       Elseif J = 9 Then
          Porta.0 = 0
          Porta.1 = 0
          Porta.2 = 0
          Porta.5 = 0
          Porta.6 = 0
          Porta.7 = 0
       Else
          Porta.0 = 0
          Porta.1 = 0
          Porta.3 = 0
          Porta.5 = 0
          Porta.6 = 0
          Porta.7 = 0
       End If
    End Sub
    Man bemerke, dass ich nur 50ms warte. Tatsächlich, wartet der Controller aber knapp unter einer sekunde.

    Benutze ich eine Sekunde, so wartet er ~16 sekunden.

    Woran liegt das?

    Fusebits sind auf standart gelassen und ich verwende kein Quarz.

    Danke schonmal,
    Merew

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112

    Re: Wait wartet über 10x so lang.

    Zitat Zitat von Merew
    $crystal = 16000000

    Fusebits sind auf standart gelassen und ich verwende kein Quarz.
    Warum steht dann in deinem Programm, dass ein 16MHz Quarz angeschlossen ist?
    Stell mal auf 1MHz, das ist meistens der Standard bei Auslieferung.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2005
    Ort
    Bremerhaven (Ziemlich weit nödlich^^)
    Alter
    24
    Beiträge
    100
    Gute frage...

    Hat das Problem gelöst. Danke dir.
    Hat aber sonst gut funktioniert...

    Das dürfte wohl auch erklären, warum es immer ungefähr 16 mal so schnell war.

    Merew

Berechtigungen

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