- Akku Tests und Balkonkraftwerk Speicher         
Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte
Ergebnis 41 bis 50 von 52

Thema: Timer für AVR ATtiny84 oder ander allgemein in C

  1. #41
    Neuer Benutzer Öfters hier Avatar von ooweberoo
    Registriert seit
    24.02.2014
    Ort
    66482 Zweibrücken
    Alter
    39
    Beiträge
    28
    Blog-Einträge
    1
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo oberallgeier,

    interessant das kenne ich so nicht bzw. vielleicht ist das beim tiny84 anders....
    Würde gerne die Tabelle als Bild hochladen wo es steht...geht aber gerade nicht...Es ist die Tabelle mit den Pescalern.

    Ich verwende AVR Studio 6.1

    Ok deine Einschätzung ist schon mal viel Wert für mich da ich keine Erfahrung vorweisen kann

    Der tiny84 läuft auf 1MHz? Steht jedenfalls so im Datenblatt das er ab 2,7V-5,5V 0-10MHz hat und "active system clock 1MHz"

    daher bin ich etwas verwirrt

    Wäre nur die Ungenauigkeit die ich weg bekommen muss. Was würdest du tun?

    Einen Quarz an XTAL1&2, einen Oszillator nur an XTAL1 oder einen Oszillator an den Timereingang T0?
    Und welche Werte?

    GRuß Chris
    Geändert von ooweberoo (03.04.2014 um 08:55 Uhr)

  2. #42
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Hi Chris.
    ... das kenne ich so nicht bzw. vielleicht ist das beim tiny84 anders ...
    Das fällt mir schwer korrekt und zuverlässig zu beantworten weil ich ein lausiger C-Programmierer bin. Es ist aber eher eine Frage der C-Syntax und weniger eine Controllerspezialität.

    ... Der tiny84 läuft auf 1MHz ...
    Das ist doch die übliche Einstellung ab Werk:
    Zitat Zitat von Doc 8006K-AVR-10/10 für ATtiny24-44-84
    ...
    6.2.2 Calibrated Internal 8 MHz Oscillator
    By default, the Internal Oscillator provides an approximate 8 MHz clock. Though voltage andtemperature dependent, this clock can be very accurately calibrated by the user. See
    Table 20-2 on page 176and “Internal Oscillator Speed” on page 205 for more details. The device is shipped
    with the CKDIV8 Fuse programmed. See “System Clock Prescaler” on page 30 for more details. ...
    ... Was würdest du tun?
    Einen Quarz an XTAL1&2, einen Oszillator nur an XTAL1 oder einen Oszillator an den Timereingang T0?
    Und welche Werte? ...
    Du hast bei Deiner Siebensegmentanzeige sicher genug Stromverbrauch um Dich nicht über ein paar Mikroampere sorgen zu müssen. Aber das kannst nur Du anhand Deiner Schaltung beurteilen. Ich kann mir vorstellen - ich kenne aber Dein Projekt nicht wirklich, dass ich bei Deiner Aufgabenstellung den internen Oszillator nehmen würde - ohne CKDIV8 - also bei 8 MHz und als Zeitreferenz den Timereingang T0 mit dem Uhrenquarz. WENN das dann gut genug funzt, kannst Du zur Stromminderung immer noch den CKDIV8 probieren und evtl. niedrigere Takte - oder im Notfall nen Quarz dran schalten. Letzteres halte ich nicht für nötig.

    Allerdings bereite ich (meine To-Do-Liste eher unterstes Drittel) meine Uhrzeitdarstellung mit ner RTC vor (nicht die ganz billige, hat aber "alles").
    Ciao sagt der JoeamBerg

  3. #43
    Neuer Benutzer Öfters hier Avatar von ooweberoo
    Registriert seit
    24.02.2014
    Ort
    66482 Zweibrücken
    Alter
    39
    Beiträge
    28
    Blog-Einträge
    1
    Hallo oberallgeier,

    wenn ich das Fuse Bit CKDIV8 entferne wird also der CPU- Takt nicht mehr vorgeteilt und ich bekomme 8 statt 1MHz???

    ok das klingt vernümpftig, aber ich hatte die Uhr ja bereits fertig und am laufen mit einem 1MHz.
    allerdings war sie zu ungenau. nach 5 Stunden waren es schon 3-4min die sie nach ging.

    Code:
    8 Bit Timer CTC Modus aktivieren---------------------------------
    TCCR0A |= (1<<WGM01);		
    TCCR0B |= (1<<CS01);		// im TCCR0B Register, Vorteiler 8 setzen
    OCR0A = 125;			// Überlaufwert festlegen 
    				        // 1.000.000Hz/8=125.000,  125.000Hz/125=1.000Hz,  T=1/f = 1/1000Hz =0,001 Sekunden
    				       // Beim erreichen von 125 wird ISR(TIM0_COMPA_vect)ausgeführt, und somit die Variable "millisekunden" um 1 erhöt
    TIMSK0 = (1<<OCIE0A);      // Interrupfunktion einschalten
    sei();
    Wäre es genauer wenn ich 8MHz nutze? Also statt 1000Überläufe pro Sekunde 8000.

    Gruß Chris

  4. #44
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von ooweberoo Beitrag anzeigen
    ... CKDIV8 entferne wird ... Takt nicht mehr vorgeteilt ... 8 statt 1MHz??? ...
    Ja.

    Zitat Zitat von ooweberoo Beitrag anzeigen
    ... Wäre es genauer wenn ich 8MHz nutze ...
    Nein ziemlich sicher nicht. Denn der Oszillator bleibt ja der Gleiche, mit den gleichen Un-/Genauigkeiten. Nur dass die CPU eben langsamer getickert wird, weil der 8 MHz-Takt wegen des gesetzten CKDIV8 durch acht geteilt wird.

    Genauer gehts nur mit einem genaueren Taktgeber für die CPU. Wie Du den Takt genauer bekommst ist egal. RICHTIG genau wirds dann mit einem Quarzofen der den Quarz auf einer konstanten Temperatur hält - weil der Quarztakt von der Temperatur des Quarzes abhängt. Genauer wirds aber auch durch den externen Taktgeber - Uhrenquarz, der dann Dein eigentliches Zeitsignal ist. Oder Du hängst noch ein DFC77-Modul dran und justierst die Uhr alle Stunde oder Minute oder so.
    Ciao sagt der JoeamBerg

  5. #45
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    nach 5 stunden waren es schon 3-4min die sie nach ging.
    Code:
    OCR0A = 125;
    Wenn du im CRC-Modus eine Teilung durch 125 haben möchtest, ist 124 der richtige Wert für OCR0A. Das wäre dann schon mal ein Fehler von ca. 2,5 Min pro 5 Std. In einem früheren Code hattest du es richtig, warum geändert?
    MfG
    Stefan

  6. #46
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    38
    Beiträge
    101
    Hallo!

    Ich denke auch, das als "Hauptquarz" die 32khz zu nehmen Probleme geben könnte. Würde ich auch nicht empfehlen.


    Dennis
    Ich studiere die Wirkung der Sonnenstrahlen auf das Liebesleben der Pflastersteine

  7. #47
    Neuer Benutzer Öfters hier Avatar von ooweberoo
    Registriert seit
    24.02.2014
    Ort
    66482 Zweibrücken
    Alter
    39
    Beiträge
    28
    Blog-Einträge
    1
    Hallo Leute,

    Danke erstmal für euere Infos!

    @oberallgeier: Das werde ich denke auch so machen und den Vorteiler drin lassen.

    @Sternst: ja hatte ich drin muss ich dir Recht geben. Ich habe nochmal Überlegt und so gerechnet 8.000.000Hz/8(CKDIV8 )= 1.000.000Hz/8(Prescaler)= 125.000
    125.000Hz/1000 = 125Hz also wird der Wert 125, 1000 mal in der Sekunde erreicht! Hatte vorher 124 damit war die Abweichung nicht ganz so drastisch aber nach 5 Stunde jedoch auch ca. 1min. Also die Ungenauigkeit ist schon spürbar.

    @derNeue: Ok das stimmt dann wohl. Allerdings verwendet diesen Quarz (32,768kHz) so gut wie jeder im Netz. Man muss ja nur mal Uhrenquarz googeln....
    versteh nur nicht wie das die anderen machen die so einen Quarz nutzen....


    Aber ich habe gerade Material bestellt und mich für einen 8Mhz Quarz entschieden, dann lass ich alles und stell lediglich auf externen Takt um. So kann ich vergleichen wie groß der Unterschied ist. Zudem stelle ich später auf ATtiny2313 um da dieser als SMD nicht viel größer ist aber mehr Pins bietet.

    Mit den 8MHz bin ich genau an der Grenze. Wie muss ich den einstellen, also bei CKSEL3:1 als 3-8MHz(110) oder als 8- MHz (111)?


    Gruß Chris
    Geändert von ooweberoo (04.04.2014 um 11:04 Uhr)

  8. #48
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Beim 8 MHz Quarz ist es nicht kritisch welche der Beiden Einstellungen man nutzt: die werden beide funktionieren. Auch sonst die die AVRs da relativ tolerant.

    Den Tiny2313 würde ich eher nicht empfehlen, wenn man nicht gerade die UART braucht. Das ist noch Chip mit der alten Pinbelegung mit GND und VCC weit auseinander. Das macht das Layout schwieriger, bzw. verursacht mehr HF Störungen. Als Alternative ggf. besser ein Tiny261, auch wenn der 2 nutzbare Pins weniger hat.

  9. #49
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    38
    Beiträge
    101
    Zitat Zitat von ooweberoo Beitrag anzeigen
    @derNeue: Ok das stimmt dann wohl. Allerdings verwendet diesen Quarz (32,768kHz) so gut wie jeder im Netz. Man muss ja nur mal Uhrenquarz googeln....
    versteh nur nicht wie das die anderen machen die so einen Quarz nutzen....
    Ich habe ja nicht gesagt, das es nicht geht. du musst da nur eine vernünftige Programmierung haben. Kritisch wird eben dein multiplexen. Wenn du eine Multiplex-Frequenz von 200Hz hast, hast du zwischen dem Umschalten gerade mal 163Takte(32768Hz/200Hz). In diesen Takten musst du auf die andere Anzeige umschalten und alles für die Uhr berechnen. Das ist möglich, aber schon ein bisschen knifflig. Auf jedenfall nicht mit _delay_ms() zu lösen.

    Dennis
    Ich studiere die Wirkung der Sonnenstrahlen auf das Liebesleben der Pflastersteine

  10. #50
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Meiner Meinung nach gibts hier prinzipiell nur 3 sinnvolle Möglichkeiten:

    1. Du nimmst den internen Oszi und nimmst die Ungenauigkeit in kauf.

    2. Du nimmst einen externen Quarz und minimierst die Ungenauigkeit etwas.

    3. Du nimmst einen externen Uhrenquarz für den Timer und nimmst für den µc was du willst und hast die beste Genauigkeit.

    mfg

Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte

Ähnliche Themen

  1. Datenübertragung Bluetooth (oder Funk allgemein)
    Von Bumbum im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 21.09.2012, 09:02
  2. ATTiny84 Pegelbegrenzung mit Zenerdiode oder wie?
    Von DanielSan im Forum AVR Hardwarethemen
    Antworten: 25
    Letzter Beitrag: 01.12.2011, 13:40
  3. 5V Netzteil gesucht oder allgemein guter Hersteller
    Von kini im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 25.03.2010, 11:33
  4. Ander controller programmieren?
    Von BlackDevil im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 26.08.2006, 00:20
  5. Bspcode in assembler für AVR Timer
    Von Shadowrun im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 09.02.2005, 13:55

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test