Forum: Mikrocontroller und Digitale Elektronik ATtiny13 PWM bei 4.8MHz ok, bei 9.6MHz ohne Funktion


von Markus P. (papi70)


Lesenswert?

Salve zusammen,

durch meinen letzte Frage bin ich deutlich weiter, aber an einem Punkt 
hakt es noch.

Wenn ich den ATTINY 13V-10PU oder auch ATTINY 13-20 mit internen RC Osz. 
4.8 MHz programmiere, dann habe ich eine PWM Frequenz von 17.6kHz, 
soweit so gut.

Wenn ich den ATtiny13 mit internen RC Osz. 9.6 MHz programmiere, dann 
geht nix.

Warum funktioniert der Kram nicht mit 9.6 MHz???
Kann man den ATTINY 13-20 mit 12.75MHz takten? Wenn dann wie?

Software: AVR Studio 4 Vers. 4.16 Build 628
Hardware: ATtiny13
Anschlüsse: PB4 ist ein Analogeingang
            PB0 ein PWM-Ausgang
            Optimization steht auf -O2
            Fuses CKDIV8 ist aus, also kein Haken
1
#include <avr/io.h>
2
3
#ifndef F_CPU
4
/* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert 
5
   (z.B. durch Übergabe als Parameter zum Compiler innerhalb 
6
   des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die
7
   "nachträgliche" Definition hinweist */
8
#warning "F_CPU war noch nicht definiert, wird nun mit 9.6 MHz definiert"
9
#define F_CPU 9600000UL     /* Quarz mit 9.6 Mhz */
10
#endif
11
12
#include <util/delay.h>
13
#include <math.h>
14
#include <stdint.h>
15
#include <stdlib.h>
16
17
// Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++  
18
19
      int main (void)
20
  
21
      {
22
      //  Initial I/O
23
24
      ACSR  = 0b10000000;      // Analog-Komparator abschalten, spart Strom. ACD-Bit im ACSR auf 1. Außerdem müssen wir sicherstellen, dass die Intern Voltage Reference nicht auf den Analog Comparator geschaltet ist. Dazu muss ACBG in ACSR auf 0 gesetzt werden.
25
         DDRB  = 0b00000001;         // PB0 ist PWM-Ausgang; Rest Eingang
26
27
      PORTB = 0b00000001;         // interne Pull-Ups an Port-Pins 1 bis 7 deaktiviert
28
      
29
       TCCR0A = 0b10000011;      // COM0A1 - COM0A0 (Set OC0A on Compare Match, clear OC0A at TOP) WGM01 - WGM00 (set fast PWM)
30
        TCCR0B = 0b00000001;      // Prescaler = 1 => 37,647 kHz PWM-Frequenz
31
      OCR0A = 0;          // clear OC0A at TOP, initialize Output Compare Register A to 0
32
33
          while(1)             // Endlosschleife
34
35
      {                
36
37
38
        OCR0A = (128);      //  PWM-Duty-Cycle an Ausgang PB0
39
         
40
 
41
          }
42
  
43
          return 0;
44
    }

von Michael M. (mikmik)


Lesenswert?

Markus Pab schrieb:
> Wenn ich den ATtiny13 mit internen RC Osz. 9.6 MHz programmiere, dann
> geht nix.
Mehr Details bitte, was geht nicht?


> Warum funktioniert der Kram nicht mit 9.6 MHz???
> Kann man den ATTINY 13-20 mit 12.75MHz takten? Wenn dann wie?
Du kannst ihn mit allem was Du willst takten, nur sollte es innerhalb 
der specs sein (datenblatt). 12.75MHz sollten aber ok sein.

von Markus P. (papi70)


Lesenswert?

nun er bleibt bei 9.6MHz auf 0 Volt stehen und zappelt nicht

Michael M. schrieb:
> Markus Pab schrieb:
>> Wenn ich den ATtiny13 mit internen RC Osz. 9.6 MHz programmiere, dann
>> geht nix.
> Mehr Details bitte, was geht nicht?
>
>
>> Warum funktioniert der Kram nicht mit 9.6 MHz???
>> Kann man den ATTINY 13-20 mit 12.75MHz takten? Wenn dann wie?
> Du kannst ihn mit allem was Du willst takten, nur sollte es innerhalb
> der specs sein (datenblatt). 12.75MHz sollten aber ok sein.

von Markus P. (papi70)


Lesenswert?

also wenn ich die Brown-out-detection abschalte läuft mein Programm auch 
mit 9.6 MHz. Jemand eine Idee????

von Gast (Gast)


Lesenswert?

Schaltplan?

von Markus P. (papi70)


Lesenswert?

einfacher ATtiny13-20PU ohne Quarz, einfach nackisch mit 5Volt. Habe 
schon alles demontiert und messe an Pin PB0 die PWM

Gast schrieb:
> Schaltplan?

von Gast (Gast)


Lesenswert?

> einfach nackisch mit 5Volt.

Aber doch hoffentlich 100nf zwischen VCC+GND? Ansprechender Brown-Out 
klingt nach einbrechender Spannungsversorgung.

von Markus P. (papi70)


Lesenswert?

Klaro 100nF sogar unter der Platine gelötet, direkt von einem zum 
anderen Beinchen diagonal, damit der ATtiny glücklich is

Gast schrieb:
>> einfach nackisch mit 5Volt.
>
> Aber doch hoffentlich 100nf zwischen VCC+GND? Ansprechender Brown-Out
> klingt nach einbrechender Spannungsversorgung.

von Gast (Gast)


Lesenswert?

Ist die Versorgungsspannung hoch genug?

von Gast (Gast)


Lesenswert?

Sorry, hab das mit den 5V überlesen. Woher kommen denn die 5V?

von Markus P. (papi70)


Lesenswert?

die 5 Volt kommen aus einem Festpannunsregler und sind tip top. Auf dem 
Tisch kommt die Versorgung aus einem 12V- Netzteil und im Auto halt aus 
dem Boardnetz. Ich habe die Schaltung zweimal gebaut. Einmal liegt sie 
im Auto und die andere auf dem Schreibtisch. Die Schaltungen sind 
identisch und machen das gleiche Problem. 4.8MHz tut, 9.6MHz schwingt 
nur die PWM, wenn Burn-Out-Detection abgeschaltet ist. Dahingehend ein 
reproduzierbarer Fehler

von Gast (Gast)


Lesenswert?

Ein Schaltplan wäre tatsächlich nicht schlecht. Wie groß sind die 
Stützelkos? Wie sieht die Treiberstufe aus? Kannst du deine Fusebits 
abfotographieren?

von Markus P. (papi70)


Angehängte Dateien:

Lesenswert?

Salve, anbei der Schaltplan. Obgleich ich kein Oszi zur Hand habe, wage 
ich es sehr zu bezweifeln, dass es zu Spannungseinbrüchen kommen könnte. 
Egal welche Burn-Out-Schaltschwelle ich einstelle, nur ohne Burn-out 
tuts bei 9,6 MHz.

Am Eingang kommt der im Kraftfahrzeug verbaute NTC fürs Kühlwasser und 
an den drei Ausgangsklemmen kommt das dreipolige Drehspulinstrument im 
Cockpit.

Der Programmauszug oben umfasst nur den PWM-Teil, da sich bei dem Teil 
um das Problem handelt. Das gesamte Programm ist zur 
Fehlerreproduzierbarkeit nicht erforderlich. Alleine oben der PWM-Teil 
funktioniert nur ohne Burn-out bei 9.6 MHz und bei 4.6 MHz funkioniert 
er auch  mit Burn-Out

Besten Dank vorab für weitere Tipps

von Markus P. (papi70)


Angehängte Dateien:

Lesenswert?

und hier die Fuses

von Michael M. (mikmik)


Lesenswert?

wie checkst du denn ob da was schwingt wenn du kein Oszi zur Hand hast?

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.