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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren