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
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 07:46 Uhr) Grund: Ergänzung
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
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
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.
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
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.
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.
ick find dit irgendwie netauf Seite 130 sind Diagramme und die Rede von OCR-1, OCR+1 usw
hier der Link
http://www.atmel.com/Images/Atmel-82..._datasheet.pdf
Achtung wenn du die Includedatei des µC öffnest dann siehst du das dort an einigen Stellen MOMERY MAPPED steht diese Adressen sind nur mit LDS/STS zu erreichen.
aber vielleicht hilft der Code ein wenig weiter
Code:rcall mode2_T0_init rcall prescaler_T0_on start: rjmp start mode2_T0_init:;CTC_MODE OCRx update sofort oder im INT sbi ddrd,6 ;output aktivieren wenn Toggeln am PIND6=OCR0A erwünscht ldi temp0,$80 ;Toggeln oder Clr/Set aktiv muss OCR0A-Register beachtet werden um out OCR0A,temp0 ;____--- oder _------ zu erreichen ;mit OCRyx wird die Frequenz festgelegt des Rechtecksignales lds temp0,TIMSK0 ori temp0,(0<<OCIE0B||0<<OCIE0A|0<<TOIE0) ;INTs aktivieren sts TIMSK0,temp0 ldi temp0,(0<<COM0B1|0<<COM0B0|0<<COM0A1|1<<COM0A0|1<<WGM01|0<<WGM00) ;zum Toggeln COMyx Einstellungen beachten!!!!!!!!! out TCCR0A,temp0 ; ldi temp0,(0<<FOC0A|0<<FOC0B|0<<WGM02) out TCCR0B,temp0 ret prescaler_T0_on: in temp0,TCCR0B ori temp0,(0<<CS02|0<<CS01|1<<CS00) ;schmeißt den counter out TCCR0B,temp0 sei ret OC0A_int: in temp0,OCR0A out OCR0A,temp0 reti
Lesezeichen