Forum: Mikrocontroller und Digitale Elektronik Im AVR Studio 16MHz simulieren


von Sebastian B. (m0nkey)


Lesenswert?

Hi,
da ich in meinem Layout mit einem externen Quarz von 16MHz und dem 
ATMega16 arbeite, würde ich das auch gerne simulieren.
Das ist vorallem wichtig für das einstellen und berechnen der Timer.

Es geht zwar unter den Simulator Optionen eine Frequenz von 16MHz per 
Hand einzustellen. (16MHz steht nicht im Dropdown Menü) Leider scheint 
es aber, zumindest auf die Timer in der Simualtion, keine Auswirkung zu 
haben.
Bei einem Vorteiler von 256 einem Takt von 16MHz sollten 3125 Takte 
genau 50ms sein. Leider sagt der Simulator aber das es ca. 1sec ist, was 
einem Takt von 8MHz entspechen würde.

Außerdem würde mich noch intressieren was ich bei den Fusebits 
einstellen muss für einen 16MHz Quarz, denn ich habe anscheinden die 
Auswahl zwischen low-, middle- und high-freuqenzy crystal.

Gruß Sebastian

von Michael U. (amiga)


Lesenswert?

Hallo,

> Bei einem Vorteiler von 256 einem Takt von 16MHz sollten 3125 Takte
> genau 50ms sein. Leider sagt der Simulator aber das es ca. 1sec ist, was
> einem Takt von 8MHz entspechen würde.
Passt wohl schon rein rechnerisch nicht, wenn es bei 16MHz 50ms sein 
sollen wären es bei 8MHz 100ms aber nicht 1s...
>
> Außerdem würde mich noch intressieren was ich bei den Fusebits
> einstellen muss für einen 16MHz Quarz, denn ich habe anscheinden die
> Auswahl zwischen low-, middle- und high-freuqenzy crystal.

Das Datenblatt des Mega gibt dazu brauchbare Auskünfte, was Atmel mit 
low- middle oder high-frequency meint. :-)

Gruß aus Berlin
Michael

von Sebastian B. (m0nkey)


Lesenswert?

Sry, ich meinte natürlich 100ms.

Also aus dem Datenblatt finde ich nicht direkt was dazu, aber ich hab 
mir mit google, büchern und zusammen mit dem datenblatt mir das jetzt so 
vorgestellt.

Ich nutze einen 16MHz externen Quars, also sollte ich CKOPT auf 0 
setzten bzw bei AVR Studio einen Hackan rein machen. CKSEL0 zuammen mit 
SUT0 und SUT1 geben die Startzeit und Zusatzdelay an für 16K CK und 65ms 
wäre das dann das Bitmuster 111, allerdings denke ich nicht das ich noch 
zustätzlich 65ms brauche, 4ms würden auch reichen, was dann dem 
Bitmuster 110 entspricht bei CKSEL0 1.Bit, SUT0 2.Bit und SUT1. 3. Bit. 
Ich weiß das die im LOW Fusebit Register allerdings anders angeordnet 
sind.

Ich denke mir jetzt das CLKSEL3 bis CLKSEL1 für die Unterscheidnung von 
low-, middle- und high-frequenzy crystals ist. Allerdings steht im 
Datenblatt nichts dazu wie sich das für CKOPT0 verhält sondern nur für 
CKOPT 1.

Für meinen 16Mhz Quarz mit 16K CK und 4ms Zusatzdelay wäre das dann das 
LOW-Fusebit Muster 0b00101111, wobei die Reihenfolge der Bits von rechts 
nach links CLKSEL0 bis CLKSEL3 ist und dann die Bits SUT0 und SUT1 
kommen.

Gruß Sebastian

von Sebastian B. (m0nkey)


Lesenswert?

push

weiß mir da keiner zu helfen, hab schon diverse Threads durch gelesen.

Gruß Sebastian

von Sascha (Gast)


Lesenswert?

Hallo,

also bei mir (AVR Studio 4.13 SP2) wird der Mega16 auch mit Fequenzen 
oberhalb von 8MHz richtig simuliert. Außerdem wird die von Hand 
eingegebene Fequenz ins DropDown-Feld aufgenommen.

Über die Startverzögerung würde ich mir nicht den Kopf zerbrechen, es 
sei denn du hast die paar Millisekunden nicht. Hauptsache er steht auf 
'ext./High'.

Sascha

von spess53 (Gast)


Lesenswert?

Hi

So richtig verstehe ich dein Problem nicht. Wenn du AVR-Studio benutzt, 
brauchst du die einzelnen Bits nicht. Der 'Programmer' des AVR-Studios 
lässt sich übrigens auch Offline (ohne angeschlossenen Programmer) 
öffnen.
Da kannst du mit den Einstellungen experementieren. Die Werte für High- 
und Lowfusebyte werden angezeigt.

MfG Spess

von Sebastian B. (m0nkey)


Lesenswert?

Das sind 2 getrennte Probleme, obwohl ich im Simulator 16Mhz eingestellt 
habe, dauert der Interrupt länger als errechnet.

16Mhz - Teiler von 256 - 3125 Takte - 50ms
leider dauert der Interrupt im Simualtor 100ms.

Das zweite Problem ist, daß mir geraten wurde im Datenblatt des ATMega16 
nachzusehen was es mit High-,Middle- und Low-Freq Einstellungen auf sich 
hat. Ich hab vermutet CLKSEL3 bis CLKSEL1 für diese Einstellung 
zuständig ist, hab aber leider da nicht im Datenblatt gefunden, nur für 
CKOPT 1 und bei mir es es ja CKOPT 0.

Gruß Sebastian

von Thilo M. (Gast)


Lesenswert?

Beim mega644 steht im Prog-Fenster der Fuses sogar die Frequenz mit 
drin!
0..3MHz Low, 3..8MHz middle und >8MHz high.

Ich benutze bei 16MHz auch 'high' mit 16CK + 64ms.

von spess53 (Gast)


Lesenswert?

Hi

>Beim mega644 steht im Prog-Fenster der Fuses sogar die Frequenz mit
>drin!

Die Texte für das Prog-Fenster sind in den XML-Dateien im Ordner 
'Partdescriptionfiles' enthalten. Leider ist die 'Qualität' dieser Files 
nicht einheitlich. Da der ATMega16 wahrscheinlich schon auf der Liste 
der potentiellen Abschusskandidaten steht wird sich daran auch nichts 
ändern.

MfG Spess

von Michael U. (amiga)


Lesenswert?

Hallo,

@Sebastian Baier: verspätete Antwort...
Deine Analyse der Fuses vom 11.12.2008 14:41 ist genau richtig.

Gruß aus Berlin
Michael

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.