HDD Clock

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

HDD Clock

Hozzászólás Szerző: broland »

Sziasztok

Elővettem ezt a régi projectemet, mondván befejezem, de lenne egy két apró kérdésem a kivitelezéssel kapcsolatban.
Az egész alapja ugye egy réssel ellátott gyorsan (kb 5000/min fordulattal) forgó tárcsa,alulról megvilágítva egy RGB led csíkkal, amit bizonyos időpontokban ki-be kapcsolgatunk.
Igazából egy mintát találtam C-ben, de nem abszolút nem értem mi is csinál.
A kérdés az lenne:
-a motor fordulata legyen mondjuk 5000/perc, ebből következik, hogy egy fordulat ideje 12msec. Ennyi időnként esik be egy jeladótól megszakítás.
-álljon mondjuk a háttérvilágítás 12 körcikkből, egy adott háttér szín ideje akkor 1ms.
-ha a másodpercet is ki akarom jelezni, akkor annak az ideje ugye 12ms/60=>0.2ms (ez mondjuk legyen majd fehér).

Nem tudom hogy jól gondolkozom e, de én magas frekvenciás hw pwm-el hajtanám meg a ledeket. De ez mekkora legyen? Bele kellene férni a periódusidejébe a legkissebb cikk idejébe, ami 0.2ms?

miért van az, hogy ha bekódolom a hw pwm-et a timer1-re:

Kód: Egész kijelölése

 
Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up, Compare B Pwm = Clear Up

Pwm1a = 100
Pwm1b = 128
Pwm1c = 200
a magas szintek nem egyszerre indulnak el?(vagy csak a scopon látom rosszul?) :roll:

Előre is köszönöm a segítséget.
Üdv Roland
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Compare B PWM miért van 2x?

A clear up helyett clear down-t írj....
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Hozzászólás Szerző: broland »

Szia Robi

Bocs, csak fejből írtam, ctrl+c/ctrl+v páros is játszott.
Természetesen az utolsó a C akart lenni.

A clear down-t kipróbálom.

Köszi.

Üdv Roland
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Hozzászólás Szerző: broland »

Sziasztok

Robi: kipróbáltam, de aztán néztem az adatlapot, mivel nem fast pwm-be, hanem phase correct pwm-ben megy, a kitöltési tényező nagyságától függ, hogy adott kimenet mikor vált el pl egy szinkronjelhez képest. Ha ettől eltekintek megy az a része jól. De amit észrevettel: valahogy ha a timer1-et pwm-ként, a timer3-at pedig sima timer-ként szeretném együtt működtetni nem megy. Valamit elnézek, de nagyon:

egy kódrészlet:

Kód: Egész kijelölése

$regfile = "m128def.dat"
$crystal = 16000000
$baud = 38400

$hwstack = 255
$swstack = 255
$framesize = 255

Dim Pattern As Byte
Pattern = 0

Config Porta = Output
Porta.0 = 0

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Compare C Pwm = Clear Down

Pwm1a = 128
Pwm1b = 200
Pwm1c = 50

Config Timer3 = Timer , Prescale = 1
Timer3 = 35536
On Timer3 Change

Start Timer3
Enable Timer3
Enable Interrupts

Do

  nop

Loop

End

Change:
 Toggle Porta.0

 Stop Timer1
 Stop Timer3
 Disable Timer1
 Disable Timer3
 Disable Interrupts

 Timer3 = 35536

 Select Case Pattern
  Case 0:
   Pwm1a = 128
   Pwm1b = 200
   Pwm1c = 50
   Pattern = 1
  Case 1:
   Pwm1a = 128
   Pwm1b = 50
   Pwm1c = 200
   Pattern = 0
 End Select

 Start Timer1
 Enable Timer1
 Start Timer3
 Enable Timer3
 Enable Interrupts

Return
A timerekre vonatkozó enable, start részeket már teljesen összekevertem, az összes verziót kipróbáltam. Az utolsó az, hogy azonos prescale esetén valamit csinál, de nem az igazi.

Mit rontok el?

Előre is köszi.
ÜDv Roland
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

config timer3=....

prescale=1:
nincs semmi idő szinte a főprogramra!

fastpwm beállítás: regiszterírással megy Bascomból....
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Hozzászólás Szerző: broland »

Sziasztok
Köszi a segítséget, azért csak összejött, de még sokat kell finomítani rajta.
A 97% terhelt áramkör szimulátor (ISIS) is telibeszivatott, a látott oszcilloszkóp képnek hittem(én balfék).
Most csak annyit csinál, hogy fast pwm-ben beállítva az int7-en jövő 24ms-os impulzusok hatására elindítja/megállítja a pwm csatornákat.
Ezzel láttam, hogy a trigger jelre a pwm kimenetek egyszerre indulnak.
Van 3 fázisú szabályzóm itthon, lassan építem a vasat. Folyt. köv.

Üdv Roland

Kód: Egész kijelölése

$regfile = "m128def.dat"
$crystal = 16000000
$baud = 38400

$hwstack = 255
$swstack = 255
$framesize = 255

Config Portb = Output
Portb = 0

Config Porta = Output
Led Alias Porta.0
Led = 0

Dim Tstart As Bit
Tstart = 0

Tccr1a.com1a1 = 1
Tccr1a.com1a0 = 0
Tccr1a.com1b1 = 1
Tccr1a.com1b0 = 0
Tccr1a.com1c1 = 1
Tccr1a.com1c0 = 0
Tccr1b.wgm13 = 0
Tccr1b.wgm12 = 1
Tccr1a.wgm11 = 0
Tccr1a.wgm10 = 1
Tccr1b.cs12 = 0
Tccr1b.cs11 = 0
Tccr1b.cs10 = 0

Pwm1a = 127
Pwm1b = 50
Pwm1c = 200

On Int7 Change

Enable Interrupts
Enable Int7

Do
 nop
Loop
End

Change:
 Toggle Led

 Select Case Tstart:
  Case 0:
   Tccr1b.cs10 = 0
   Tstart = 1
  Case 1:
   Tccr1b.cs10 = 1
   Tstart = 0
 End Select

Return
Válasz küldése