Forum: Compiler & IDEs Atmel Studio 7, auch der Suche nach CKDIV8


von Günter (Gast)


Lesenswert?

Hallo,

ich habe mir soeben die neueste Version des Atmel Studio 7 installiert, 
welche hier zu finden ist.
Jedoch suche ich die Option die CPU-Frequenz durch 8 zu teilen (CKDIV8), 
was sonst bei den Fuses einzustellen war.

Wo ist das hin? ... oder gab es das beim Mega8 gar nicht?... ich bin 
verwirrt.

von Günter (Gast)


Angehängte Dateien:

Lesenswert?

hier ein Bildschirmabgriff meiner Fuse-Einstellungen (Anhang)

von Frank L. (hermastersvoice)


Lesenswert?

im Datenblatt nachsehen wäre unter deiner Würde?

von holger (Gast)


Lesenswert?

>oder gab es das beim Mega8 gar nicht?.

Die Fuse hat er nicht. Das geht über die CKSEL Fuses.

von TeilerUndHerrscher (Gast)


Lesenswert?

Ich kenne jetzt die Version 7 nicht, würde aber nach den verwendeten 
Abkürzungen CKOPT und SUT_CKSEL gehen und das mal mit dem Handbuch der 
Software und dem Datenblatt vergleichen.

"CK" hat bei Atmel oft irgendwie mit dem Takt zu tun.

Ausserdem ergibt sich aus der Beschreibung der Auswahl bei SUT_CKSEL die 
Möglichkeit, dass das CKDIV8 da mit einbezogen ist und von der GUI dann 
auscodiert wird.

von Günter (Gast)


Lesenswert?

holger schrieb:
>>oder gab es das beim Mega8 gar nicht?.
>
> Die Fuse hat er nicht. Das geht über die CKSEL Fuses.

Das erklärt einiges...

von Günter (Gast)


Lesenswert?

Frank L. schrieb:
> im Datenblatt nachsehen wäre unter deiner Würde?

Willst du jetzt einen Preis für die Antwort?

von TeilerUndHerrscher (Gast)


Lesenswert?

Günter schrieb:
> Frank L. schrieb:
>> im Datenblatt nachsehen wäre unter deiner Würde?
>
> Willst du jetzt einen Preis für die Antwort?

Klar will er den. Der Preis den Du für das Nicht-Nachsehen in Handbuch 
und Datenblatt bekommen hast, ist ein Wanderpokal.

von Günter (Gast)


Lesenswert?

ich habe deshalb gefragt, da ich scheinbar Timing-Probeleme habe.

Woran kann es dann noch liegen, wenn ein delay_ms(200) ca. 2sek. lang 
braucht?

CKDIV8 gibt es nicht, und da der Takt auf 1Mhz int. Osz. eingestellt 
ist, gehe ich davon aus, dass das passt.

von Günter (Gast)


Lesenswert?

1
#define F_CPU 1000000UL
2
#include <util/delay.h>
3
#include <avr/io.h>
4
5
6
int main (void)
7
{
8
  
9
  DDRB=0x01;
10
  
11
  while (1)
12
  {
13
      PORTB|=(1<<PB0);
14
      _delay_ms(200);
15
      PORTB&=~(1<<PB0)
16
      _delay_ms(200);
17
  }
18
  
19
  
20
}

von holger (Gast)


Lesenswert?

>Woran kann es dann noch liegen, wenn ein delay_ms(200) ca. 2sek. lang
>braucht?

Optimierung beim Compiler eingeschaltet?

von Günter (Gast)


Lesenswert?

holger schrieb:
>>Woran kann es dann noch liegen, wenn ein delay_ms(200) ca. 2sek.
> lang
>>braucht?
>
> Optimierung beim Compiler eingeschaltet?

Steht auf Optimize(-01)

von TeilerUndHerrscher (Gast)


Lesenswert?

Hm. Hast Du ein Oszilloskop?

Falls nicht: Auf welche Weise hast Du die tatsächliche Blinkfrequenz 
festgestellt? Es geht nur darum wie genau die Angabe wohl vermutlich 
ist.
Faktor 10 ist eher ungewöhnlich. Zu erwarten wäre eher irgendeine 2-er 
Potenz.

Falls doch: Nimm doch einfach mal die delays raus und miss mit dem 
Oszilloskop den Takt nach. Das müsste irgendwas im 100 Kilohertz-Bereich 
ergeben. Vergleiche das mit dem aus dem Assemblercode ableitbaren Takt.

Falls das wie erwartet ausfällt, liegts am delay. Falls nicht, wird es 
auch schwierig, dann nämlich liegt es vermutlich an der Handhabung 
(Compilierung, Flashen) und die meisten Leute sind bis zum Beweis des 
Gegenteils davon überzeugt, dass sie alles richtig machen. (Diesen 
Fehler mache ich auch hin und wieder).

Es gab nämlich lange Zeit viel hin und her wegen der 
delay-Implementierungen und Anwendung. Ob das tatsächlich noch relevant 
ist, weiß ich nicht, weil ich die Version 7 nicht verwende und nicht 
weiß welche Compiler und Lib-Versionen dazu geliefert werden.
Aber um das zumindest mal grob einschätzen zu können, wäre es gut 
Compiler-Version und die Version der avr-lib zu kennen.

von Pete K. (pete77)


Lesenswert?

>#define F_CPU 1000000UL

Das gehört in das Makefile bzw. die Settings im Studio und NIE in ein .c 
oder .h File.

von TeilerUndHerrscher (Gast)


Lesenswert?

Pete K. schrieb:
>>#define F_CPU 1000000UL
>
> Das gehört in das Makefile bzw. die Settings im Studio und NIE in ein .c
> oder .h File.

Wärst Du so nett und gibst eine Begründung dafür?
Funktioniert es andernfalls garnicht oder ist das eine Stilfrage oder 
geht es um etwas anderes?

von Günter (Gast)


Lesenswert?

TeilerUndHerrscher schrieb:
> Hm. Hast Du ein Oszilloskop?
>
> Falls nicht: Auf welche Weise hast Du die tatsächliche Blinkfrequenz
> festgestellt? Es geht nur darum wie genau die Angabe wohl vermutlich
> ist.
> Faktor 10 ist eher ungewöhnlich. Zu erwarten wäre eher irgendeine 2-er
> Potenz.

Nur pi*Daumen. Ich werde mich morgen mal ein Oszilloskop besorgen bei 
einem Kollegen.


 welche Compiler und Lib-Versionen dazu geliefert werden.
> Aber um das zumindest mal grob einschätzen zu können, wäre es gut
> Compiler-Version und die Version der avr-lib zu kennen.

Kannst du mir eben sagen, wo man das nachsehen kann in Atmel Studio?

von TeilerUndHerrscher (Gast)


Lesenswert?

Au shit. Ich habe ganz furchtbar gepennt. Sorry.

400ms Periode sind ja 2,5Hz. Das ist also ganz richtig so.

Also alles OK so. Kein Fehler.

von TeilerUndHerrscher (Gast)


Lesenswert?

Tja. Jetzt hatte ich gerade einen Hänger.

2,5Hz lassen sich natürlich nicht mit Dauern von 2s in Verbindung 
bringen.


Moment. Ich beantworte gleich Deine Frage. Erstmal eine Tasse Kaffee.

von TeilerUndHerrscher (Gast)


Lesenswert?

Günter schrieb:
> TeilerUndHerrscher schrieb:
>> Hm. Hast Du ein Oszilloskop?
>>
>> Falls nicht: Auf welche Weise hast Du die tatsächliche Blinkfrequenz
>> festgestellt? Es geht nur darum wie genau die Angabe wohl vermutlich
>> ist.
>> Faktor 10 ist eher ungewöhnlich. Zu erwarten wäre eher irgendeine 2-er
>> Potenz.
>
> Nur pi*Daumen. Ich werde mich morgen mal ein Oszilloskop besorgen bei
> einem Kollegen.

Ein Frequenzzähler würde auch reichen.
Da an sich Deine Schätzung nicht in Frage steht, ist das nicht ganz so 
wichtig. Es würde halt noch eine Information mehr geben.

>  welche Compiler und Lib-Versionen dazu geliefert werden.
>> Aber um das zumindest mal grob einschätzen zu können, wäre es gut
>> Compiler-Version und die Version der avr-lib zu kennen.
>
> Kannst du mir eben sagen, wo man das nachsehen kann in Atmel Studio?

Die 7-Version weicht von dem was ich kenne (Version 4) ab. Aber die 
Compilerversion müsstest Du sehen, wenn Du ein "Rebuild" startest.

Die Version der lib müsstest Du vermutlich in den Einstellungen des 
Studios bzw. den Projekteinstellungen als Teil des Pfades oder einer 
Datei sehen. Alternativ kannst Du Dir mal die Dateien in dem 
Library-Pfad anschauen. Vielleicht auch ein README oder sonst ein 
Textfile.

von TeilerUndHerrscher (Gast)


Lesenswert?

Man muss auch sagen, dass der Code selbst und Dein Screenshoot keinen 
Anhaltspunkt geben, warum die Periode so lange ist. An sich sollte das 
gehen.

Hattest Du vorher mal eine Version mit längerer Periodendauer 
geschrieben und getestet? Kann es sein, dass Du versehentlich, das 
falsche hex-file geflasht hast? Vielleicht überprüfst Du das mal.

von Günter (Gast)


Lesenswert?

vielen Dank für die Informationen und die Tipps... ich werde morgen im 
Zuge der Oszilloskop-Mission allem nachgehen und mich zurückmelden.

Genieß den Kaffee, ich wünschte das könnte ich gerade auch :-) Bis 
morgen

von Pete K. (pete77)


Lesenswert?

TeilerUndHerrscher schrieb:
> Pete K. schrieb:
>>>#define F_CPU 1000000UL
>>
>> Das gehört in das Makefile bzw. die Settings im Studio und NIE in ein .c
>> oder .h File.
>
> Wärst Du so nett und gibst eine Begründung dafür?
> Funktioniert es andernfalls garnicht oder ist das eine Stilfrage oder
> geht es um etwas anderes?

Es geht darum, dass ALLE Files mit dem gleichen Wert übersetzt werden. 
Du willst das ja auch nicht in delay.h mit rübernehmen und in andere 
Files.

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.