- HEMS Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 36

Thema: Timer und Register

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.716
    Blog-Einträge
    133
    Zitat Zitat von Saturas077 Beitrag anzeigen
    Ich hoffe Ihr seit nicht böse, dass ich schon wieder ein Problem habe.
    Nicht, wenn wir dir helfen können

    Mein Projekt benötigt die Genauigkeit eines 8Bit Timers, ohne Prescale, über eine Dauer von mindestens 2ms, besser wären 100-200ms.
    Das klingt rätselhaft. Eigentlich konfiguriert man den Timer, läßt ihn laufen und läßt ihn über Interrupt melden, wann seine Zeit abgelaufen ist oder so ... Erklär doch ein bißchen mehr, so daß man eine sinnvolle Konfiguration vorschlagen kann.

    Auf welchem µC soll das laufen?

    Das ist mit einem 16 Bit Register, 2 mal 8 Bit, zu lösen, allerdings weiß ich nicht wie ich ein solches benutze. Das was ich im Internet fand sieht wie folgt aus: .....
    Ich verstehe das so, daß Du einen 16Bit Timercounter auslesen möchtest, um eins incrementieren willst und wieder zurückspeichern möchtest.

    Schreiben und Lesen eines 16Bit Registers, wie das TCNT1 des Timers 1, das aus TCNT1L und TCNT1H besteht, ist im Datenblatt des ATMega8a beispielhaft so dargestellt. Man beachte die Reihenfolge der Zugriffe.
    Code:
    ; Set TCNT1 to 0x01FF
    ldi r17,0x01
    ldi r16,0xFF
    out TCNT1H,r17
    out TCNT1L,r16
    
    ; Read TCNT1 into r17:r16
    in r16,TCNT1L
    in r17,TCNT1H
    Auf einem ATMega8 geht das ADIW. Also zB so:
    Code:
    in r24,tcnt1L
    in r25,tcnt1H
    ADIW r24,1
    out tcnt1H,r25
    out tcnt1L,r24
    Gruß
    Searcher
    Geändert von Searcher (28.04.2014 um 17:32 Uhr) Grund: Fehler berichtigt
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    39
    Beiträge
    101
    Zitat Zitat von Searcher Beitrag anzeigen
    Auf einem ATMega8 geht das ADIW.
    Das funktioniert aber nur bei den Registern R32 bis R24, und auch jeweils nur bei den Pärchen, soweit ich mich noch erinnere, oder verwechsle ich gerade die Befehle?


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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.716
    Blog-Einträge
    133
    Zitat Zitat von derNeue Beitrag anzeigen
    Bild hier   Zitat von Searcher Bild hier  
    Auf einem ATMega8 geht das ADIW.
    Das funktioniert aber nur bei den Registern R32 bis R24, und auch jeweils nur bei den Pärchen, soweit ich mich noch erinnere, oder verwechsle ich gerade die Befehle?
    Nein, stimmt schon. ADIW geht nur bei den oberen Registerpärchen. Besteht da irgendwo ein Widerspruch oder warum fragst Du nach? Ist doch eine kurze Methode um etwas zu einem 16Bit Wert zu addieren

    Zitat Zitat von Saturas077 Beitrag anzeigen
    Ich möchte aber gerne zwei Register von r16-r32 nutzen. Wobei die Pointer Register ja wegfallen.
    Warum fallen die Pointerregister weg? r24/r25 sind auch keine der Pointer X, Y, Z.

    Gruß
    Searcher
    Geändert von Searcher (29.04.2014 um 08:46 Uhr) Grund: Ergänzung
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    39
    Beiträge
    101
    Zitat Zitat von Searcher Beitrag anzeigen
    Nein, stimmt schon. ADIW geht nur bei den oberen Registerpärchen. Besteht da irgendwo ein Widerspruch oder warum fragst Du nach? Ist doch eine kurze Methode um etwas zu einem 16Bit Wert zu addieren
    Es besteht kein Widerspruch und mit deinem Post erinnerte ich mich auch wieder an diesen Befehl. Ich wollte einfach nur ergänzen, dass dieser Befehl eben nur bei bestimmten Registern funktioniert. Nicht das der TO sich dann wundert, warum es wieder nicht klappt, nur weil er die "falschen" Register nimmt.

    Also ansich hattest du den besseren Vorschlag, ich wollte ihn nur ergänzen, war mir aber nicht mehr 100% sicher, ob ich da nicht etwas verwechsle, deswegen mein nachfragen


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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2013
    Beiträge
    22
    Danke für all Eure Antworten.
    Ich wollte vorerst mir die Begriffe im Handbuch und per Suche bei Google durchlesen bevor ich mich melde.
    Die Idee mit dem ICP finde ich super, aber durch das lesen über diese Methode ist mir erstmal bewusst geworden, das der Timer 1 die gleiche Genauigkeit hat wie Timer 0.
    @avr_racer deine Ausführung mit dem Pulsen per CTC finde ich klingt auch sehr Interessant, allerdings kann ich noch nicht folgen wie das Funktioniert.
    Im Handbuch steht dazu folgendes:
    C-2|C-1|C|C+1|C+1
    Wenn ich das richtig verstanden habe Toggelt er bei jedem Übergang von C-1|C den Eingang.
    Das würde aber doch bedeutet, das der Eingang 500ms an und auch aus wäre, außer ich würde C nachdem Pegel ändern. Sehe ich das falsch?

    Ich laß die Frage was das für ein Projekt ist.
    Das Projekt ist eine Positionsbestimmung per Töne. Es wurde vor einigen Monaten per Arduino gemacht. Funktionieren tut es, allerdings sind die Offsetzeiten zu hoch.

    Eigentlich ist das Projekt abgeschlossen, ich benutze es als vorbild zum lernen von Assembler und den Umgang von AVR.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    39
    Beiträge
    101
    http://www.mikrocontroller.net/articles/FAQ#Timer

    Sehr gut die üblichen Timer-Modi beschrieben


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

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Hallo,

    > Das würde aber doch bedeutet, das der Eingang 500ms an und auch aus wäre,
    Das ist korrekt. Deshalb ja die Anspielung auf den PWM-Mode da kannst du die ON/OFF-Zeit variabel gestalten soll heißen bei z.B.:10Khz = 100µs = 20/100µs Off __ und 80/100µs high
    ----------.

    > außer ich würde C nachdem Pegel ändern.

    Was ist C ? Du meinst den Timer ?


    > Im Handbuch steht dazu folgendes:

    Ich gehe davon aus das du Arduino nutzt, mit diesen hab ich bisher nichts zu tun gehabt. Nutze das Datenblatt des entsprechenden µC weil

    > ich benutze es als vorbild zum lernen von Assembler und den Umgang von AVR.

    nur das Datenblatt ist das Handbuch für den Controller dort bekommt man vielleicht die ein oder andere Info mehr.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2013
    Beiträge
    22
    Nein, das hast du falsch verstanden. Ich rede über das ATMEL_Atmega328P-PU Dokument von der Hauptseite. Angesprochene seite ist die 130. Dort wird es OCRnx statt C genannt.

Ähnliche Themen

  1. gleiche register bei atmega32 und 16
    Von avrrobot im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 20.02.2011, 10:19
  2. Timer-Register mögen Befüllung durch Funktion nicht
    Von stefan_Z im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 06.08.2007, 19:25
  3. Asuro und OSCCAL Register Taktfrequenz
    Von Winne im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 11.09.2005, 09:49
  4. Interne Register und Register in SRAM
    Von FoCus im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 27.07.2005, 13:06
  5. ADC und USART über Register?!
    Von BASTIUniversal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 29.04.2005, 14:28

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress