Tastverhältnis berechnen

Gast #3463547
Lesenswert?

Hallo!
Ich muss mithilfe des EBI ein Blinklicht realisieren.
Dabei sind für die vier Tasten auch Tastverhältnisse gegeben.

z.b. 50Hz auf einem der Tasten mit einem Tastverhältnis von 1:4

Ich benutze den WGMODE und zwei Capture/Compare-Channels.
Dabei benutze ich die Formel vom AMANUAL z.b bei 2MHz Clock und 50Hz 
Blinklichtfrequenz:
CCA-Wert: (Clk/(2*Prescaler64))-1=624
nun für den zweiten Timerwert z.b. für die 1:4 muss ich jetzt was tun? 
mit 4 multiplizieren?

Kann mir jemand das ekrlären? :)
Gast #3463753
Lesenswert?

ok ich versuche es nochmal:
Mit EBI meine ich den External Bus Interface auf dem Atxmega.
Die oben erwähnten LEDS und Tasten befinden sich auf einem FPGA Board 
und eben diese muss ich ansprechen.
Entsprechend der vier Tasten auf dem Peripheriegerät soll auf dem LED 
ein Blinklicht realisiert werden. Die jeweilige Frequenz wird solange 
ausgegeben, bis mit einem erneuten Tastendruck eine neue Frequenz 
gewählt wird.
Z.B: Beim Drücken der Taste 1 lautet die Frequenz des Blinklichts 50Hz 
mit einem Tastverhältnis von 1:4.
Die Implementierung hätte ich schon, allerdings habe ich für alle Tasten 
als Tastverhältnis 1:1 benutzt, weil mir eben die Berechnung nicht so 
ganz klar ist.

Für die beiden verciedenen Timertopwerte verrursacht durch die 
Tastverhältnisse, benutze ich den CCA und den CCB.
Für den CCA-Wert benutze ich die Formel aus dem Atmega Manual (z.b. 
Clk=2MHz, Prescaler=64, Frequenz des Blinklichts=50Hz):
CCA-Wert: (Clk/(2*Prescaler64))-1=624
624 ist mein CCA-Wert nun wie muss ich vorgehen um den Wert für CCB zu 
erhalten (Tastverhältnis 1:4). Mit 4 multiplizieren? oder dividieren?

Ich hoffe, dass meine Anfrage jetzt etwas verständlicher ist :)
#3464168
Lesenswert?

mpt ich sage mal so:

ein Tastverhältnis von 1 zu 4 bedeutet:

1 Zeiteinheit an, dann 3 Zeiteinheiten aus,
also insgesamt t = 4 Zeiteinheiten = 100%, das entspricht 1/t deiner 
Frequenz.

Also jetzt kommt der Mathematiker von Dir in's Spiel:

Frequenz f = 50Hz
4 Zeiteinheiten = 1/f = 1/50Hz = 20ms
1 Zeiteinheit = (1/f) /4 = 20ms /4 = 5ms

Gegenrechnung:

5ms an -- 15ms aus = 20ms Zykluszeit

hehe passt ! - das hast du gut gemacht.
Gast #3464176
Lesenswert?

Hallo mpt,

etwas ungeduldig bist Du schon, oder? Zudem ist die Ausgangsfrage nicht 
sehr leicht zu durchschauen. Und zuletzt kann ich mich nur Ingo 
anschließen und nach Deinem Code fragen.
Hier mal ein konkreter Anhaltspunkt wie man es machen kann
http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial#pwm
http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial#beispiel_zur_single_slope_pwm

Im Prinzip wird das PER-Register für die Frequenz und das CCx-Register 
für das Tastverhältnis genommen.
Gast #3464225
Lesenswert?

Uwe S. schrieb:
> Also jetzt kommt der Mathematiker von Dir in's Spiel

xD
1
;beispielfrequenz 50Hz, 2Mhz Clock, 64 Prescaler
2
  .equ KEY0_CCA=624
3
  .equ KEY0_CCB=624/4 ;ich glaube jetzt habe ich es verstanden oder? 
4

5
BLINK_1:
6
  ldi gTemp, low(KEY0_CCA) ;load low and high bits to our register
7
  sts TCE0_PER,gTemp
8
  ldi gTemp, high(KEY0_CCA)
9
  sts (TCE0_CCA+1),gTemp  ;finally put them back to the CCA register to set a new TOP value
10

11
  ;second timer value for duty cycle value
12

13
  ldi gTemp, low(KEY0_CCB)
14
  sts TCE0_PER,gTemp
15
  ldi gTemp, high(KEY0_CCB)
16
  sts (TCE0_CCB+1),gTemp
17

18
  ret
Im CCA Interrupt schalte ich dann die LEDs an und im CCB Interrupt die 
LEDs aus

Ingo schrieb:
> Warum nimmst du nicht das Period-Register für die Frequenz und dass CCx
> Register für den Tastgrad!

wäre wahrscheinlich klüger gewesen

Besserwisser schrieb:
> etwas ungeduldig bist Du schon, oder?
will die Übung vor dem 31. fertig haben und wollte daher verhindern, 
dass die Anfrage untertaucht :)
Gast #3469007
Lesenswert?

habe das Codestück schon gepostet, aber jetzt kommt keine Antwort mehr 
xD

und was bedeuet es im umgedrehten Fall hab? also sprich 4:1 statt 1:4?
4 Zeiteinheiten an und 1 Zeiteinehit aus?

in diesem fall wäre die intialsierung dann so?
1
  .equ KEY0_CCA=624/4
2
  .equ KEY0_CCB=624

mfg
#3469155
Lesenswert?

mpt schrieb:

>   .equ KEY0_CCA=624/4
>   .equ KEY0_CCB=624[/c]

Selbst wenn das /4 richtig wäre:
Du scheinst nicht verstanden zu haben, was du da eigentlich einstellst.
Mit CCA stellst du die komplette Zeit ein (also: über alles). Mit CCB 
stellst du den 'An'-Anteil davon ein.
(Wenn ich den Rest richtig interpretiere)

1:4
sind in Summe 5
d.h. der An-Anteil ist 1/5

   .equ KEY0_CCA=624
   .equ KEY0_CCB=624/5

4:1
sind in Summe ebenfalls 5
Aber diesmal ist der An-Anteil dann eben 4/5

   .equ KEY0_CCA=624
   .equ KEY0_CCB=4*624/5
Gast #3469260
Lesenswert?

Karl Heinz schrieb:
> Denn sonst würde ein Tastverhältnis von 1:1 keinen Sinn ergeben. 1:1 ist
> aber 50% ein und 50% aus.

jetzt hat sich für mich dieses Phänomen jetzt auch geklärt :) danke

Karl Heinz schrieb:
> Du scheinst nicht verstanden zu haben, was du da eigentlich einstellst.
> Mit CCA stellst du die komplette Zeit ein (also: über alles). Mit CCB
> stellst du den 'An'-Anteil davon ein.

da hast du Recht, so ganz klar war mir das nicht. Aber jetzt versteh ich 
was ich tue :) danke

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