mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-09-02 12:59:01 +00:00
Disable interrupts before sending ws2812 data
This commit is contained in:
committed by
Ron Evans
parent
5645eb3f91
commit
7b565e8cb0
@@ -5,12 +5,14 @@ package ws2812
|
||||
import (
|
||||
"device"
|
||||
"machine"
|
||||
"runtime/interrupt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func (d Device) WriteByte(c byte) error {
|
||||
portSet, maskSet := d.Pin.PortMaskSet()
|
||||
portClear, maskClear := d.Pin.PortMaskClear()
|
||||
mask := interrupt.Disable()
|
||||
|
||||
switch machine.CPUFrequency() {
|
||||
case 160e6: // 160MHz
|
||||
@@ -220,6 +222,7 @@ func (d Device) WriteByte(c byte) error {
|
||||
"maskClear": maskClear,
|
||||
"portClear": uintptr(unsafe.Pointer(portClear)),
|
||||
})
|
||||
interrupt.Restore(mask)
|
||||
return nil
|
||||
case 80e6: // 80MHz
|
||||
// See docs for 160MHz.
|
||||
@@ -336,8 +339,10 @@ func (d Device) WriteByte(c byte) error {
|
||||
"maskClear": maskClear,
|
||||
"portClear": uintptr(unsafe.Pointer(portClear)),
|
||||
})
|
||||
interrupt.Restore(mask)
|
||||
return nil
|
||||
default:
|
||||
interrupt.Restore(mask)
|
||||
return errUnknownClockSpeed
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user