-
Notifications
You must be signed in to change notification settings - Fork 8
/
bugs.txt
192 lines (178 loc) · 9.11 KB
/
bugs.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
firmware history:
v2.27 (0x0) initial release
v2.27a (0x4eec) add flash checksum
v2.27b (0x45bf) fix flash upgrade, implement uart pin vars
v2.27c (0x50c0) fix JTAG stealing E3/TDO after flash upgrade
v2.27d (0x423c) switch ADC to 12-bit mode; bump flash calibration values by 4x
v2.27e (0x2a37) disable pullups on pins a0-a8 because they seem incompatible with ADC scanning
v2.27f (0x55c1) add "ver" command
v2.27g (0x7c8e) prep for release
v2.27h (0x990f) prep for release -- fix bugs #2 and #3
v2.27j (0x39ca) prep for release -- fix bug #5, add usb sn -- DO NOT USE PIN a0 DURING BOOT EXCEPT TO FORCE NON-CDC/ACM USB ENDPOINT
known bugs
#5 Some Samsung phones claim Flea-Scope with serial driver but do not expose Web Serial, leaving Flea-Scope inaccessible...
#3 weak pull-up resistors (7k-22k) are enabled on logic analyzer inputs by default (which can interfere with i2c)
#2 uart read/write of basic array garbles/duplicates data
board history:
2.27f minewing production run enig spacing
2.27g elecrow bnc/usb change (usb change to be undone eventually)
2.27h experimental QFP board (with unintentional paste under QFP)
2.27i experimental QFP board with no paste under QFP
test:
confirm checksum
full pcba turn-on, including testbed, persistent calibration
toaster
simon
breadboard, including i2c display
uart console, uarttest (3), uart to scope
spi ledstrip, display
all pins analog and digital and pwm
flash upgrade to debug and -g and back
test windows, linux, android, mac, chromebook
board:
undo elecrow smt pads for usb -- replace through holes for strength!
for qfp, replace pic32 and remove mask from flag in pcb
consider adding selectable input prescalers? SPI Digital POT?
add 1k resistor in voltage follower feedback loop?
change 3pF load cap to 6.8pF to get broader compensation support
move switches so no interference when bending panel board to separate? move mlcc's farther from board edge?
vbus should be connected -- errata shows 10k/20k (1%) divider needed.
switch to usb C connector
shrink board and remove qfp support
todo arch:
should cdc be only in safe mode, and unbound USB for all others?
move calibration from webpage to firmware, so "scope" returns calibrated data directly and trigger levels use calibrated data
todo html:
horizontal scrolling of trace on chromebook does not work :-(
chromebook controls have blue background after input in bw mode
calibration values should be stored per-volt, and we should allow calibrations at other then 3.3V
allow "measure" button to drag crosshairs (rather than place dot)
allow display resize
have measure divisions or sample grid for manual clock recovery
(persistent) labels for binary bits?
should we have an option for deep scrollable capture, using all of ram?
deeper trace and fft display?
option to export/import raw data?
should we have two separate line segments on oor so we don't show red coming up or down the trace?
should we have 1 line segment rather than 2 when doing horizontal magnification?
need js functions to go forward and backward from calibration, and tests that they are reversible!
aliasing at right and left vertical marker vs. signal
todo StickOS:
seed random number generator with DEVSN0? Or something random on boot???
allow waveform amplitude to be changed -- have separate const table for reference and RAM table in use
store cal values in modes rather than vars, so unaffected by "new"?
falling edge trigger level on power supply ripple seems ~0.1V too high?
scope should have all interrupts (even usb) disabled for the first 1000ms of trigger (delayed ctrl-c)
add webusb auto load, allow usb stall, https://developer.chrome.com/articles/build-for-webusb/
add microsoft usb descriptor
on i2c reset do xxx (possibly just continue)
allow pin names in upper or lower case
remove zigflea -- nodeid, remote variables, etc.
get rid of cpustick/stickos/sources layers
change all use of MASK to bits!
implement multi-function mass storage to store flea-scope.html locally
overclock if s1 not pressed on boot? 20 Msps?
download and clone?
test "out of variables"
pullups for all unused/disconnected pins -- not near analog sample pins!!!
rc10 should be driven low when wave is not in use
heartbeat led does not blink while waiting for trigger (well, yeah)
get rid of 80 character line limit?
todo SickOS general:
dim a$[10]; a$="hello"; uart 2 write a does the wrong thing and sends "hello\0\0\0\0\0" instead of "hello"
dim a[2] as pin b0 for digital output results in a# not being 2...
do we need to add a test for uart tx/rx interrupts? (on uart x input/output do)
allow gosub to use string expression instead of a label -- gosub state$
do we need more tests for returning from gosub with open scopes? if, for, etc.
add "eval" command? add case/switch command?
allow heartbeat and safemode* on same pin (resistor with switch)!
get rid of all code in #defines -- esp ?: and such for flash generations
get rid of all (*xxx)++ references
uniq -d long lines (if, else, while, etc.)
merge const parsing
allow upper case letters in hex addresses.
add "upload" command to turn BASIC programs into S19/HEX...
// bugs
// ====
following does not return value to array!
> run
0 0
> list
10 dim array[2]
20 gosub set array[1]
30 print array
40 end
50 sub set x
60 let x = 1
70 endsub
end
>
//
// prior 1
// =======
// make run_var() extern and add to run.h!
// add windows/linux build to skeleton project
// "step" and "trace" should be statements, not commands!
// configure/on timer (n) should be able to take variables for (n)
// # on string should still return max len -- @ should return consumed length! (or swap!)
// eliminate restrictions on "analog" mode values. "servo", too?
// add "configure qspi baud (n) mode (0-3)"
// add "configure i2c baud (n)"
// allow "library" sub in "library" to create global variables somehow. call this by convention to initialize library.
// allow you to set stop bits in the "configure" statement; switch all to 1 stop bit!
// stickos should report uart framing errors and overrun errors more gracefully! on uart 1 error do gosub recover
// I should probably allow "as byte" or "as word" on pin variables, but I don't currently.
// get rid of parse2/run2/basic0 if we make stickos source public?
// pins should survive upgrade; same for nodeid, ipaddress, etc.
// do we want BASIC to have control over pull-ups? thru a mode variable?
// multi-pin variables (digital I/O only, using binary integer)!!!
// add packed save/load commands!!!; make flash filesystem allocate only as much space as is needed to save a current program!
// on/off/mask/unmask should move to parse2.c/run2.c
// Ctrl-E to dump all variables while basic program is running?
// add ability to get stack trace with locals from all frames
// test i2c with sda, scl, sda and acl all tied to ground -- no hangs or crashes.
// doc
// ===
// add getchar example in ug? don't use getchar$
// remove refs to keychar$ and getchar$!
// add digital input and analog output example
// add minimum flash requirements for pic32 and 5225x to mcu details
// document "conflicting timer usage"
// MCU details says "autorun disable", but we are inconsistent in docs with use of "safemode*"
// update user's guide to indicate keychar and getchar automatically reset to 0 after they are read.
// prior 2
// =======
// fgure out a clean way for spi/i2c to steal pins
// expose erase_page and write_word to basic to manipulate other half of flash!
// allow input of negative numbers
// give vprint ability to do sign extension?
// consider doing servos in sw w/ lightweight isr rather than using hw timers
// add "modes" to turn off USB and QSPI and get their pins back for gpio
// saw bug changing pic32 pin from servo to freq mode on fly?
// how to enable different uart selection (other than lowest number) for console?
// we need a way to prevent you from upgrading the wrong firmware file!!!
// if data area of flash looks bogus on boot, we should clear it all!
// have nodeid and clusterid, and broadcast 0x4242 and clusterid as magic number
// add zigbee channel; save zigbee channel in nvparam!
// need a second catalog page for safe updates!
// handle uart errors (interrupt as well as poll)
// prompt on|off|ok
// prior 3
// =======
// can we make sub/endsub block behave more like for/next, from error and listing perspective?
// short circuit && and || operators
// multiple (main) threads?
// ?: operator!
// switch statement (on xxx goto...?)
// allow gosub from command line?
// sub stack trace? (with sub local vars?)
// one line "if <expression> then <statement> [else <statement>]"
// sleeps and timers don't work with single-stepping
// core dump -- copy ram to secondary code flash on assert/exception/halt?
// allow basic isrs to run while waiting for uart or i2c receive data (anywhere we allow ctrl-c)
// get rid of basic0/basic2, parse0/parse2, run0/run2, etc. -- save lots of code! release core source???
// handle all uart rx/tx in isrs; have basic statements feed isrs
// perf
// ====
// mave var one slot towards "last in gosub scope" on usage rand()%16?
// can we skip statement execution more fully when run_condition is false?