Forum: Mikrocontroller und Digitale Elektronik TIMER 1 generiert Signale nicht richtig


von D. I. (Firma: Fa) (buell)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich habe seit geraumer Zeit 2 Probleme, die ich ganz und gar nicht 
verstehe und mir jetzt die Hilfe von euch Experten einholen möchte.

Ich schaffe es zwar mit dem Repetition Counter und One Pulse mode 
Einstellungen von Timer 1 Pulse zu generieren, verstehe aber nicht warum 
bei TIMER1 die Signale ganz am Anfang etwas breiter sind als andere. Vor 
allem sind diese nicht durchgehend gleich breit, was auch komisch ist. 
Das ist gut zu sehen in den Bildern, die ich angehängt habe. Ich würde 
es gerne so haben, dass alle Pulse gleich sind und das Signal am Ende 
wieder low geht. Es bleibt aber high.
Die Auslesepulse für den ADC (rosa) sollten dabei immer kurz vor der 
nächsten rising edge kommen. Ich habe das mit PWM mode 1 und 2 bzw. 
Polarität high und low versucht anzupassen, aber ich hab da keine Chance 
dies passend hinzukriegen.

Bei TIMER 2 ist das Ziel einen einzigen center-aligned Puls in der 2. 
Hälfte des langen Signals (gelb) zu erzeugen. Das funktioniert auch 
soweit als PWM Signal und dem Center-aligned mode. Aber was ich nicht 
verstehe ist, warum das Signal anfangs immer high ist und warum der 
nächste Puls der PWM schon so früh kommt. Ich habe ja 2xARR (up-down 
counter). Der ARR-Wert ist ja genau in der Mitte der zentrierten Pulse. 
Das heisst, ich müsste das Signal spiegeln können, dann müsste nach dem 
1. Puls nochmals das Signal gleich lang low sein, wie anfangs eben und 
dann nochmals diese Periode wiederholen, sprich das low Signal müsste 
doppelt so lang sein wie anfangs. Wieso kommt der Compare Wert beim 2. 
Puls so früh??

Ich wäre euch wirklich sehr dankbar, wenn mir jemand von euch behilflich 
sein könnte. Ich beschäftige mich damit schon seit Wochen und bekomme es 
einfach nicht hin.

scope 4 und 6 sind von TIM1
scope 2 TIM2

: Bearbeitet durch User
von Dumpfbacke (Gast)


Lesenswert?

D. I. schrieb:
> Ich wäre euch wirklich sehr dankbar, wenn mir jemand von euch behilflich
> sein könnte.

Schön.

Und nachdem es nur zwei Timer, nämlich TIMER1 und TIMER2 auf
der ganzen Welt gib, kennen wir alle diese zwei Timer, nicht
wahr?

Und bei dir gibt es vermutlich nur einen Einheits-Prozessor,
den wir alle kennen und verwenden, und genau den verwendest
du natürlich auch, nicht wahr?

Mit der Einheits-Software wird es nicht anders sein.

von Stefan S. (chiefeinherjar)


Lesenswert?

Erstmal solltest du anstatt Romanen folgende Infos liefern:
- Welcher Controller
- Quellcode (ggf mit IDE)
- was der Sinn und Zweck ist
- ggf eine Skizze der Signale, wie du sie haben willst und wo es Fehler 
gibt
- ggf ein Foto vom Aufbau

Denn mit dem ganzen Signal-Prosa kann man nicht wirklich etwas anfangen.

von Erwin D. (Gast)


Lesenswert?

Ich hab da mal eine Frage.
Mein Radio funktioniert nicht richtig.
Kann mir jemand sagen, was ich machen kann?

@D.I.: So ähnlich muss sich jemand fühlen, der deinen Text liest.
Keiner weiss, um was es geht und um welchen µC es sich handelt.

von D. I. (Firma: Fa) (buell)


Angehängte Dateien:

Lesenswert?

Stefan S. schrieb:
> Erstmal solltest du anstatt Romanen folgende Infos liefern:
> - Welcher Controller
> - Quellcode (ggf mit IDE)
> - was der Sinn und Zweck ist
> - ggf eine Skizze der Signale, wie du sie haben willst und wo es Fehler
> gibt
> - ggf ein Foto vom Aufbau
>
> Denn mit dem ganzen Signal-Prosa kann man nicht wirklich etwas anfangen.

Hallo zusammen

Na ich dachte das wäre alles klar ;) Nein, Spass. Entschuldigt mich. 
Gerne liefere ich die Daten.

Es ist der STM32L476RG, sprich das NUCLEO Board.
Ich arbeite mit Keil uVision V5
Zweck: Mit dem TIM2 beleuchte ich die EPC901 Sensoren. Dazu benötige ich 
die zentrierten Pulse in der 2. Hälfte des gelben Signals.
Wenn die Sensoren beleuchtet sind, benötige ich die Ausleseclocks des 
TIM1. Das rosa Signal stellt den internen Trigger des ADCs dar (CH5 von 
TIM1).

Abfolge: Triggersignal hardwareseits startet TIM15--> TIM15 generiert 
das lange gelbe Signal (SHUTTER) im Bild scope 2 --> Dieses startet TIM2 
(getriggert) --> TIM2 generiert die zentrierten Pulse--> SHUTTER endet 
und der EPC sendet DATARDY1 Signal --> Im Interrupt DATARDY1 Start des 
TIM1 Counters und damit das Ausleseverfahren.
Das ist grob was ich vorhabe.

Gerne sende ich den Code, falls dieser gewünscht ist
Ich hoffe die Skizze ist verständlich. TIM1 ist unabhängig von den 
anderen Timern

Edit: Hier ist noch eine Formel die ich hergeleitet habe, um den 
ARR-Wert der center-aligned Pulse einzustellen, sodass der breiteste 
Puls mit dem ARR-Wert des gelben Signals, der 74ns verzögert ist 
anfangs, endet.

Flashsignal_ARR_Wert = [Periode_Shuttersignal_in_ticks – 6 ticks – 0.5 * 
Led_Flashpuls] * 0.5
zB mit periode 500 Shutter und Pulsbreite 200 des breitesten Pulses 
(500-6-200/2)*0.5

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.