mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Simulation in Bascom


Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ThomasB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Flix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 =)

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)?

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*hochschieb
Tashunka Witko?
Herr Dannegger?
hat einer da eine antwort drauf?

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.