Atmega2560 Programm zu langsam

OP #2008355
Lesenswert?
• ▲
▼
Hallo,

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

3
int main(void)
4

5
{
6

7
  DDRA = 0b11111111;
8
  DDRL = 0b11111111;
9
  TCCR5A = 0b10100010;  //PWM
10
  TCCR5B = 0b00011001;  //PWM
11
  TCCR5C = 0b00000000;  //PWM
12
  ICR5   = 255;         // Zähler auf den Endwert 255 gestellt
13
  OCR5A = 10;        // PINL3 
14
  OCR5B = 50;        // PINL4
15

16
  int i = 0;
17
  while(1)
18
  {
19
  PORTA= i;
20
  i++;
21
  }
22

23
return 0;
24
}

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?
#2008384
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.
Persönliche Seite #2008403
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.
#2008407
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.