Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 11 to 11 | ||||||||
Added: | ||||||||
> > | This page is no longer updated regularly, the current documentation can be found at GitHub. | |||||||
Line: 1 to 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Line: 458 to 458 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Added: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> > |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TBC |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 421 to 421 | ||||||||
| ||||||||
Changed: | ||||||||
< < | If we use only the first 4 KiB from the 64 KiB sector then we have 16 MiB / 16 = 1 MiB. | |||||||
> > | If we use only the first 4 KiB from the 64 KiB sector then we have 16 MiB / 16 = 1 MiB. | |||||||
SPI OLED Display |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 387 to 387 | ||||||||
| ||||||||
Changed: | ||||||||
< < | PWM Driver Chip: [TLC59731 | |||||||
> > | PWM Driver Chip: TLC59731 SPI is used for the timing. 4 SPI bits are one pulse position bit. fCLK(SDI) = 20 kHz to 600 kHz, the max. frequency for the SPI is therefore 2.4 MHz, I choosed 2 MHz. It takes about 30 us to set one RGB-LED. | |||||||
UART VCP ST-LINK |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 416 to 416 | ||||||||
| ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
| ||||||||
Changed: | ||||||||
< < | If I use only the first 4 KiB from the 64 KiB sector then we have 16 MiB / 16 = 1 MiB. | |||||||
> > | If we use only the first 4 KiB from the 64 KiB sector then we have 16 MiB / 16 = 1 MiB. | |||||||
SPI OLED Display |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 406 to 406 | ||||||||
| ||||||||
Added: | ||||||||
> > | MicroSdBlocks#STM32WB5MM_Discovery_Kit_SPI_S25
S25FL128SDSMFV001
Programming (1.5 MBps)
| |||||||
SPI OLED Display |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Changed: | ||||||||
< < | image="/twiki/pub/Cosmac/ForthSTM32WB/nucleo-header.jpg" | |||||||
> > | image="/twiki/pub/MecrispCube/BoardSupportPackageWB5M/wb55-discovery-header.jpg" | |||||||
title="Board Support Package for the STM32WB5MM-DK Discovery Kit"
titlestyle="color:#F00000;"
}%
Intro
The board support package for the STM32WB5MM-DK Discovery Kit is restricted to the Arduino UNO R3 pin header and the onboard LEDs, and switches (buttons). The STM32 has much more capabilities then 14 digital I/O pins, 6 analog input pins, UART, SPI, and I2C interfaces. But if you want to use the more advanced features you can use the CubeMX to create source code for the internal peripherals. This project wants to show how to use the Cube Ecosystem for a Forth system (or vice versa) and can't implement all features and possibilities the STM32WB has. It is a good starting point for your project. | ||||||||
Changed: | ||||||||
< < | ||||||||
> > | ||||||||
Contents
| ||||||||
Line: 454 to 454 | ||||||||
This work by Peter Schmid is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
| ||||||||
Added: | ||||||||
> > |
|
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 417 to 417 | ||||||||
| ||||||||
Changed: | ||||||||
< < | https://github.com/STMicroelectronics/stm32-ssd1315/blob/main/ssd1315.c | |||||||
> > | ||||||||
Onboard Mems (I2C) |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 417 to 417 | ||||||||
| ||||||||
Added: | ||||||||
> > | https://github.com/STMicroelectronics/stm32-ssd1315/blob/main/ssd1315.c | |||||||
Onboard Mems (I2C) |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 6 to 6 | ||||||||
title="Board Support Package for the STM32WB5MM-DK Discovery Kit" titlestyle="color:#F00000;" }% | ||||||||
Changed: | ||||||||
< < | Intro
| |||||||
> > | Intro
| |||||||
The board support package for the STM32WB5MM-DK Discovery Kit is restricted to the Arduino UNO R3 pin header and the onboard LEDs, and switches (buttons). The STM32 has much more capabilities then 14 digital I/O pins, 6 analog input pins, UART, SPI, and I2C interfaces. But if you want to use the more advanced features you can use the CubeMX to create source code for the internal peripherals. This project wants to show how to use the Cube Ecosystem for a Forth system (or vice versa) and can't implement all features and possibilities the STM32WB has. It is a good starting point for your project. | ||||||||
Added: | ||||||||
> > | ||||||||
Changed: | ||||||||
< < | Contents
| |||||||
> > | Contents
| |||||||
Line: 446 to 449 | ||||||||
-- Peter Schmid - 2021-06-05
This work by Peter Schmid is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. | ||||||||
Added: | ||||||||
> > |
|
Line: 1 to 1 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | |||||||||||||||||
Line: 24 to 24 | |||||||||||||||||
dport! ( n -- ) sets the digital output port (D0=bit0 .. D15=bit15). dport@ ( -- n ) gets the digital input/output port (D0=bit0 .. D15=bit15). | |||||||||||||||||
Changed: | |||||||||||||||||
< < | dpin! ( n a -- ) sets the digital output port pin (D0=0 .. D15=15) dpin@ ( a -- n ) gets the digital input/output port pin | ||||||||||||||||
> > | dpin! ( n a -- ) sets the digital output port pin (a: D0=0 .. D15=15, A0=16 .. A5=21) dpin@ ( a -- n ) gets the digital input/output port pin (a: D0=0 .. D15=15, A0=16 .. A5=21) | ||||||||||||||||
dmod ( u a -- ) sets the pin mode: 0 in, 1 in pull-up, 2 in pull-down, 3 out push pull, 4 out open drain, | |||||||||||||||||
Changed: | |||||||||||||||||
< < | 5 out push pull PWM, 6 input capture, 7 output compare, 8 I2C | ||||||||||||||||
> > | 5 out push pull PWM, 6 input capture, 7 output compare, 8 I2C, 9 UART, 10 analog | ||||||||||||||||
Changed: | |||||||||||||||||
< < | EXTImod ( u a -- ) Sets for pin a (D2, D4, D7, D10) the EXTI mode u: 0 rising, 1 falling, 2 both edges, 3 none EXTIwait ( u a -- ) Wait for EXTI interrupt on pin a (D2, D4, D7, D10), timeout u in [ms] | ||||||||||||||||
> > | EXTImod ( u a -- ) Sets for pin a (D0, D1, D2, D4, D10) the EXTI mode u: 0 rising, 1 falling, 2 both edges, 3 none EXTIwait ( u a -- ) Wait for EXTI interrupt on pin a (D0, D1, D2, D4, D10), timeout u in [ms] | ||||||||||||||||
pwmpin! ( u a -- ) sets the digital output port pin a (D3=3, D6=6, D9=9) to a PWM value u (0..1000). Default frequency is 1 kHz, TIMER1 | |||||||||||||||||
Changed: | |||||||||||||||||
< < | pwmprescale ( u -- ) Sets the PWM prescale for TIMER1. 32 kHz / prescale, default 32 -> PWM frequency 1 kHz | ||||||||||||||||
> > | pwmprescale ( u -- ) Sets the PWM prescale for TIMER1 and TIMER16. 32 kHz / prescale, default 32 -> PWM frequency 1 kHz | ||||||||||||||||
ICOCprescale ( u -- ) Sets the input capture / output compare prescale for TIMER2. default 32 -> 32 MHz / 32 = 1 MHz, timer resolution 1 us ICOCperiod! ( u -- ) Sets the input capture / output compare (TIMER2) period. default $FFFFFFFF (4'294'967'295). | |||||||||||||||||
Line: 43 to 43 | |||||||||||||||||
ICOCcount@ ( u -- ) Gets the input capture / output compare counter for TIMER2 ICOCstart ( -- ) Starts the ICOC period ICOCstop ( -- ) Stops the ICOC period | |||||||||||||||||
Changed: | |||||||||||||||||
< < | OCmod ( u a -- ) Sets for pin a (D0, D1, D5) the Output Compare mode u: 0 frozen, 1 active level on match, 2 inactive level on match, | ||||||||||||||||
> > | OCmod ( u a -- ) Sets for pin a (D5, D13) the Output Compare mode u: 0 frozen, 1 active level on match, 2 inactive level on match, | ||||||||||||||||
3 toggle on match, 4 forced active, 5 forced inactive OCstart ( u a -- ) Starts the output compare mode for pin a with pulse u | |||||||||||||||||
Line: 77 to 77 | |||||||||||||||||
3 0 dmod \ set D0 to Output 3 1 dmod \ set D1 to Output | |||||||||||||||||
Added: | |||||||||||||||||
> > | 3 2 dmod \ set D2 to Output | ||||||||||||||||
3 3 dmod \ set D3 to Output | |||||||||||||||||
Added: | |||||||||||||||||
> > | 3 4 dmod \ set D4 to Output | ||||||||||||||||
3 5 dmod \ set D5 to Output 3 6 dmod \ set D6 to Output | |||||||||||||||||
Added: | |||||||||||||||||
> > | 3 7 dmod \ set D7 to Output | ||||||||||||||||
| |||||||||||||||||
Line: 329 to 332 | |||||||||||||||||
Pinouts | |||||||||||||||||
Added: | |||||||||||||||||
> > | Schematics | ||||||||||||||||
ARDUINO® Connector Pinout
| |||||||||||||||||
Line: 341 to 346 | |||||||||||||||||
| |||||||||||||||||
Changed: | |||||||||||||||||
< < |
| ||||||||||||||||
> > |
| ||||||||||||||||
| |||||||||||||||||
Changed: | |||||||||||||||||
< < |
| ||||||||||||||||
> > |
| ||||||||||||||||
| |||||||||||||||||
Changed: | |||||||||||||||||
< < |
| ||||||||||||||||
> > |
| ||||||||||||||||
| |||||||||||||||||
Changed: | |||||||||||||||||
< < |
| ||||||||||||||||
> > |
| ||||||||||||||||
| |||||||||||||||||
Changed: | |||||||||||||||||
< < |
| ||||||||||||||||
> > |
| ||||||||||||||||
| |||||||||||||||||
Line: 376 to 381 | |||||||||||||||||
RGB LED
| |||||||||||||||||
Changed: | |||||||||||||||||
< < |
| ||||||||||||||||
> > |
| ||||||||||||||||
Added: | |||||||||||||||||
> > | PWM Driver Chip: [TLC59731 | ||||||||||||||||
UART VCP ST-LINK |
Line: 1 to 1 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | |||||||||||||
Line: 7 to 7 | |||||||||||||
titlestyle="color:#F00000;"
}%
Intro
| |||||||||||||
Changed: | |||||||||||||
< < | The board support package for the !!STM32WB5MM-DK Discovery Kit is restricted to the Arduino UNO R3 pin header and the onboard LEDs, and switches (buttons). The STM32 has much more capabilities then 14 digital I/O pins, 6 analog input pins, UART, SPI, and I2C interfaces. But if you want to use the more advanced features you can use the CubeMX to create source code for the internal peripherals. This project wants to show how to use the Cube Ecosystem for a Forth system (or vice versa) and can't implement all features and possibilities the STM32WB has. It is a good starting point for your project. | ||||||||||||
> > | The board support package for the STM32WB5MM-DK Discovery Kit is restricted to the Arduino UNO R3 pin header and the onboard LEDs, and switches (buttons). The STM32 has much more capabilities then 14 digital I/O pins, 6 analog input pins, UART, SPI, and I2C interfaces. But if you want to use the more advanced features you can use the CubeMX to create source code for the internal peripherals. This project wants to show how to use the Cube Ecosystem for a Forth system (or vice versa) and can't implement all features and possibilities the STM32WB has. It is a good starting point for your project. | ||||||||||||
Line: 357 to 357 | |||||||||||||
| |||||||||||||
Changed: | |||||||||||||
< < |
| ||||||||||||
> > |
| ||||||||||||
| |||||||||||||
Changed: | |||||||||||||
< < |
| ||||||||||||
> > |
| ||||||||||||
|
Line: 1 to 1 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | |||||||||||||
Line: 17 to 17 | |||||||||||||
Defaults: Digital port pins D0 to D7 are push pull outputs, D8 to D15 are inputs with pull-up resistors.
| |||||||||||||
Changed: | |||||||||||||
< < | led1! ( n -- ) sets LED1 (blue) led2! ( n -- ) sets LED2 (green) led3! ( n -- ) sets LED3 (red) led1@ ( -- n ) gets LED1 (blue) led2@ ( -- n ) gets LED2 (green) led3@ ( -- n ) gets LED3 (red) | ||||||||||||
> > | rgbled! ( rgb -- ) sets the RGB led ($ff0000 red, $00ff00 green, $0000ff blue) | ||||||||||||
switch1? ( -- n ) gets switch1, closed=TRUE switch2? ( -- n ) gets switch2, closed=TRUE | |||||||||||||
Deleted: | |||||||||||||
< < | switch3? ( -- n ) gets switch3, closed=TRUE | ||||||||||||
dport! ( n -- ) sets the digital output port (D0=bit0 .. D15=bit15). dport@ ( -- n ) gets the digital input/output port (D0=bit0 .. D15=bit15). | |||||||||||||
Line: 363 to 357 | |||||||||||||
| |||||||||||||
Changed: | |||||||||||||
< < |
| ||||||||||||
> > |
| ||||||||||||
| |||||||||||||
Line: 397 to 391 | |||||||||||||
| |||||||||||||
Changed: | |||||||||||||
< < |
| ||||||||||||
> > |
| ||||||||||||
| |||||||||||||
Changed: | |||||||||||||
< < |
| ||||||||||||
> > |
| ||||||||||||
SPI OLED Display
| |||||||||||||
Changed: | |||||||||||||
< < |
| ||||||||||||
> > |
| ||||||||||||
|
Line: 1 to 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Line: 335 to 335 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pinouts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
< < | ARDUINO® connector pinout | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> > | ARDUINO® Connector Pinout | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Line: 372 to 372 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Added: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> > | Push Buttons
RGB LED
UART VCP ST-LINK
Quad SPI for Flash
SPI OLED Display
Onboard Mems (I2C)
Digital Microphone
STMod+ Connector Pinout
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Line: 1 to 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Added: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> > |
Board Support Package for the STM32WB5MM-DK Discovery Kit
Intro
The board support package for the !!STM32WB5MM-DK Discovery Kit is restricted to the Arduino UNO R3 pin header and the onboard LEDs, and switches (buttons). The STM32 has much more capabilities then 14 digital I/O pins, 6 analog input pins, UART, SPI, and I2C interfaces. But if you want to use the more advanced features you can use the CubeMX to create source code for the internal peripherals. This project wants to show how to use the Cube Ecosystem for a Forth system (or vice versa) and can't implement all features and possibilities the STM32WB has. It is a good starting point for your project.
Board Support WordsDefaults: Digital port pins D0 to D7 are push pull outputs, D8 to D15 are inputs with pull-up resistors.led1! ( n -- ) sets LED1 (blue) led2! ( n -- ) sets LED2 (green) led3! ( n -- ) sets LED3 (red) led1@ ( -- n ) gets LED1 (blue) led2@ ( -- n ) gets LED2 (green) led3@ ( -- n ) gets LED3 (red) switch1? ( -- n ) gets switch1, closed=TRUE switch2? ( -- n ) gets switch2, closed=TRUE switch3? ( -- n ) gets switch3, closed=TRUE dport! ( n -- ) sets the digital output port (D0=bit0 .. D15=bit15). dport@ ( -- n ) gets the digital input/output port (D0=bit0 .. D15=bit15). dpin! ( n a -- ) sets the digital output port pin (D0=0 .. D15=15) dpin@ ( a -- n ) gets the digital input/output port pin dmod ( u a -- ) sets the pin mode: 0 in, 1 in pull-up, 2 in pull-down, 3 out push pull, 4 out open drain, 5 out push pull PWM, 6 input capture, 7 output compare, 8 I2C EXTImod ( u a -- ) Sets for pin a (D2, D4, D7, D10) the EXTI mode u: 0 rising, 1 falling, 2 both edges, 3 none EXTIwait ( u a -- ) Wait for EXTI interrupt on pin a (D2, D4, D7, D10), timeout u in [ms] pwmpin! ( u a -- ) sets the digital output port pin a (D3=3, D6=6, D9=9) to a PWM value u (0..1000). Default frequency is 1 kHz, TIMER1 pwmprescale ( u -- ) Sets the PWM prescale for TIMER1. 32 kHz / prescale, default 32 -> PWM frequency 1 kHz ICOCprescale ( u -- ) Sets the input capture / output compare prescale for TIMER2. default 32 -> 32 MHz / 32 = 1 MHz, timer resolution 1 us ICOCperiod! ( u -- ) Sets the input capture / output compare (TIMER2) period. default $FFFFFFFF (4'294'967'295). When the up counter reaches the period, the counter is set to 0. For prescale 32 the maximum time is about 1 h 11 m ICOCcount! ( -- u ) Sets the input capture / output compare counter for TIMER2 ICOCcount@ ( u -- ) Gets the input capture / output compare counter for TIMER2 ICOCstart ( -- ) Starts the ICOC period ICOCstop ( -- ) Stops the ICOC period OCmod ( u a -- ) Sets for pin a (D0, D1, D5) the Output Compare mode u: 0 frozen, 1 active level on match, 2 inactive level on match, 3 toggle on match, 4 forced active, 5 forced inactive OCstart ( u a -- ) Starts the output compare mode for pin a with pulse u OCstop ( a -- ) Stops output compare for pin a ICstart ( u -- ) Starts input capture u: 0 rising edge, 1 falling edge, 2 both edges ICstop ( -- ) Stops input capture waitperiod ( -- ) wait for the end of the TIMER2 period OCwait ( a -- ) wait for the end of output capture on pin a ICwait ( u -- u ) wait for the end of input capture with timeout u, returns counter u apin@ ( a -- u ) gets the analog input port pin (A0 .. A5). Returns a 12 bit value (0..4095) I2Cdev ( u -- ) Sets the 7-bit I2C address I2Cput ( c-addr u -- ) put a message with length u from buffer at c-addr to the I2C slave device I2Cget ( c-addr u -- ) get a message with length u from I2C slave device to buffer at c-addr I2Cputget ( a1 u1 a2 u2 -- ) put a message with length u1 from buffer at a1 to the I2C slave device and get a message with length u2 from device to buffer at a2 SPIputget ( a1 a2 u -- ) put a message with length u from buffer at a1 to the SPI slave device and get a message with length u from device to buffer at a2 SPIputc ( char ) put a single char to the SPI slave device Using the Digital Port Pins (Input and Output)This example is very similar to the McForth#Knight_Rider program.dport! and dport@ set and get all 16 digital pins (D0 to D15) at once. You have to press the SW1 push button til D0 is set to cancel the operation.
3 0 dmod \ set D0 to Output 3 1 dmod \ set D1 to Output 3 3 dmod \ set D3 to Output 3 5 dmod \ set D5 to Output 3 6 dmod \ set D6 to Output
Using the ADC (Analog Input Pins)apin@ ( a -- u ) returns the ADC value (12 bit, 0 .. 4095) from one of the analog pins A0 to A5 (0 .. 5). Here I use the A0 to control the delay.
left or right word takes about 125 us, the knightrider loop about 50 us (no osDelay). Pretty fast for my opinion.
CH1 yellow: D0 pinCH2 blue: D1 pin Using the PWM (Analog Output Pins)Only three port pins are supported so far. The 16 bit TIMER1 is used for the timebase, time resolution is 1 us (32 MHz SysClk divided by 32). The PWM scale is from 0 (0 % duty cycle) to 1000 (100 % duty cycle), this results in a PWM frequency of 1 kHz. If you need higher PWM frequencies, decrease the divider and/or the scale. PWM port pins: D6 (TIM1CH1), D9 (TIM1CH2), D3 (TIM1CH3) Simple test program to set brightness of a LED on pin D3 with a potentiometer on A0. Default PWM frequency is 1 kHz (prescaler set to 32). You can set the prescale with the wordpwmprescale from 32 kHz (value 1) down to 0.5 Hz (64000).
5 3 dmod \ set D3 to PWM : pwm ( -- ) begin 0 apin@ 4 / 3 pwmpin! 10 osDelay drop switch1? until ; Using Input Capture and Output CompareTime BaseDefault timer resolution is 1 us. The 32 bit TIMER2 is used as time base for Input Capture / Output Compare. For a 5 s period 5'000'000 cycles are needed. All channels (input capture / output compare) use the same time base.: period ( -- ) 5000000 ICOCperiod! \ 5 s period ICOCstart begin waitperiod cr .time key? until key drop ; Output Compare: oc-toggle ( -- ) 5000000 ICOCperiod! \ 5 s period ICOCstart 3 0 OCmod 1000000 0 OCstart \ toggle D0 after 1 s 3 1 OCmod 2000000 1 OCstart \ toggle D1 after 2 s 3 5 OCmod 3000000 5 OCstart \ toggle D5 after 3 s begin waitperiod cr .time key? until key drop ;When you abort (hit any key) the program, the timer still runs and controls the port pins. To stop the port pins: 0 OCstop 1 OCstop 5 OCstopOr change the prescale to make it faster or slower: 1 ICOCprescale Input CaptureThis sample program measures the time between the edges on port A2. if no event occurs within 2 seconds, "timeout" is issued. Hit any key to abort program.: ic-test ( -- ) 6 2 dmod \ input capture on A2 ICOCstart 2 ICstart \ both edges ICOCcount@ ( -- count ) begin 2000 \ 2 s timeout ICwait ( -- old-capture capture ) cr dup 0= if ." timeout" drop else dup rot ( -- capture capture old-capture ) - 1000 / . ." ms" then key? until key drop drop ICstop ; PinoutsARDUINO® connector pinout
This work by Peter Schmid is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. |