Attiny13 PWM Frequenz problem

Gast #3492926
Lesenswert?

teste gerade ein wenig die pwm einstellungen von meinem Attiny13A.
habe dafür folgenden Code:
1
 #include <avr/io.h>
2
 #include <util/delay.h>
3

4

5
int main(void)
6
 {
7
 TCCR0A = (1<<WGM01)|(1<<WGM00)|(1<<COM0A1)|(1<<COM0A0);          // invertierte 8-Bit Fast PWM an OC0A
8
 TCCR0B = (1<<CS00);             // precaler=1
9

10

11
 
12
DDRB |= (1<<PB0);           // OC0A an PB 0
13
 
14
while(1) {
15
 OCR0A=150;
16

17
return 0;
18
 }
19

20

21
 }

ich verwende den internen clock mit 9,6mhz und jetzt sollte eigentlich 
eine pwm freqeunz von 37,5khz rauskommen. allerdings bekomme ich bei 
einer messung mit dem Oszi nur knapp 33,8 khz raus. das sind immerhin 
4khz differenz.

die CLKDIV8 fuse habe ich bereits deaktiviert. ansonsten fällt mir 
nichts mehr ein was ich machen kann.


hab ich etwas vergessen bzw. nicht durchdacht?
Gast #3492988
Lesenswert?

Klar läuft das Ding, du weist blos nicht wo und was es anrichtet. Wie 
und warum sollte er stoppen. Das ist ein µC und kein Computer. Was auch 
immer nach dem Return im Flash steht wird einfach abgearbeitet. Kannst 
es ja durch den Simulator jagen wenn du mir nicht glaubst.

>du Schlauberger.

Ganz schön dreist für jemanden der keine Ahnung hat.
Gast #3492999
Lesenswert?

danke auf jeden fall an sudo und spess53

so wie es scheint lässt sich diese ungenauigkeit durch toleranzen des 
Oscillators begründen.
beschreiben des calibration bytes scheint abhilfe zu schaffen, wobei mir 
nicht klar ist wie groß die verbesserung dann ist.

eine andere alternative wäre dann wohl ein externer quarz oder?
#3493010
Lesenswert?

Sudo schrieb:
> Klar läuft das Ding, du weist blos nicht wo und was es anrichtet. Wie
> und warum sollte er stoppen. Das ist ein µC und kein Computer. Was auch
> immer nach dem Return im Flash steht wird einfach abgearbeitet. Kannst
> es ja durch den Simulator jagen wenn du mir nicht glaubst.
>
>>du Schlauberger.
>
> Ganz schön dreist für jemanden der keine Ahnung hat.
Halt dich zurück Schlauberger.

Zufällig läuft der Timer noch. Trotzdem lässt man so eine Scheisse da 
nicht stehen.

mfg.
Gast #3493034
Lesenswert?

Das hat nichts mit Zufällig zu tun. Der Timer läuft so lange bis ein 
Reset auftritt, der µC in den passenden Sleep geht oder das Register 
geändert wird.
Deine Anmerkung mit den return war richtig, aber definitiv nicht die 
Antwort auf seine Frage oder hilfreich bei der Lösung seines Problems.

Wenn du Halbwahrheiten verbreitest von wegen
>Das Teil läuft überhaupt nicht
brauchst du nicht meckern nur weil dir jemand widerspricht.
#3493089
Lesenswert?

Dex schrieb:
> eine andere alternative wäre dann wohl ein externer quarz oder?

Du solltest mal anfangen, Datenblätter zu lesen. Dann würdest Du 
vielleicht merken, dass der ATTiny13 nicht für externen Quarz vorgesehen 
ist. Du könntest zwar einen externen Takt zuführen, aber das wird Dein 
Problem nicht lösen. Willst Du Präzision, dann musst Du schon etwas 
Anderes als den ATTiny13 nehmen... ;-)

...
Gast #3495032
Lesenswert?

Hannes Lux schrieb:
> Dex schrieb:
>> eine andere alternative wäre dann wohl ein externer quarz oder?
>
> Du solltest mal anfangen, Datenblätter zu lesen. Dann würdest Du
> vielleicht merken, dass der ATTiny13 nicht für externen Quarz vorgesehen
> ist. Du könntest zwar einen externen Takt zuführen, aber das wird Dein
> Problem nicht lösen. Willst Du Präzision, dann musst Du schon etwas
> Anderes als den ATTiny13 nehmen... ;-)
>
> ...

ich habe kein problem zu lösen ;-). Das mache ich aus reiner neugier.
Mich würde schon interessieren wieso ein externer Clk das problem nicht 
lösen würde. Die Option hat der attiny ja, also bitte klär mich auf.

mfg
#3495149
Lesenswert?

Dex schrieb:
> Mich würde schon interessieren wieso ein externer Clk das problem nicht
> lösen würde. Die Option hat der attiny ja, also bitte klär mich auf.

