Ein Prescaler ist ein Vorteiler. Der dafür angegebene Wert gibt an, um welchen Faktor ein Timer langsamer läuft als der Systemtakt.
8MHZ und ein Prescaler von 64 hieße z.B., dass mit einer Frequenz von 8MHZ/64 = 125kHz hochgezählt wird.
Hi Flite!
Erstmal ein ganz dolles "DANKESCHÖN"!
Danke für die ganze Arbeit, die Du Dir gemacht hast!
Ich werde jetzt den Code einfach mal für den AT90S4433 umschreiben und ihn hier zum kontrollieren posten!
Eine Frage habe ich allerdings jetzt schon:
Was ist ein Prescaler?
Danke nochmals!
Ein Prescaler ist ein Vorteiler. Der dafür angegebene Wert gibt an, um welchen Faktor ein Timer langsamer läuft als der Systemtakt.
8MHZ und ein Prescaler von 64 hieße z.B., dass mit einer Frequenz von 8MHZ/64 = 125kHz hochgezählt wird.
it works best if you plug it (aus leidvoller Erfahrung)
Hi Gottfreak!
Das ist dann also sowas wie bei den Timern!
Dann hab ich das jetzt verstanden!
Danke nochmnal!
Hi!
Ich habe noch eine Frage!
Warum sind die .equ's als Kommentar eingefügt?Code:;********************************************** ;.equ ADTS2 =7 ;.equ ADTS1 =6 ;.equ ADTS0 =5 ;**********************************************
Dann funktionieren die doch garnicht! Die werden doch dann übersprungen! Oder doch nicht?
Hi!
Das rjmp ... ist auch als Kommentar gemacht! Soll das sein?Code:; rjmp ad_vector ; ADC ;*********************************************** dummy:
Edit:
Mir fällt auf, dass auch andere Elemente als Kommentar geschrieben sind!![]()
Also wenn ich das auf die Schnelle wichtig überblicke waren die hinter den Kommentaren stehenden Anweisungen nur für frühere Tests etc. zuständig.
Die equs werden niergends im Programm mehr verwendet (also war das wahrscheinlich auch zu testzwecken drin). Außerdem sollten die Definitionen eigentlich auch in der m32def.inc stehen.
Versuch das ganze Mal auf den 4433 umzuschreiben (und lass die kommentierten Befehle einfach weg) und stell den Code mal hier rein.
Ich les mir das dann mal durch - ist eigentlich nicht schwierig.
Allerdings:
der 4433 verfügt imho nicht über die Möglichkeit das Ergebnis linksseitig anzugeben.
Viele Grüße
Flite
Die ADTS 0 - 2 Bits sind die MSBs im SFIOR Register (Special Function I/O Register). Damit lässt sich eine Triggerfunktion des ADC steuern.
In obigem Beispiel war der Trigger wohl auf den Analog Comparator (001) geschaltet - daher auch die Reste des Analog Comparator im Quelltext.
Ganz oben bei der Initialisierung wird das SFIOR auf 0x00 gesetzt -> daher sind auch die ADTS auf 0 und der Trigger läuft auf Free Running.
Grüße
Flite
Hi Flite!
Was muss ich dann machen, um trotzdem eine 8 Bit Zahl ausgeben bzw. in temp packen zu können?Zitat von Flite
Muss ich das so machen
Code:ad_vector: in temp , ADCL sbi ADCSR , ADSC sei ret
Hallo Florian,
nein - das wird nicht funkitonieren.
Lies das ADCL in das Low Byte eines pseudo 16 Bit Registers ein (z.b. ZL)
dann das ADCH in das entsprechene High Byte (z.B. ZH).
Anschließend rotierst du das 16bit Register 2 mal nach rechts (wobei die zwei Bit aus dem High Byte ins Low Byte runterrutschen und die beiden LSB des Low Bytes verlohren gehen).
Viele GrüßeCode:ad_vector: in ZL, ADCL in ZH, ADCH ror Z ror Z mov temp, ZL sbi ADCSR, ADSC (sei) ret
Flite
Hi Flite!
Das habe ich mir schon fast gedacht, dass das nicht geht!
Naja, danke für Deine Erklärung, wie ich das dann machen kann!
Wenn ich demnächst mal Zeit haben sollte, dann werde den Code für den 4433 machen!
Ich denke mal, dass ich das heute oder morgen schaffen werde, jetzt ist ja endlich der Arbeiten-Streß vorbei, denn bald (7.7.) gibt es Zeugnisse!
\/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/
Lesezeichen