Screenshoot Oszilloskop! Wer kann helfen?

Gast #2446487
Lesenswert?

Hallo!

Im Ahnang ist ein Bildchen das ein Rechteck-Signal von 37.5 khz zeigt.

Dieses Rechteck-Signal wird mit einem µC AT89C51AC2 an P4.0 über Timer 1
erzeugt.

Was ich wissen möchte wraum diese Rechteck-Signal hin- und herschwingt.

Ich verwende Rigol DS1202CA falls das noch wichtig ist.
Angehängte Dateien:
#2446506
Lesenswert?

...wird über Timer 1 erzeugt...

Wenn dabei der Timer-Int beteiligt ist, etwa in der Form dass der Timer 
nach jedem Overflow im overflow-int auf die Startzahl gesetzt wird, wird 
der Jitter recht stark. Da werden, je nach Reaktionszeit auf den Int die 
Zeitabschnitte der Rechteckspannung eine streuende Dauer haben.

Wahrscheinlich ist auch die Taktfrequenz des Kontrollers zu niedrig für 
diese Anwendung.

Im reload-Betrieb des Timers dürfte ein wesentlich kleinerer Jitter 
entstehen. Auch da sollte man eine möglichst hohe Taktfrequenz wählen, 
denn eigentlich kann man auf diese Weise nur Frequenzen erzeugen die 
eine ganzzahlige Teilfrequenz des Taktes sind.
Gast #2446509
Lesenswert?

Danke erstmal für die Antworten:

@Gibts Ne
  Leider kein Debugger verfügbar!

Habe jetzt mal nur den Timer 1 in Betrieb und in der Interrupt-Routine
den P4.0 getogelt und sieht stabil aus.

Davor hatte ich den Timer 2 laufen als Baudgenerator und Zeichen 
gesendet.
Hmm? Kann es sein das dieses Wackeln vom Rest des Programmes kommt.

Wenn ja wie bekommt man sowas in Griff?
#2446530
Lesenswert?

größerer Quarz ??? Du meinst höhere Taktfrequenz.

Dabei aber auch an die echte Taktfrequenz denken, bei den meisten 
8051-ern ist sie eh nur 1/6 oder gar 1/12 der Quarzfrequenz. Das war vor 
etwa zehn Jahren für mich der Grund, auf einen AVR umzusteigen, bei dem 
ich hängen geblieben bin.

In den Griff bekommen: möglichst hohe Taktfrequenz, Erzeugungsmodus 
wählen, bei dem der Teiler die Unterfrequenz jitterfrei erzeugt. (Dazu 
sollte man die hardware kennen und die software dazu). Auch muss man 
beachten, wie das Arbeitsergebnis auf P4 übertragen wird: Manchmals 
stottert die Ausgabe, weil ein anderer Int dazwischen funkt.

Für viele AVR' gibts eine Betriebsart, wo der Teiler direkt eine 
Portleitung toggelt, ohne dass das eigentliche Programm mit seinen Int's 
hineinstolpert.  ("Stichwort" PWM) Dann entsteht ein (fast) jitterfreies 
Signal.

Miss mal die Breite der Phasensprünge der Flanken nach, die werden 
sicher etwas mit der echten Taktfrequenz zu tun haben.

Wenn das Scope eine sehr niedrigen sample-Takt hat, könnte auch so ein 
Bild entstehen.
Gast #2446985
Lesenswert?

Anja schrieb:
> zwischen 1 und 4 Taktzyklen

muß natürlich heißen: Befehlszyklen.

Du kannst aber auch den Uart für die Taktausgabe mißbrauchen.

Falls das ganze eine IR-Fernbedienung werden soll:
normalerweise ist das Tastverhältnis nicht 50% sondern nur 25%.
Damit kann man bei gleichem (mittlerem) Stromverbrauch die Reichweite um 
Faktor 1,4 erhöhen.

Gruß Anja
(Firma: BB) #2447101
Lesenswert?

Hallo Klaus,

Wenn die Interrupt Priorität für die Serielle Schnittstelle höher als 
die für den Timer ist kann es auch zu einem extrem großen Jitter kommen.
Wie die anderen schon geschrieben haben entsteht durch die Interrupt 
Verarbeitung immer ein kleine Jitter von einigen Befehlszyklen.

Gruß BerndB
#2447104
Lesenswert?

Hallo Klaus,
da ich auch schon Pferde vor der Apotheke gesehen habe würde ich sagen,
der letzte Teilnehmer , also Autor: Bernd B. (Firma: BB) (berndb) hat
die grösste Chance Recht zu haben.
Alternativ biete ich dir einen Rechenfehler an.
z.B. das ein Byte zwar 256 Schritte hat aber von 0 bis 255 zählt.

Die Vorschläge bezüglich anderen Quarz etc. würde ich mal in den Müll
packen. Selbst mit dem internen Oscillator wäre das Signal nicht so
(J)Zitterig.

Musst halt mal die Programmierung des Timers herausrücken.

Klaus
Gast #2447165
Lesenswert?

Wahnsinn!

Vielen Dank an alle für die vielen ausführlichen Diagnosen.

Auszugsweise:
Der Timer1 interrupt ist sehr einfach programmiert.
Timer2 wird ohne Interrupt durchlaufen.

org  0000h
JMP Initialisierung

ORG   1BH
      JMP   Timer_1_Interrupt



Initialisierung:
MOV   CKCON,#00001001b ; Timer 1 1/6  und Timer 2 1/12 clocktakt

MOV   TL1, #TH1_INIT
MOV   TH1, #TH1_INIT
MOV   TMOD, #20H     ; Timer 1 im 8 Bit Reload Betrieb

SETB  ET1            ; Timer 1 Überlauf-Interrupt Enable-Bit setzen
SETB  EA             ; Alle Interrupts ein
SETB  TR1            ; Timer 1 Run Control Bit ein



Timer_1_Interrupt:

CPL   P4.0

RETI

@Anja
Du hast fast recht mit deiner Vermutung. Das Ziel ist es eine eine 
IR-RS232-Schnittstelle zu schaffen. Der Kabelsalat geht mir so langsam 
auf den Wecker.

Empfangen von Daten ist kein Problem aber das senden stellt sich 
schwieriger heraus als erhofft.
Ich denke das ich mit dem 12 Mhz Quarz keine 36khz hin bekomme.
Entweder ist es 35,7 oder 37,0 khz. (Am Kopf Kratz ??)
Gast #2447199
Lesenswert?

Hi!

Zum Testen, ob es am Oszi (bzw den Einstellungen) liegt oder am AVR 
kannst du probweise ein Programm schreiben, dass nur eine while(1) 
Schleife hat, in der der Pin getoggelt wird. Wenn es da auch jittert, 
kannst du den AVR ausschließen. Der Jitter des Quarzes ist - wie schon 
gesagt wurde - DEUTLICH unter dem hier gezeigten Jitter.

Nochmals die Frage: Auf welche Spannung triggerst du?
Und: Warum hast du nur eine Amplitude von 600 mV???
Gast #2447213
Lesenswert?

@Stefan Zimmermann

>Nochmals die Frage: Auf welche Spannung triggerst du?
>Und: Warum hast du nur eine Amplitude von 600 mV???

Nun ja ich habe den Knopf Auto gedrückt! Die Trigger werden Automatisch 
gesetzt. Als ich die Aufnahme gemacht habe ist mir, das gar nicht 
aufgefallen. Es wird eher so sein das ich beim einstellen was Verkehrt 
gemacht habe.
Gast #2447233
Lesenswert?

@Stefan Zimmermann

Die Ursache für die 500mv waren, das der Messgeber auf 1x statt 10x 
eingestellt war.
Das Aktuelle Bild zeigt CH1 den Takt für Timer 1
und CH2 zeigt TxD über Timer 2 als Baudratengenerator.

@Peter
An den PCA habe ich auch schon gedacht allerdings komme ich nicht auf 
die
besagten 36Khz.
Angehängte Dateien:
Gast #2447383
Lesenswert?

So ich hab mal versucht 36 kHz mit PCA zumachen hier der Quellcode:

Allerdings lassen sich nur 33,3 Khz oder 38,5 khz einstellen.

Im Moment ist ein 12 Mhz Quarz eingebaut.
Soll oder muss es sogar ein 11,0592 Mhz sein??


$INCLUDE "Atmel\T89C51AC2.mc"

; -------------------------------------------------------------
; Programmstart
; -------------------------------------------------------------

ORG 0h
  JMP Initialize

; -------------------------------------------------------------
; Interrupt-Routinen
; -------------------------------------------------------------
ORG   0033h
   LJMP  PCA_ISR

; -------------------------------------------------------------
; Eingefügte Dateien
; -------------------------------------------------------------
$INCLUDE declarations.asm


; -------------------------------------------------------------
; Initialisierung des Programms
; -------------------------------------------------------------

Initialize:
   MOV   SP, #40H


   MOV CMOD,#00000011b

   MOV CCON,#00h

   MOV CCAP4H,#00h
   MOV CCAP4L,#10h      ; 0Fh = 38,5khz;  10h = 33,3 khz
   MOV CL,#00h
   MOV CH,#00h

   MOV CCAPM4,#01001101b   ; PCA High-Speed Modus
; -------------------------------------------------------------
; Hauptprogramm
; -------------------------------------------------------------

Main:
   SETB  EC
   SETB  EA
   SETB  CR
;

; -------------------------------------------------------------
; Programmende
; -------------------------------------------------------------

Finalize:
   JMP finalize

; -------------------------------------------------------------
; Daten
; -------------------------------------------------------------


PCA_ISR:
CLR   CCF4
MOV   CL,#00h
MOV   CH,#00h

RETI
Gast #2448617
Lesenswert?

Moin!

So hab jetzt mal den Quarz gegen 11,0592 Quarz getauscht.
Allerdings lassen sich trotzdem nicht die 36kHz einstellen.


Im PCA-High-Speed Modus und der µc X2 Modus lassen sich bis 70khz 
einstellen.

Einstellen lassen sich 35,5 38.5 darüber oder darunter aber niemals
36 khz.


Bei einem 11,0592 oder 12 mhz Quarz müsste man doch meinen jede 
beliebige
khz Zahl einstellen zu können. Ich meine das müsste µC doch können oder 
nicht?

Also ich bin jetzt richtig ratlos. Irgendwas blick da nicht hmmm.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren