Nimm doch einen Oszillator (anstatt quarz) und Teiler /16
Hallo, ich habe eine schaltung mit einem M16 und einem Quart zwischen 10 und 16 mhz entwickelt. Mein Problem ist, das ich einen Takt von 1mhz an Portx.5 erzeugen muß. Wie könnte ich das erledigen ? Währe für jeden Tipp dankbar !!!
Nimm doch einen Oszillator (anstatt quarz) und Teiler /16
erzeuge den Takt mit einem 1Mhz-Quarz und einem 74HC00
http://elektronik-kompendium.de/publ...uarz-oszil.htm
alternativ kannst Du natürlich bei einem 16Mhz Mega16 mit BASCOM/Assembler eine Schleife bauen und bei 16 Mhz die 16 Takte verteilen auf:...leider ist dann der Mega16 vollloop:
SBI x,5 '2 Takte SET BIT in I/O Register
nop '1 Takt
...
nop '1 Takt
CBI x,5 '2 Takte CLEAR BIT in I/O Register
nop '1 Takt
...
JRMP loop '2 Takte
also nimm gleich einen 74HC00
Man könnte es übrigens auch über eine Art Hardware PWM quasi nebenbei erledigen lassen.
Man muss eigentlich nur den richtigen Timermode nutzen.
Und die entsprechenden Register entsprechend setzen (den Topwert & den Comparewert)
Grüße,
da Hanni.
Für PWM wird die Zeit nicht reichen ... der Ausgangsport muss bei 16Mhz immerhin alle 8 Takte togglen.
Vorschlag: Timer0 -> Clear Timer on Compare Match (CTC) Mode (WGM01:0 = 2)das wären dann 8Mhz an OC0 bei 16Mhz Taktfrequenz...For generating a waveform output in CTC mode, the OC0 output can be set to toggle its logical level on each compare match by setting the Compare Output mode bits to toggle mode (COM01:0 = 1).
The waveform generated will have a maximum frequency of fOC0 = fclk/2 when OCR0 is set to zero (0x00).
Was ist daran nun anders als an Hannis Vorschlag?
Du kannst doch die 1MHz direkt von der Takt-Treiberstufe des AVR abzweigen. Musst nur die Fuses passen einstellen. Falls das ganze abschaltbar sein soll, machst einfach nen Analogschalter oder so dazwischen, der über nen µC-Port an/ausschaltbar ist.
Disclaimer: none. Sue me.
@e-fan
Ich wollte dem Einsteiger etwas konkretere Hinweise gegeben, da er im Bascom-Handbuch unter PWM nicht zu Ziel kommen wird. Leider kennt Bascom den CTC-Modus nicht, deshalb mein Auszug aus dem M16-Manual.
...übrigens unterscheidet das M16-Manual zwischen CTC und PWM
Die Frage war n bissel neckisch gemeint!
CTC ist nur eine Abkürzung eines PWM-Modus (Clear Timer on Compare Match).
Hier wird der Timer bei erreichen des OC-Registerwertes auf 0 zurückgesetzt und der entsprechende OC-Ausgang umgeschaltet (toggle).
Ich denke mal das man Bascom nicht unbedingt alles abverlangen kann zumal man die Register sehr leicht selber einstellen kann in dem man die die Abkürzung des Registers als Byte oder Word behandelt (Beispiel: OCR1B=xyz oder TCCR1A= &B...).
Ich hab am Anfang auch ziemlich derbe gegrübelt zumal ich in Sachen µC und Programmierung in Basic absoluter Autodidakt bin.
Wie ich schon sagte:
Atmel bezeichnet im Manual nur das Signal als PWM, das verschieden lange Pulsbreiten hat (kein CTC), wenn es frei läuft.
Du betrachtest (wie andere auch) z.B. auch den Oscillator des Atmega als eine Sonderform der PWM (gleiche Pulsbreite).
soweit zur Theorie - leider ist der anfragende Mr-400-Volt untergetaucht
Lesezeichen