Ein externer Takt würde den Tiny13 genauer klappern lassen. Ein Externer 
Quarz ist aber etwas völlig Anderes als ein externer Takt.

Dex schrieb:
> eine andere alternative wäre dann wohl ein externer quarz oder?

Und externen Quarz unterstützt der Tiny13 (als einer von sehr wenigen) 
nunmal leider nicht.

Und ehe es zur Haarspalterei kommt, solltest Du die Kapitel "Clock 
Sources" der Datenblätter von Tiny13 und z.B. Tiny2313 (oder einem 
anderen AVR, der mit Quarz arbeiten kann) vergleichen.

...
(Firma: guloshop.de) #3495195
Lesenswert?

Hannes Lux schrieb:
> Und ehe es zur Haarspalterei kommt, ...

Und ehe noch jemand anders spaltet:  ;-)
Bei den AVR-Mikrocontrollern ist ein Quarz immer etwas Externes, einen 
internen gibt es da nicht.

Hast du dir schon mal überlegt, vom ATtiny13 auf einen ATtiny85 
umzusteigen?
Gleiches Gehäuse, gleiche Anschlussbelegung, aber mehr Speicherplatz, 
bessere Ausstattung und vor allem mit der Möglichkeit, einen Quarz 
anzuschließen.
Gast #3495196
Lesenswert?

Dex schrieb:
> Thomas Eckmann schrieb:
>> Rück das vernünftig ein, dann siehst du sofort, was da schief läuft:
>> while(1)
>> {
>>   OCR0A = 150;
>>   return 0;
>> }
>>
>> mfg.
>
> und was ist es?

Sicher nicht mit Absicht so codiert, aber: (ich nehme mal GCC an)
Nach dem return(0) geht's zurück in die crt0, wo _exit() gerufen wird, 
was wiederum die Interrupts sperrt, die hier auch gar nicht benutzt 
werden, und dann in einer Endlosschleife auf Reset/Spannungsausfall 
wartet. Der Timer läuft natürlich weiter und bedient die Ports wie 
konfiguriert. Also sicher nicht so geplant, aber nicht wirklich falsch.
#3495224
Lesenswert?

Markus Weber schrieb:
> Hannes Lux schrieb:
>> Und ehe es zur Haarspalterei kommt, ...

Da Du mich ansprichst:

>
> Und ehe noch jemand anders spaltet:  ;-)
> Bei den AVR-Mikrocontrollern ist ein Quarz immer etwas Externes, einen
> internen gibt es da nicht.

Ja, das ist allgemein bekannt.

>
> Hast du dir schon mal überlegt, vom ATtiny13 auf einen ATtiny85
> umzusteigen?

Wieso umsteigen? Beide haben ihre Berechtigung, genauso wie die anderen 
AVRs auch. Für 'nen Servo-Controller, der z.B. auf ein H/L-Signal einen 
Gartenbahnlok-Entkuppler betätigt, reicht mir der Tiny13, für ein 
Soundmodul für Dampfloks (Grundgeräusch, Kolbenschläge, Pfeife, Glocke) 
oder Dieselloks (Anlasser, Motor, Horn, Glocke) nehme ich dann den 
Tiny85. Wobei mir ein ATTiny1285 oder 2565 (also ein ATTiny mit 
Highspeed-PWM über PLL und verdammt viel Flash oder EEP) lieber wäre, 
weil da mehr Sound-Bytes reinpassen würden. Aber man kann nicht alles 
haben... ;-)

> Gleiches Gehäuse, gleiche Anschlussbelegung, aber mehr Speicherplatz,
> bessere Ausstattung und vor allem mit der Möglichkeit, einen Quarz
> anzuschließen.

Alles richtig, aber bei mir rennst Du offene Türen ein...

...
(Firma: guloshop.de) #3495237
Lesenswert?

Hannes Lux schrieb:
> Alles richtig, aber bei mir rennst Du offene Türen ein...

Hey Hannes, das weiß ich doch. :-)

Mein Vorschlag war für Dex gedacht, der ja anscheinend unbedingt eine 
genaue Zeitbasis haben will.

Ich selber verwende kaum Quarze, nicht mal für unseren Programmer.

Am liebsten spiel ich mit dem ATtiny10, da sind eh kaum Pins frei für so 
einen Schnickschnack wie einen Quarz. ;-)
#3495251
Lesenswert?

Markus Weber schrieb:
> Mein Vorschlag war für Dex gedacht,

Das dachte ich mir. ;-)

Markus Weber schrieb:
> Am liebsten spiel ich mit dem ATtiny10, da sind eh kaum Pins frei für so
> einen Schnickschnack wie einen Quarz. ;-)

Da bin ich noch nicht angekommen und komme da vermutlich auch nicht mehr 
hin. Wird wohl von STK500 und Dragon nicht unterstützt, und von meinen 
diabeteszerfressenen Netzhäuten der Augen gleich gar nicht. Man kann 
eben nicht alles haben...

...

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