Nee, bin nicht untergetaucht. Habe mal was Angehangen. Würde das so auch laufen ? Oder habe ich an PortC.2 nur die halbe Frequenz ?
Druckbare Version
Nee, bin nicht untergetaucht. Habe mal was Angehangen. Würde das so auch laufen ? Oder habe ich an PortC.2 nur die halbe Frequenz ?
Hmm, wohl eher nicht ....
1. Wofür der Prescaler ?
2. Wofür der Preload Wert
3. Wofür die Timer ISR
Lies die diewsbezüglich nochmal den Grundgedanken von -Thomas- vom 11.07.2006, 12:56 durch.
Im Klartext: wenn der µC mit 16 MHz rennt musst du alle 8 Takte den Pin togglen um ein 1 MHz Rechteck Signal zu bekommen. bei 12 MHz ist es übrigens alle 6 Takte.
Grüße,
da Hanni.
Ist das schwierig. Es geht im übrigen um folgendes: Der AVR muss mit einem anderen Prozessor komunizieren, der einen anderen Takt hat. Wenn er einen eigenen Quarz erhällt, kann es zu problemen mit der Syncronisation kommen. Also sollte der Takt vom AVR kommen. Ich muss es also irgendwie schaffen, das ich ein einem Portpin ein 1mhz Takterzeuge, der den Programmablauf nicht groß stören darf.
Da ich noch nicht so viel erfarung mit Bascom hab, bitte ich um eure Hilfe.
Danke !
Na verwende doch einfach den gleichen Takt für beide...
Das spart Bauteile, der Takt ist synchron, du verschwendest weder Flash noch PWM-Kanäle und musst nicht mit Timern rumfrickeln.
Nuja, das selbst ist eher nicht das Problem.Zitat:
Zitat von Mr-400-Volt
Meiner Ansicht nach besteht es eher darin, das man in diesem Fall die durchaus bequemen Bascom Pfade verlassen muss. Also weg von dem "Config Timer0" Syntax !!!
Fakt ist, das es in diesem speziellem Fall das einfachste ist die entsprechenden Register des Timers direkt anzusprechen.
Hier mal im Klartext die Bits, die in den entsprechenden Registern gesetzt werden müssen:
TCCR0
- WGM01
- COM00
- CS00
OCR0
- bei 16 MHz: 7
- bei 12 MHz: 5
Damit läuft der Timer auch schon und das alles ohne einen Interupt der in dem Fall der absolute Rechenzeit Killer sein dürfte.
Der Pin der damit das 1 MHz Signal ausgibt ist übrigens: B3
Warum das so ist kann man auch im Datenblatt nachlesen.
Wie man das allerdings in Bascom in die entsprechenden Register bringt solltest du selbt wissen.
Grüße,
da Hanni.
Okay... wenn der AVR nen Takt von 16 Mhz hat... warum dann nicht einfach nen Timer mit prescaler 16 benutzen und bei jedem mal, wenns voll is, einfach kurz den gewünschten Pin auf 1 schalten?
Ist so nicht ganz richtig.Zitat:
Zitat von Lunarman
Denn:
voll = 255 (zu rechnen ist mit 256, da 0 - 255 = 256 Zustände sind)
256 * 16 = 4096
16000000 MHz / 4096 = 3906,25 Hz
oh. hmm. Denkfehler gibts immer...
ergänzend zu den Ausführungen von Hanni:Zitat:
Zitat von Lunarman
Bascom verbraucht allein für Push+Pop der Register in einer ISR über 100 Takte...