projects:4e4th:4e4th:start:msp430g2553_experimente:fstroboskop
\ Stroboskop
\ based on:
\ PWM mk18082012
\ PWM DB 2012-0704 1:30AM \ adapted to 2kHz DB 2012-0722
\ Thanks to Dirk for figuring out how PWM works at pin P2.2
\ MSP430G2553 LaunchPad.
\ some labels
BIN
( FEDCBA9876543210 ruler )
100000 CONSTANT BIT5
110000 CONSTANT MC_3 \ Timer A mode control: 3 - Up/Down
11000000 CONSTANT OUTMOD_6 \ toggle-set
110 CONSTANT TACLR \ TA an, IE an.
1000000000 CONSTANT SMCLK \ clock source
11000000 CONSTANT ID/8 \ clock input divider
HEX
192 CONSTANT TA1CCR0
196 CONSTANT TA1CCR2
186 CONSTANT TA1CCTL2
180 CONSTANT TA1CTL
2A CONSTANT P2DIR
2E CONSTANT P2SEL
\ handle timer A1, ID/8 --> long periods
: TA1HALT 0 TA1CTL ! ;
: TA1SET ( n1 n2 -- ) \ puls width, period
ta1halt TA1CCR2 ! TA1CCR0 !
OUTMOD_6 TA1CCTL2 !
SMCLK MC_3 + TACLR + ID/8 + TA1CTL ! ;
\ PWM at P2.5
: AN bit5 p2dir cset bit5 p2sel cset ;
: AUS bit5 p2dir cclr ;
: +PWM ( n1 n2 -- ) an ta1set ;
: -PWM ta1halt aus ;
DECIMAL
4750 dup 1 rshift 2CONSTANT 100HZ
47500 dup 1 rshift 2CONSTANT 10HZ
: hoeher
TA1CCR0 @ 100 -
dup 0= IF DROP 10hz +pwm exit THEN
dup 1 rshift TA1CCR2 ! TA1CCR0 ! ;
: sweep 10hz +pwm begin 50 ms hoeher key? until ;
( finis )
Hinweis: 4e4th basiert auf CamelForth und hat eine 16Bit zweier Komplement Rechnung. Daher klappt 2/ bei Zahlen ab $8000 nicht mehr. Aber mit einem Rechtsshift kann man ja auch durch 2 teilen.
projects/4e4th/4e4th/start/msp430g2553_experimente/fstroboskop.txt · Zuletzt geändert: 2013-06-06 21:27 von 127.0.0.1