Simulator geht nicht?

  • 1
  • 2
  • Page 1 of 2
Frager
 
Avatar
 
Subject:

Simulator geht nicht?

 · 
Posted: 15.11.2011 - 17:06  ·  #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
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Simulator geht nicht?

 · 
Posted: 15.11.2011 - 21:36  ·  #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
 
Subject:

Re: Simulator geht nicht?

 · 
Posted: 16.11.2011 - 17:00  ·  #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
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Simulator geht nicht?

 · 
Posted: 16.11.2011 - 17:41  ·  #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
 
Subject:

Re: Simulator geht nicht?

 · 
Posted: 16.11.2011 - 23:49  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Simulator geht nicht?

 · 
Posted: 17.11.2011 - 12:14  ·  #6
Hallo Frager,

damit tuts!

rolf
Attachments
Simulator geht nicht?
Filename: switchport.JPG
Filesize: 32.43 KB
Title:
Download counter: 44
Frager
 
Avatar
 
Subject:

Re: Simulator geht nicht?

 · 
Posted: 24.11.2011 - 08:07  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Simulator geht nicht?

 · 
Posted: 24.11.2011 - 15:24  ·  #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
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   130   145 · Page-Gen-Time: 0.021565s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI