mikrocontroller.net

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


Autor: Markus P. (papi70)
Datum:

Bewertung
0 lesenswert
nicht 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

#include <avr/io.h>

#ifndef F_CPU
/* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert 
   (z.B. durch Übergabe als Parameter zum Compiler innerhalb 
   des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die
   "nachträgliche" Definition hinweist */
#warning "F_CPU war noch nicht definiert, wird nun mit 9.6 MHz definiert"
#define F_CPU 9600000UL     /* Quarz mit 9.6 Mhz */
#endif

#include <util/delay.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>

// Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++ Hauptprogramm +++  

      int main (void)
  
      {
      //  Initial I/O

      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.
         DDRB  = 0b00000001;         // PB0 ist PWM-Ausgang; Rest Eingang

      PORTB = 0b00000001;         // interne Pull-Ups an Port-Pins 1 bis 7 deaktiviert
      
       TCCR0A = 0b10000011;      // COM0A1 - COM0A0 (Set OC0A on Compare Match, clear OC0A at TOP) WGM01 - WGM00 (set fast PWM)
        TCCR0B = 0b00000001;      // Prescaler = 1 => 37,647 kHz PWM-Frequenz
      OCR0A = 0;          // clear OC0A at TOP, initialize Output Compare Register A to 0

          while(1)             // Endlosschleife

      {                


        OCR0A = (128);      //  PWM-Duty-Cycle an Ausgang PB0
         
 
          }
  
          return 0;
    }



Autor: Michael M. (mikmik)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus P. (papi70)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus P. (papi70)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan?

Autor: Markus P. (papi70)
Datum:

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

Gast schrieb:
> Schaltplan?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> einfach nackisch mit 5Volt.

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

Autor: Markus P. (papi70)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Versorgungsspannung hoch genug?

Autor: Gast (Gast)
Datum:

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

Autor: Markus P. (papi70)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus P. (papi70)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Markus P. (papi70)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und hier die Fuses

Autor: Michael M. (mikmik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie checkst du denn ob da was schwingt wenn du kein Oszi zur Hand hast?

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.