www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega2560 Programm zu langsam


Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Programm auf einen Atmega 2560 übertragen.
 #include <avr/io.h>

int main(void)

{

  DDRA = 0b11111111;
  DDRL = 0b11111111;
  TCCR5A = 0b10100010;  //PWM
  TCCR5B = 0b00011001;  //PWM
  TCCR5C = 0b00000000;  //PWM
  ICR5   = 255;         // Zähler auf den Endwert 255 gestellt
  OCR5A = 10;        // PINL3 
  OCR5B = 50;        // PINL4

  int i = 0;
  while(1)
  {
  PORTA= i;
  i++;
  }

return 0;
}

Der Atmega wird mit einem 16Mhz Takt betrieben.
Die Periodendauer beträgt 62,5ns.
Laut Simulation dauert die while-Schleife 4Takte.
Der Pin0 am PortA müsste also alle 250ns umgeschaltet werden.
--> f=2Mhz

Leider beträgt die Frequenz 250Khz. Sie ist also um den Faktor 8 zu 
langsam.

Die PWM ist auch um den Faktor 8 zu langsam.

Gibt es vielleicht einen internen Vorteiler, welcher die Taktfrequenz 
runterteilt?

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Die PWM ist auch um den Faktor 8 zu langsam.

CKDIV8 Fuse

MfG Spess

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Faktor 8 sieht immer danach aus, daß in den Fuses das entsprechende 
Häkchen gesetzt ist.

mfg.

Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Ihr zwei.

Habe gerade das selbe im Datenblatt gelesen^^.

War die CKDIV8 Fuse.

Wobei ich mich Frage, warum das Standart ist.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Wobei ich mich Frage, warum das Standart ist.

Da musst du Atmel fragen.

MfG Spess

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. R. schrieb:
> Wobei ich mich Frage, warum das Standart ist.

Ganz einfach: Wenn jemand den Prozessor in einer Schaltung mit 1.8V 
betreibt, dann könnte er ihn möglicherweise gar nicht in der Schaltung 
programmieren, weil die Betriebsspannung für 8MHz (Interner Clock) dann 
zu niedrig wäre. Ausserdem wird man ohnehin (fast) immer die Fuses 
verstellen müssen, wenn man etwas entwickelt, da spielt es dann auch 
keine Rolle mehr, ob das Häkchen noch eben entfernt wird.

Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt logisch danke.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spess53 schrieb:
> Hi
>
>>Wobei ich mich Frage, warum das Standart ist.
>
> Da musst du Atmel fragen.
>
> MfG Spess

Nö das steht sogar im Datenblatt:

>> 8.2.1 Default Clock Source
>>  The device is shipped with internal RC oscillator
>>  at 8.0 MHz and with the fuse CKDIV8 programmed,
>>  resulting in 1.0 MHz system clock. The startup time
>>  is set to maximum and time-out period enabled.
>>  (CKSEL = "0010", SUT = "10", CKDIV8 = "0").
>> The default setting ensures that all users can make
>> their desired clock source setting using *any*
>> available programming interface.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Davon abgesehen kann man den Systemtaktvorteiler auch per Software 
einstellen. Die CKDIV8-Fuse wirkt lediglich auf die Voreinstellung. Es 
gibt also keinen zwingenden Grund, die CKDIV8-Fuse zu verändern.

...

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. R. schrieb:
> Wobei ich mich Frage, warum das Standart ist.

Weil die Controller für eine Spannung von 1,8 bis 5,5, Volt ausgelegt 
sind.
Bei der niedrigsten Spannung aber nur mit reduziertem Takt laufen.
Würde man die mit hohem Takt ausliefern, und das sind beim Attiny 45 
immerhin 16,5 MHz, würden sie mit 1,8V gar nicht oder fehlerhaft laufen.
Deshalb werden die mit 1 MHz ausgeliefert. Damit läuft es immer.

OK. der 2560 läuft sowieso erst ab 4,5 V. Aber alle sind eben gleich 
eingestellt. Und den Fehler mit der Clock-Fuse hast du heute auch 
zweimal gemacht: Das erste und letzte Mal. Ich denke, damit kann man 
leben.

mfg.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.