- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 39

Thema: Ein paar Fragen zum Timer !!!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Nicole01 Beitrag anzeigen
    Searcher,
    mal wieder vielen Dank für deinen langen Text und deiner Mühe.
    .
    Vielen Dank mal wieder.
    Alles klar, für mich reicht das für den Rest meiner Beiträge


    Wie man das ganze jetzt ausrechnet verstehe ich zu 80%.
    Mein Problem ist nur, wie berechne ich die Frequenz die ich möchte ?

    Z.b. 2,3 kHz ?
    Oder 200 Hz ?
    Die Frage ist eigentlich falsch gestellt, oder? Du gibst ja die Frequenz vor und möchtest die Konfigurationsparameter für den Timer finden. Da Du nur eine bekannte Größe hast, nämlich die gewollte Frequenz, must Du die anderen für den Timer selbst vorgeben.

    Ich habe das in meinem ersten Post gemacht, indem ich den Systemtakt mit 1MHz angenommen habe. Dann habe ich den Timer Vorteiler, der mit den CS Bits eingestellt wird mit 8 angenommen. Mit Vorteiler = 1 ging Deine 1kHz im Fast-PWM nicht einzustellen. Mit Vorteiler = 8 ergab sich aber noch nicht genau die 1kHz. Deshalb noch den CTC Modus zur Hilfe genommen. (Datenblatt: 11.7.2 Clear Timer on Compare Match (CTC) Mode)

    Man rechnet es sich also nicht direkt aus, sondern probiert gewissermaßen ein Stück weit in den Rechnungen mit den zur Verfügung stehenden Möglichkeiten des µC und kann dann mit den Gleichungen aus dem Datenblatt zurückrechnen, ob man richtig liegt. (Datenblatt Gleichungen stehen in den Unterkapiteln zu "11.7 Modes of Operation")


    Im Datenblatt habe ich bei Timer0 diese Werte gefunden.
    CS00, CS01, CS02
    8, 64, 256, 1024

    Ob ich die 1024 nutzen kann, bin ich mir nicht ganz sicher da ja hier kein CS mehr zu finden ist für 1024?
    Stimmt fast, aber die Frage verstehe ich nicht. Grundlage zur Einstellung des Vorteilers für Timers 0 ist die "Table 11-6. Clock Select Bit Description" im Kapitel "11.9.3 TCCR0B – Timer/Counter Control Register B".

    Im TCCR0B Register setzt man:
    für Voteiler 8 das Bit CS01
    für Voteiler 64 die Bits CS01 und CS00
    für Voteiler 256 das Bit CS02
    für Voteiler 1024 die Bits CS02 und CS00

    also nicht ein CS Bit für einen Vorteilerwert; es werden auch Kombinationen von den CS Bits genutzt und es gibt auch den Vorteilerwert 1 mit dem Bit CS00, der in Deiner Aufzählung der Prescaler Werte fehlt.


    Jetzt zur Frequenz, der Attiny läuft mit 1MHz und er läuft alle 256 Schritte wegen dem 8 Bit Timer über.
    Die 256 Schritte sind immer gleich und der 8 Bit Timer auch das kann ich ja nicht beeinflussen habe ich das soweit richtig verstanden ?
    Nein. Die 256 ist der Maximalwert. Der kann im CTC Modus veringert werden. Bitte Kapitel 11.7 Modes of Operation und speziell oben erwähntes Kapitel über den CTC Modus lesen.


    Somit bleibt mir ja nur zur Berechnung der Frequenz die 1 MHz die 256 Schritte bis zum Überlauf und der Prescale.
    Die 1MHz Systemtakt, OK! Würde ich auch erstmal nicht ändern.
    Die 256 Schritte sind nicht fix. Siehe CTC Modus
    Prescale, ja.
    Aber es gibt noch die verschiedenen Moden des Timers. Kapitel 11.7. Der von wkrug erwähnte "11.7.4 Phase Correct PWM Mode" wird anders berechnet und läßt tiefere Frequenzen als Fast PWM zu.

    Hier noch was zum Lesen aus dem Roboternetz-Wissen: http://rn-wissen.de/wiki/index.php?t.../Counter_(Avr)
    Ist für einen ATMega aber das Prinzip ist das Gleiche.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    21
    Hallo Searcher,

    vielen vielen Dank für deine Mühe !

    Ich glaube ich habe es jetzt verstanden ( Hoffe ich )

    Wenn ich eine Frequenz von 1400 kHz benötige wären das 88 bei einem Prescaler von 8.
    Ich hoffe das ist so richtig

    Bei 2100 kHz müssten es 53 sein.


    Viele Grüße

    Nicole

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Nicole01 Beitrag anzeigen
    Ich hoffe das ist so richtig


    Wenn ich eine Frequenz von 1400 kHz benötige wären das 88 bei einem Prescaler von 8.
    Also wenn die 88 der Wert für den Maximalwert des Timers im CTC Modus sein soll, ist es vermutlich durch einen Flüchtigkeitsfehler trotzdem total falsch. Angenommener Flüchtigkeitsfehler bereinigt, ist die 88 der Wert, mit dem man der gewünschten Frequenz am nächsten kommt.


    Bei 2100 kHz müssten es 53 sein.
    Gleicher Flüchtigkeitsfehler (?) und man kann mit einem anderen Wert als 53 wesentlich näher an die gewünschte Frequenz heran kommen.

    Wenn Du die Rechnung mitlieferst und auch die Einheiten mit aufschreibst, kann man besser erkennen, wo der Hase im Pfeffer liegen könnte.

    Das wird aber schon. Ich habe selbst viel durch ausprobieren "erforscht". Also einfach Programm in den µC und nachgeschaut was da raus kommt. Ich kenne Deinen Hintergrund und Deine Möglichkeiten nicht. Hier wäre ein Oszilloskop, Frequenzzähler oder ähnliches hilfreich. Bei den geringen Frequenzen täte es auch ein Soundkartenoszi.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    21
    Hallo Searcher,

    danke für deine Antwort.

    Ich habe die 1000000:8 und dan 125000:1400=89
    Bei den 89 habe ich 1 abgezogen ( so wie Ihr mir das gesagt habt )

    Somit kamm ich auf 88.

    Du hast mir ja noch einen Link gegeben.

    Dort steht:

    ( Nun wird mathematisch überprüft, ob der errechnete Wert aus dem vierten Punkt kleiner als der maximale Zählerwert ist. Trifft dies zu, so wird der errechneten Wert vom maximalen Zählerwert subtrahiert )

    Wenn ich das so machen muss, würde bei mir ein Wert von 167 raus kommen.

    Ein Oszilloskop zum testen habe ich hier.
    Gestern habe ich es auch genau so gemacht wie Du es geschrieben hast.

    Immer ein wenig probiert und sofort am Oszilloskop das Ergebniss angeschaut.

    Nur leider gibt mein Attiny45 aus irgend einem Grund keinen Wert mehr aus ?
    Habe es auch schon mit einem ganz neuen Attiny versucht.

    Genau das leiche Problem.
    Kann über den Port LED blinken lassen oder auch einen Taster steuern.

    Nur das PWM Signal kommt nicht mehr raus.

    Im Code kann ich keinen Fehler finden.
    Bzw mit diesem Code hat es ja auch ohne Probleme funktioniert.

    Code:
    #include <avr/io.h>
    #define F_CPU 1000000
    
    
    int main(void)
    {
    	DDRB |= (1<<PB1);
    	OCR0A = 124;
    	OCR0B = 63;
    	
    	TCCR0A = (1<< COM0B1) + (1<< WGM01) + (1<< WGM00);
    	TCCR0B = (1<<WGM02) + (1<< CS01);
    	
    	while (1)
    	{
    		asm ("NOP");
    	}
    }
    Vielen Dank mal wieder für die nette Hilfe.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Nicole01 Beitrag anzeigen
    Ich habe die 1000000:8 und dan 125000:1400=89
    Bei den 89 habe ich 1 abgezogen ( so wie Ihr mir das gesagt habt )
    Somit kamm ich auf 88.
    Das paßt auch aber Du hast die Einheiten nicht mitgeschrieben. Oben stehen 1400kHz obwohl Du 1400Hz meinst Das ist das, was ich mit total falsch meinte. Die 88 sind für die ungefähr 1400Hz OK!

    Die 53 stimmen aber nicht!

    Immer ein wenig probiert und sofort am Oszilloskop das Ergebniss angeschaut.

    Nur leider gibt mein Attiny45 aus irgend einem Grund keinen Wert mehr aus ?
    Habe es auch schon mit einem ganz neuen Attiny versucht.
    Kann über den Port LED blinken lassen oder auch einen Taster steuern.
    Nur das PWM Signal kommt nicht mehr raus.
    Oszilloskop verstellt? Tasköpfe guten Kontakt? Keine andere Masseverbindung als über Meßkabel zB über Programmer-PC-Schutzkontakt zum Oszi?

    Im Programm kann ich auch erstmal keinen Fehler entdecken. Ich bin aber kein C Programmierer. Pluszeichen bei den Registerzuweisungen sind jedoch anscheinend unüblich, obwohl es wohl funktioniert. Es ist üblicher dort ein Veroderungszeichen zu setzen, also so:
    Code:
        TCCR0A = (1<< COM0B1) | (1<< WGM01) | (1<< WGM00);
        TCCR0B = (1<<WGM02) | (1<< CS01);
        while (1);
    Ein unendliche while Schleife, in dem nichts passiert, kann man so meine ich, auch einfach mit Semikolon abschließen - aber absolut ohne Gewähr. Das ASM nop irritiert mich.

    Wenn man den OCR0A Wert in dem Modus dem OCR0B Wert von oben annähert ist Obacht geboten, weil es ja irgendwann keinen Comparematch für die PWM geben kann, da der TCNT den OCR0B-Wert nicht mehr erreichen kann.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    21
    Hallo Searcher,

    mal wieder vielen Dank für deine Hilfe.

    Am Oszi lag es nicht.
    Habe es mit einem Attiny 24 versucht.
    Da geht es sofort.

    Nochmals zwei neue Attiny 85 getestet ( kein PWM Signal ) komisch komisch.

    Benötige ich zwingend die Minimal Beschaltung für den Attiny ?
    Oder sollte es auch ohne funktionieren ?

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Nicole01 Beitrag anzeigen
    Benötige ich zwingend die Minimal Beschaltung für den Attiny ?
    Hallo,
    Was verstehst Du da genau drunter? Für mich würde das ein 10kΩ Widerstand von RESET nach Vcc und ein 100nF Kerko direkt an die GND Und Vcc Anchlüsse des Tiny bedeuten. Damit kannst Du jetzt Unsicherheiten ausschließen.

    Ich habe gerade vor ein paar Tagen "gezwungenermaßen" das AVR-Studio installiert -programmiere sonst mit BASCOM- und auch ein ATTiny25 auf dem Steckbrett sitzen. Da habe ich jetzt Dein letztes Programm für den Tiny25 (habe keinen Tiny85 zur Hand, der ja außer einem größeren Speicher gleich ist und das gleiche Datenblatt hat) compiliert und es läuft trotz + Zeichen und ASM nop wunderbar. Ich benutze nur ein Steckernetzteil und auch keine Minimalbeschaltung. Also blank den Tiny ins Steckbrett und Strom dran. Es mag aber trotzdem bei Dir wegen zB anderer Stromquelle, Zuleitungen, Störungen, ... nötig sein. Du kannst das Oszi mal auf die Versorgung hängen und den Einfluß eines 100nF Abblockkondensators beobachten. Mir lief es eiskalt den Rücken runter und wenn irgendwas nicht geht, stecke ich so ein Ding als erstes dazu, wenn es nicht vorhanden ist.

    Ist das ein Steckbrettaufbau? Da ist natürlich auch Schmutz in den Kontakten oder die Kontakte selbst eine Fehlerquelle. Vor dem Compilieren den richtigen µC ausgewählt? Ein Clean vor dem Build durchgeführt? (also Löschen früherer erzeugte Compiler Dateien im Projekt. Ich glaube so ist es sicher, hab ich aber bei meinem AVR Studio 4.19 noch nicht alles ausgetestet.)

    Am Programm liegt das Problem nicht. Bei mir gab es statt 1kHz eine Frequenz von 1,054kHz. (Gemessen direkt am OC0B (PB1) ohne weitere Beschaltung des Pins) Liegt an dem internen Oszillator, den ich über den aktivierten CLKO (PB4) gemessen habe. Liegt bei 1,055MHz (kleine Meßfehler durch Oszi eingeschlossen)

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Ein paar Fragen ;)
    Von Checker 1.0 im Forum Robby RP6
    Antworten: 11
    Letzter Beitrag: 18.08.2011, 21:37
  2. Ein paar fragen ...
    Von Gamestake im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 21.04.2011, 09:12
  3. Ein paar Fragen
    Von Speed im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 03.11.2008, 07:19
  4. Ein paar Fragen zu µC
    Von Lars. im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 09.06.2006, 14:38
  5. Paar Fragen -g-
    Von Adacart im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 06.01.2005, 17:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen