PD6 ist auch als Ausgang definiert?
Uwe H. schrieb:> TIMSK2 |= (1<<TOIE0);
Das geht lt. Datenblatt nicht. Richtig wäre
1
TIMSK2|=(1<<TOIE);
Uwe H. schrieb:> _delay_ms(0.1);
Du kannst an die _delay_ms() und _delay_us() Funktion keine
Gleitkommazahl übergeben, es sind nur Integer erlaubt. Also z.B.
Man nimmt zum Beschreiben der Timer*2*-Register TCCR*2*B, nicht Bitnamen
anderer Timer wie CS*0*0.
Ansonsten wäre es schlau wenn man eine Frage hat, diese auch zu stellen,
bzw. hinzuschreiben.
Nur noch für die Zukunft. Ein delay in einer ISR ist keine gute Idee, da
damit der MC blockiert wird. Das spielt im Moment noch keine Rolle, aber
immerhin sind 100µs keine anderen Reaktionen mehr möglich.
In der Hauptschleife ist das undramatisch.
Matthias S. schrieb:> Du kannst an die _delay_ms() und _delay_us() Funktion keine> Gleitkommazahl übergeben, es sind nur Integer erlaubt.
Man kann, darf, und es funktioniert auch.
Sie sind nicht nur zum Spaß so definiert:
Stefan E. schrieb:> Man kann, darf, und es funktioniert auch.
Gut, dann ziehe ich den Einwand zurück :-) Ich tue es trotzdem nicht,
weil ich mir dann den ganzen Floating Point Kram ins Projekt ziehe.
Stefan E. schrieb:> Matthias S. schrieb:>> Du kannst an die _delay_ms() und _delay_us() Funktion keine>> Gleitkommazahl übergeben, es sind nur Integer erlaubt.>> Man kann, darf, und es funktioniert auch.> Sie sind nicht nur zum Spaß so definiert:>
1
>void_delay_ms(double__ms);
2
>void_delay_us(double__us);
3
>
Das sind Macros, die nur mit Konstanten funktionieren, weil die
tatsächlich zu wartenden Takte vom Compiler berechnet werden (müssen).
Der kann float/double.
MWS schrieb:> Ansonsten wäre es schlau wenn man eine Frage hat, diese auch zu stellen,> bzw. hinzuschreiben.
Finde ich auch immer wieder faszinierend mit welcher Selbst-
verständlichkeit hier Probleme mit impliziter Fragestellung
gepostet werden bei denen sich jeder Leser selbst die
(nichtgestellte) Frage ausformulieren darf.
Uwe H. schrieb:> TIMSK2 |= (1 << TOIE);> TIMSK2 |= (1<<TOIE0);MWS schrieb:> nicht Bitnamen anderer Timer
In der Annahme, dass Du die Antworten hier liest, könnte man annehmen,
dass Du für diese Technik leider zu begriffstutzig bist. Es gibt auch
andere schöne und erfüllende Tätigkeiten, die vergebender sind, wie wäre
es mit gärtnern, freie Natur, etc.?
Hallo,
ich würde dir ja gern helfen wie viele andere sicherlich auch. Nur ohne
kompletten Code der wenigstens kompiliert und ohne konkrete Frage was
der Timer überhaupt machen soll, welcher Modi usw. wird das nun einmal
nichts.
> gern helfen wie viele andere sicherlich auch
Schon, aber gleich bei der ersten Zeile fallen die Schultern herunter
und man pfeift durch die Nase:
> TCCR2B = (1 << WGM00)
Setzt in TCCR2B das Bit 0, also CS20.
Nach Auflösung der inherenten Kryptik*:
"Timer2 wird mit Vorteiler 1024 betrieben"
4MHz // 1024 // 256 -> 15,25Hz, also wenigstens der Kommentar ist (fast)
ok
Man kann übrigens, wenn man den kurzen Puls an PD6 zu kurz findet, den
Pin auch einfach togglen. Statt "|=" einfach "^=" schreiben, nur diese
eine Zeile, kein delay() mehr nötig, kein Rückseten mit "&=". Gemessen
wurden dann 0 ms zwischen auf- und absteigender (oder umgekehrt) Flanke.
* WGM00=0
CS01=1
0<<1 | 1<<1 | 2<<1 = 7 oder 0b111
Schöner schreibt man z.B.:
1
enum{// Label -> Bit-Wert
2
CS_STOP=0,// oder 0b000, dann wird klar, daß es um 3Bits geht
3
CS_DIV_1.=1,// 0b001
4
// ...
5
CS_DIV_1024=7// 0b111
6
};
7
TCCRB=(0b0<<WGM22)// WGM<4
8
|(CS_DIV_1024<<CS20)// Bit-Wert an richtige Position schieben
Karl M. schrieb:> Hallo Carl D. schrieb:>> TCCR2B = (1 << WGM00)>> //| (1 << CS10); //489 Hz>> //| (1 << CS00); //489 Hz>> //| (1 << CS22); //61 Hz>> //| (1 << CS01); //1,9 KHz>> //| (1 << CS02); // 61 Hz>> //| (0 << CS01) | (1 << CS00) | (2 << CS01); //122 Hz>> | (0 << CS01) | (1 << CS01) | (2 << CS01); //15 Hz
Das war das Original des TOs und nicht meine darunter zu findende
Variante.
Ok, ich hätte das mit "Achtung jetzt kommt Mist" kenntlich machen
sollen.
> Es wurde ja schon mehrmals geschrieben die Kostanten (Defines) (1 <<> WGM0[0-3], CS0[0-2] gehören zu Timer0!
"gehören zu" ist eher Konvetion, denn Eigenschaft. Es sind Kostanten,
die zugegebenermaßen sehr Kreativ zur Verschlüsselung eingesetzt wurden.
Wenn man so was wie ein Typesystem hätte, ... (wäre dann aber "zu
abstrakt")
> Diese Schreibweise ist sehr ungewöhnlich>
1
(0<<CS01)|(1<<CS01)|(2<<CS01)
> und steht so nicht im Datenblatt für das Einstellen des Timer2> Prescalers.
Das ist eher ein Indikator für das Unverständnisses des TO in diesem
Fachgebiet. Und zwar Sprache und HW.
Cut&Paste bis es zufällig geht, das gibt's sogar unter dem Label "Profi"
Carl D. schrieb:> Das ist eher ein Indikator für das Unverständnisses des TO in diesem> Fachgebiet. Und zwar Sprache und HW.
Habt ihr schon mal daran gedacht dass solche Threads Fake sein
könnten? Gezielt bestimmten Mist produzieren damit hier die
Fachleute "anspringen" und damit hier auf den Seiten viel
Traffic entsteht (ist ja im Sinne des Seitenbetreibers)?
Es spricht einiges dafür, z.B. weil der TO nur immer wieder
gerade soviel Bruchstücke postet damit der Thread am Laufen
bleibt. Schon oft genug dieses Verhalten hier erlebt dass
es leider viel zu verdächtig ist. Denn der TO könnte sich
ja nach der Aufforderung durchaus einmal detaillierter
äussern.
Im Endeffekt ist es ja eine Verarschung der vielen Hilfs-
bereiten, aufgrund eines (vermuteten) Geschäftsinteresses.