- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Simulation dauert extrem lang! wiso?

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Anzeige

    Praxistest und DIY Projekte
    probier mal statt
    Code:
    LCD Timer1
    das hier zu schreiben:
    Code:
    LCD STR(Timer1)
    Kann evtl sein, dass er bei LCD den Timerwert als Ascii-Code interpretiert und dazu das Zeichen ausgibt. Mit dem STR wird der Wert so wie er ist als String ausgegeben. Wenn dass nicht geht, müsste der Umweg über
    Code:
    text = STR(Timer1)
    LCD text
    laufen. Wobei text natürlich ne Stringvariable mit ausreichender Länge sein muss. (Bascom tut sich oft schwer, mehrere Schritte auf einmal zu machen)
    #ifndef MfG
    #define MfG

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    geht ebenfalls nich.
    Ich habe es mit integer und word probiert. geht trotzdem nich

    Code:
    $regfile "m8def.dat"
    $crystal = 7000000
    $sim
    Config Timer1 = Timer , Prescale = 1
    Config Int0 = Rising
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
    
    Enable Interrupts
    Enable Int0
    On Int0 Sprung:
    Config Lcd = 16 * 2
    
    Config Portd.1 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portd.4 = Output
    
    Dim Text As Word
    Text = Timer1
    
    
    Cls
    Start Timer1
    Do
    Loop
    
    
    
    Sprung:
    
    LCD text
    
    Timer1 = 0
    Return

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Naja die Zuweisung Text = Timer1 muss auch unmittelbar vor der Ausgabe erfolgen, sonst ändert der Wert sich nie.
    Falls du das Programm direkt auf nem AVR testest und nicht im Simulator, muss die $sim wieder raus.
    #ifndef MfG
    #define MfG

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    also jetzt weis ich gar nich mehr weiter!!

    Zuerst ging es und dann kommen 5 zahlen, dann vier drei, zwei, eins null und dann gar nich mehr. ich weis nich was jetzt schon wieder los is.

    Code:
    $regfile "m8def.dat"
    $crystal = 7000000
    $sim
    Config Timer1 = Timer , Prescale = 1
    Config Int0 = Rising
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
    
    Enable Interrupts
    Enable Int0
    On Int0 Sprung:
    Config Lcd = 16 * 2
    
    Config Portd.1 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portd.4 = Output
    Dim Text As Word
    
    
    
    
    Cls
    Start Timer1
    Do
    Loop
    
    
    
    Sprung:
    Cls
    Text = Timer1
    Lcd Text
    
    Timer1 = 0
    
    Return

  5. #15
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    komisch auf einmal läuft es wieder mit dem Grundprog. Vielen Dank für die tolle Hilfe
    Code:
    $regfile "m8def.dat"
    $crystal = 7000000
    $sim
    Config Timer1 = Timer , Prescale = 1
    Config Int0 = Rising
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
    Enable Timer1
    Enable Interrupts
    Enable Int0
    On Int0 Sprung:
    Config Lcd = 16 * 2
    
    Config Portd.1 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portd.4 = Output
    
    
    
    
    
    Start Timer1
    Cls
    Do
    Loop
    
    
    
    Sprung:
    Cls
    
    
    Lcd Timer1
    Timer1 = 0
    
    Return

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Bewegen sich diese Zahlen im Bereich von 0 - 65535?
    Ist Crystal wirklich 7MHz? Vorher warens noch 8.
    Hinter "On Int0 Sprung:" ist der Doppelpunkt zu viel.

    Hm also rein von der Programmlogik her sollt es doch so sein, dass das Display die Zeit zwischen 2 Tastendrücken anzeigt.
    Und von der Programmierung her sollts auch gehen.

    Wo jetzt noch das Problem liegen kann, wäre beim Taster/Schalter. Wie sieht denn die Beschaltung aus? Hab da den Verdacht, dass der Taster nicht entprellt ist. D.h. du drückst drauf, der Kontakt prellt und löst damit mehrere Interrupts hintereinander aus. Da müsste man das ganze also noch entprellen. Das könnte man per Hardware (ergibt aber ne Verzögerung) oder per Software lösen, was aber eine Art "Refraktärzeit" nach sich zieht, also einen Zeitraum nach einer Auslösung, wo keine erneute Auslösung erkannt wird.

    Du kannst ja mal ein zweites Programm so bauen, dass "Sprung" eine Variable hochzählt und die Variable mal anzeigen lassen. Wenn du 1x auf den Taster drückst, dürfte die Variable auch nur um 1 hochzählen.
    #ifndef MfG
    #define MfG

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Na dann passts ja *g*
    Also wenns doch noch Probleme gibt, einfach melden.
    #ifndef MfG
    #define MfG

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    ich mache das nich mit n taster, sondern greife ein pwm signal vom empfänger eines Empfängers vom Modellbau ab. Deswegen brauche ich einen so hohen timer
    Code:
    $regfile "m8def.dat"
    $crystal = 8000000
    
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    
    Config Timer1 = Timer , Prescale = 1
    
    Config Int0 = Rising
    Enable Interrupts
    Enable Int0
    On Int0 Sprung:
    
    Config Portd.1 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portd.4 = Output
    
    
    
    
    
    Start Timer1
    Cls
    Do
    Loop
    
    
    
    Sprung:
    Cls
    
    
    Lcd Timer1
    Timer1 = 0
    
    Return

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen