Navigation bar
  Start Previous page
 175 of 307 
Next page End  

ZBasic System Library
165
ZX Microcontroller Family
OpenPWM8
Type
Subroutine
Invocation
OpenPWM8(channel, frequency, mode)
OpenPWM8(channel, frequency, mode, stat)
Parameter
Method
Type
Description
channel
ByVal
Byte
The channel to use for PWM generation.
frequency
ByVal
Single
The desired PWM frequency.
mode
ByVal
Byte
The desired PWM mode (see discussion below).
stat
ByRef
Boolean
The variable to receive the status code.
Discussion
This subroutine prepares a PWM channel for generating a pulse width modulated (PWM) signal using
one of the CPU’s 8-bit timers.  The table below indicates the available channels and the corresponding
timer used.  See the description of PWM8() for additional details on the PWM channels.
Supported 8-bit PWM Channels
ZX Models
Timer0
Timer2
ZX-24, ZX-40, ZX-44,
ZX-328n, ZX-328l, ZX-32n, ZX-32l,
ZX-24e, ZX-128e, ZX-128ne, ZX-328nu
-
1
ZX-24a, ZX-24p, ZX-24n,
ZX-40a, ZX-40p, ZX-40n,
ZX-44a, ZX-44p, ZX-44n,
ZX-24ae, ZX-24pe, ZX-24ne
-
1, 2
ZX-1281, ZX-1281n,
ZX-1280, ZX-1280n,
ZX-1281e, ZX-1281ne
1, 2
-
It is important to note that the timer used for 8-bit PWM generation is the same one used for generating
the timing for the software UARTs (Com3-Com6).  Consequently, these two features cannot be used at
the same time.
The frequency parameter specifies the desired PWM base frequency in Hertz.  Since the same
frequency and generation mode will be used for all PWM channels based on the same timer, it is only
necessary to call OpenPWM8() once to prepare the timer for all of the PWM channels that are based on a
that timer.
The mode parameter specifies the PWM generation mode.  Two modes are supported: Fast PWM mode
and Phase/Frequency Correct mode.  The constants zxFastPWM and zxCorrectPWM, having the values
0 and 1 respectively, may be used to specify the mode
The status parameter, if supplied, receives a value to indicate success or failure of the call.
A side effect of calling OpenPWM8() is that the timer busy flag for the underlying timer (e.g.
Register.Timer2Busy) will be set to True irrespective of its prior state.  It is recommended that the
initial call to OpenPWM() be preceded by a call to acquire the semaphore for the timer.  This will ensure
that an existing timer operation will not be disturbed.
The actual PWM frequency used will be the closest of the available frequencies as shown in the table
below.  The frequencies in the shaded rows are not available on ZX devices based on the mega128,
mega1281 and mega1280 chips.
Previous page Top Next page