Simulator geht nicht?

  • 1
  • 2
  • Seite 1 von 2
Frager
 
Avatar
 
Betreff:

Simulator geht nicht?

 · 
Gepostet: 15.11.2011 - 17:06 Uhr  ·  #1
Hallo zusammen,

ich habe mir die kostenlose Software AVRco (bis 4kB) heruntergeladen und gleich losgelegt.

Allerdings funktionieren meine Programme im Simulator nicht.

Dann habe ich das Demo-Programm TutorDemo geladen und kompilieren, den Simulator gestartet und mit der F7-Taste das Programm durchgearbeitet dabei auch den SwitchPort1 betätigt.
Aber das Programm springt nie in die If-Anweisung.

Was mach ich falsch?
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 15.11.2011 - 21:36 Uhr  ·  #2
Hallo Heiko,

F7 führt ein einziges Pascal Statement aus. Jeder Druck auf F7 "dauert in der Realität"
und im SIM einige Hundert Nanosekunden.
Der Systick, der die Entprellung (und vieles mehr) erledigt, kommt aber erst nach x ms (!)
(auch im SIM!) zum ersten Mal dran.

So wird das nichts, ausser Du drückst einige 100.000 Mal F7 bis das Input_Raise erkannt wird.
Setze in TutorDemo einen Breakpoint auf die Zeile mit dem Case-Statement, lass den
Simulator frei laufen und bediene dann den Switchport.

HTH
Gunter
Frager
 
Avatar
 
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 16.11.2011 - 17:00 Uhr  ·  #3
Hi Gunther,

Danke für die Erläuterung => die Sache funktioniert jetzt!

Habe nun ein kleines Programm geschrieben, jedoch keinen SwitchPort importiert. Sondern ich möchte direkt mit dem PIN schalten (im Port-Fenster des SIM stelle ich direkt auf 1-Signal). Die Stoppmarke habe ich bei der Addition gesetzt. Aber leider gehts nichts. Das Programm kommt auch nicht in einen Loop. Es ertönt immer ein Peep.
Mache natürlich was falsch. Könnt ihr mir helfen?
Sorry, wegen den einfachen Fragen, bin aber neu in der µC Programmierung.

...
begin
PortA := %00000001;
DDRA := %00000000;

EnableInts;
loop
if PortA = %00000001
Then
w:= w + 1;
endif;
endloop;

end SchaltenMitPin.
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 16.11.2011 - 17:41 Uhr  ·  #4
Hi,

um einen Input zu lesen benutzt man das PINx Register.
PORTx wird benutzt um einen Ausgang zu schreiben oder
den internen Pullup (bei einem Input Pin) einzuschalten.
Ist im Prozessor Manual bei den IO-Ports beschrieben!

Gruß
Gunter
Frager
 
Avatar
 
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 16.11.2011 - 23:49 Uhr  ·  #5
Danke Gunter,

jetzt gehts, aber der Programm-Loop im SIM läuft nicht.
Habe den SwitchPort2 importieren es nochmals mit der Flanken-Funktion "Inp_Raise2" versucht aber auch da kommt es zu keinem Loop im SIM. Muss ich noch irgendetwas importieren um dem Loop zum Laufen zubringen.
Folgend das Mini-Programm. Wer kann mir einen Tipp geben?

loop

Eingangsbyte:=PinA;

if Inp_Raise2(0) // Eingangsbyte = %00000001
then
w:= w + 1;
endif;

endloop;
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 17.11.2011 - 12:14 Uhr  ·  #6
Hallo Frager,

damit tuts!

rolf
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Frager
 
Avatar
 
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 24.11.2011 - 08:07 Uhr  ·  #7
Servus Rolf,

leider verstehe ich nicht was Du mit dem Bild meinst.

Ich benutze ja dieses Shwitchport-Feld um zu schalten.

Aber beim starten des Programms läuft der SIM bis zum Loop-Ende und bleibt stehen.

Dann kann ich mit der F7-Taste zwar weiter takten aber das bringt ja nichts, so wie mir Gunter geschrieben hat.

Ich Benutze dieses Programm

loop

if Inp_Raise2(0)
then
w:= w + 1;
endif;

endloop;

Vielen Dank im Voraus!
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Simulator geht nicht?

 · 
Gepostet: 24.11.2011 - 15:24 Uhr  ·  #8
Hallo Frager,
dieses Programm kann nicht bei endloop stehen bleiben!
Einen Breakpoint auf die Zeile w:= w + 1 setzen, dann run, Dauerlauf.
Wenn jetzt im Switchport Feld das bit 0 geändert wird, muss das Programm auf den Breakpoint auflaufen.

rolf
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   129   143 · Page-Gen-Time: 0.042252s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI