Timer/Counter gegenseitige beeinflussung?

dg2ygq

Neues Mitglied
23. Juli 2007
239
0
0
Bielefeld
Sprachen
Ich habe ein Programm zusammen gebastelt:
- einmal wird die Quarzfrequenz durch 8 geteilt (die 1,28Mhz brauch ich für ein anderes IC
- und einmal benötige ich eine Umschaltung zum multiplexen einer 7Segmentanzeige.

Code:
$regfile = "m8def.DAT"
$crystal = 10240000
$lib "i2c_twi.lbx"

Config Timer0 = Timer , Prescale = 256
On Timer0 Mux
Const Timervorgabe = 178
Enable Timer0
Enable Interrupts

Config Portd = Output
Config Portc = Input
Portc = 255
'--------------------------
Config Portb = Output

Ocr2 = 3
Config Timer2 = Timer , Clear Timer = 1 , Compare = Toggle , Prescale = 1

Könnte es sein, dass sich beide ins Gehege kommen?
Sobald ich den Timer0 deaktiviere, funktioniert das über OCR2 "versorgte" PLL-IC einwandfrei.
Wenn ich aber nun den Timer0 aktiviere, erzeugt mir das PLL-IC die lustigsten Frequenzen.

Was hättet ihr für Lösungen für dieses Problem? Ein 1,28Mhz Quarz den ich direkt an das PLL-IC anschließen könnte, scheint wohl schwer zu beziehen zu sein?
Andere Möglichkeit wäre einen größeren Atmel zu nehmen, so dass ich beide 7-segmentanzeigen an je einen Port an schließe, aber mir ist der Mega8 schon zu groß :mad:
 
Das Signal am OC-Pin des Timer2 müsste eigentlich unabhängig von den Einstellungen des Timer0 sein, da das OutputCompareSignal rein durch die Hardware des AVR erzeugt wird. Könnte es sein, dass hier Bascom etwas an den Einstellungen des Timer2 verändert, wenn die Register für den Timer0 eingestellt werden? Die OutputCompare-Funktion wirkt direkt auf das zugehörige Portregister-Bit, sie hat also Vorrang vor anderen Zugriffen auf das Portregister-Bit, allerdings muss man das entsprechende Bit im Direktionregister auf Ausgang schalten. Bascom macht das ja bestimmt bei der Initialisierung der OutputCompare-Funktion, vielleicht wird das aber irgendwo nachträglich geändert?

Kannst du das OutputCompareSignal mit Oszilloskop überprüfen? Wenn ja, stellst du eine Veränderung fest?

Hat jetzt direkt nichts mit dem Timer2 OC-Event zu tun, aber nur mal als Hinweis ...
Der Zeitpunkt zu dem die Timer0-Interruptroutine ausgeführt wird kann allerdings schwanken, wenn andere Interruptanforderungen anstehen die eine höhere Priorität haben oder wenn andere Interruptroutinen gerade ausgeführt werden und du hier nicht explizit den Timer0-Interrupt explizit freigibst, damit die zugehörige Interruptroutine quasi-parallel ablaufen kann.

Dirk
 
Ich habe mir das Signal noch nicht mit dem Oszi angeschaut, aber die Idee ist gut, werde ich gleich mal versuchen.
Wenn nun der Timer für die Multiplex-Anzeige gestört wird, wäre ja nicht weiter hin schlimm, das würd man mit bloßem Auge eh nicht sehen.
Vielleicht versau ich mir mit dem Umschalten der Leds ja auch bloß die Spannung die auch das PLL-IC versorgt.

Ich mache mal meinen Oszi startklar und schau mal was überhaupt passiert.
 
Stimmt Dirk!
OC wird NICHT beeinflusst, es ist meine VCC Spannung die unsauber wird.
Also werde ich wohl nochmals an der Stabilisierung (uA7805) ansetzen müssen.

Den PortB.3(OC) setze ich schon von Anfang an auf Ausgang:
Code:
 Config Portb = Output   ' PortB.3 = OC = Ausgang
Ocr2 = 3
Config Timer2 = Timer , Clear Timer = 1 , Compare = Toggle , Prescale = 1
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)