Forum: Mikrocontroller und Digitale Elektronik [ATmega8] eigenartiges Simulations-Verhalten im AVR-Studio


von vlad_tepesch (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#include <util/delay_basic.h>
3
4
5
void showByte(uint8_t byte)
6
{
7
  PORTD = byte &  0x0f;
8
  PORTC = byte >> 4;
9
}
10
 
11
int main (void) { 
12
   uint16_t i;
13
14
   DDRC  = 0xff;
15
   DDRD  = 0xff;
16
   PORTC = 0;
17
   PORTD = 0;
18
 
19
   for(i=0;i<2000;++i) {
20
     _delay_loop_2(0);
21
     showByte((uint8_t)i);
22
   }
23
 
24
25
   return 0;         
26
}

Hi,
Im simulator tut sich mit obigen Code gar nix an port C
Dafür verändert sich mit ausführen der 2. Zeile das PIN register von 
Port D?


kann mir das jemand erklären?
MfG,
vlad

von Thomas W. (thomas100)


Lesenswert?

Schalte mal die Compileroptimierung aus.
Dann könnte die Veränderung des PIN-Registers weg sein.

"_delay_loop_2(0)" kann im Simulator einige Zeit in Anspruch nehmen.
Versuchs mal mit einer kürzeren Zeit.


Gruß
Thomas

von Stefan E. (sternst)


Lesenswert?

Du hast wahrscheinlich entweder beim Compilieren oder im Simulator den 
falschen µC eingestellt.

von vlad_tepesch (Gast)


Lesenswert?

die änderung des Optimierung verändert nix.
oder ist es normal, dass das PIN register dem Dataregister folgt, nach 
einem Frame (Wenn ich das richtig verstanden habe, schaltet der outport 
ja auch erst etwas später)

von vlad_tepesch (Gast)


Lesenswert?

@Stefan Ernst
Das stimmt alles.
und selbst wenn ich einen anderen µC ausgewählt hab, dann sollte er ja 
den emulieren, so dass Code uns Simulator auf jeden Fall zu sammen 
passen.

von Stefan E. (sternst)


Lesenswert?

vlad_tepesch wrote:

> und selbst wenn ich einen anderen µC ausgewählt hab, dann sollte er ja
> den emulieren, so dass Code uns Simulator auf jeden Fall zu sammen
> passen.

Nein, eben nicht. Es ist möglich, im selben Projekt für Übersetzen und 
Simulieren jeweils einen anderen µC einzustellen, und dann passt es eben 
nicht mehr zusammen.

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
Noch kein Account? Hier anmelden.