Hallo Männers! Ich habe das PRG geschrieben, um einen GENAUEN 1 Hz Impuls zu erhalten. Wenn ich es in den Chip lade, scheint es auch zu gehen. ABER: Wenn ich es in Bascom simuliere, muss ich mich 2 mal rasieren, bevor ein Pegelwechsel an PB2 stattfindet. FRAGE: Was kann man tun, damit die Simulation in Echtzeit läuft?? ....und sind meine Gedankengänge richtig, wenn ich die Quarzfrequenz durch 256 teile, müssten es dann als Takt für Timer1 15625 Hz sein. Dann lade ich den Timer mit 49911 vor, damit er ab da bis 65536 hochzählt und dann den Interrupt auslöst. Das wäre dann nochmal eine Teilung durch 15625 und das eine Hertz wäre fertig. Ist das richtig so?? Mit freundlichen Grüßen Paul 'Das Programm soll 1Hz-Impulse an PB2 erzeugen '--------------------------------------------------------- $Regfile = "2313def.dat" 'AT90S2313-Deklarationen $crystal = 4000000 'Quarz: 4 MHz Ddrb.2 = 1 'Pin PB2 auf Ausgang setzen Dim fToggle As Bit Dim W As Word On Timer1 Ontimer1 'Interrupt-Routine für Timer1Overflow Config Timer1 = Timer , Prescale = 256 'Takt: Quarz/256 Enable Timer1 'Timer1-Overflow-Interrupt einschalten Enable Interrupts 'Interrupts global zulassen '--------------------------------------------------------- Do 'Hauptschleife Loop '--------------------------------------------------------- Ontimer1: 'Interrupt-Routine Timer1 = 49911 'Timer 1 voreinstellen W = Timer1 fToggle = Not fToggle 'Toggle-Bit invertieren Portb.2 = Ftoggle 'Leuchtidiot als Anzeige Return
hi paul: der simu im bascom avr compiler,ist kein echtzeitsimulator,habe´s auch mal versucht,geht irgenwie nicht. ..... Ontimer1: Tcnt1l = &HF7 Tcnt1h = &HC2 Toggle Portb.2 Return Stimmt schon timer1 mit 49911 laden,(HEX=C2F7) ThomasB
Hallo Thomas! Danke für die Antwort. Ich freue mich, dass ich den Timer richtig erwischt habe. Ich baue mittlerweile schon jahrelang Elektronikkram, aber noch nichts mit Mikrokontrollern. Da muss ich mich erst mal ein wenig freischwimmen. MfG Paul
Hallo, BASCOM kann nicht in Echtzeit simulieren.... Die abgelaufene Zeit kann man sehen, wenn man die Maus während eines Simulationslaufes in der Statuszeile hin und her bewegt. Mit der rechten Maustaste kann der "Zeitzähler" gelöscht werden. Also sinnvoll Breakpoints setzen, "Zeitzähler" löschen und so die Laufzeit messen ... mfg Kalle
Danke Dir Kalle! Das klappt einigermassen, wie Du es beschrieben hast. Am besten ist es wohl, wenn man denkt, das PrG ist fertig, es in NATURA auszuprobieren. ...und bei dem Wetter kann man ja auch mal einen Chip brennen! :-)))) MfG Paul
ein kleiner verbesserungsvorschlage noch: nimm alles unnötige aus der timer routine raus!!! bereits nach weniger als einer minute konnte ich eine leichte ungleichheit zwischen dem ticken meines weckers und der led feststellen :D Ontimer1: 'Interrupt-Routine Portb.2 = Not Portb.2 'LED Port invertieren Timer1 = 49911 'Timer 1 voreinstellen Return das wichtigste kommt immer zuerst, danach hat man dann zeit fürs voreinstellen des timers mfg Flix =)
bedeutet dies, daß ich bei recht viel quelltext im timerbereich eine zeitverschiebung erlebe? nur wie soll ich dann mit bascom in einem bestimmten zeitraum (von 1ms hin bis zu 0,1s - je nach anwendung und gebrauch) die pins abfragen und anhand des status (0 oder 1) dann weiterverfahren (led blinken lassen, optokoppler etc)?
*hochschieb Tashunka Witko? Herr Dannegger? hat einer da eine antwort drauf?
Hallo Paul, um Deine Hautirritationen beim Rasieren in Grenzen zu halten kannst Du ein $sim an den Anfang Deines Programms setzen und nochmal compilieren. Der Programmdurchlauf beschleunigt sich in der Simulation, hat aber mit "Echtzeit" nichts zu tun. Wait Befehle werden beispielsweise nicht korrekt simuliert. Nicht vergessen vor dem Brennen $sim wieder zu entfernen. Gruß Micha
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.