10 error codes – Campbell Scientific CR23X Micrologger User Manual
Page 63

SECTION 3. INSTRUCTION SET BASICS
3-9
3.10 ERROR CODES
There are four types of errors flagged by the
CR23X: Compile, Run Time, Editor, and
D
Mode. Compile errors are errors in programming
which are detected once the program is entered
and compiled for the first time (
0
,
6
, or
B
Mode entered). If a programming error is
detected during compilation, an E is displayed with
the 2 digit error code. The Instruction Location
Number of the Instruction which caused the error
is displayed to the right of the error code (e.g., E23
105; 105 indicates that the fifth instruction in Table
1 caused error 23). Error 22, missing END, will
indicate the location of the instruction which the
compiler cannot match with an END instruction.
Run time errors are detected while the program
is running. The number of the instruction being
executed at the time the error is detected is
displayed to the right of the error code (e.g.,
E09 06 indicates that an Instruction 6 in the
program is attempting to store data in input
locations beyond those allocated). Run time
errors 9 and 31 are the result of programming
errors. While E08 will display the number of the
instruction that was being executed when the
error occurred, it is unlikely that the instruction
has anything to do with the error.
If there is a run time error in a table with a fast
execution interval, the error may be written to
the display so frequently that it seems the
CR23X is not responding to the keyboard.
Once the program is stopped, normal function
will return. To stop the program some entry
must be changed which requires recompiling
(Section 1.1.4). For example, enter 0 for the
execution interval of Table 1 (i.e., enter
1
A
0
A
as fast as possible). The
program can easily be stopped by pressing any
key while the CR23X is displaying “Hello” after
applying power (turn the CR23X off and then on
again). This delays program execution for
about two minutes, allowing the program to be
changed.
Error 8 is the result of a hardware and software
"watchdog" that checks the processor state,
software timers, and program related counters.
The watchdog will attempt to reset the
processor and program execution if it finds that
the processor has bombed or is neglecting
standard system updates, or if the counters are
out of allowable limits. Error code 08 is flagged
when the watchdog performs this reset. E08 is
occasionally caused by voltage surges or
transients. Frequent repetitions of E08 are
indicative of a dead lithium battery, a hardware
problem, or a software bug. Check the lithium
battery voltage (
B
). If the lithium battery
voltage is good (2.4 volts or higher), contact
Campbell Scientific for assistance as a
hardware or software bug is indicated. The
CR23X keeps track of the number of times (up
to 99) that E08 has occurred. The number can
be displayed and reset in the
B
Mode
(Section 1.6) or with the Telecommunications A
command (Section 5.1).
Error 10 is displayed if the primary power drops
below 11 volts. When this happens, the CR23X
stops executing programs. The low voltage
counter (
B
Window 9, Section 1.6) counts
the number of times the voltage drops below 11
volts and displays a double dash (--) if the
CR23X is currently in a low voltage shut down.
Low voltage shut down terminates when voltage
is raised above 11 volts.
Editor errors are detected as soon as an
incorrect value is entered and are displayed
immediately.
B
Mode errors indicate
problems with saving or loading a program.
TABLE 3.10-1. Error Codes
Code
Type
Description
03
Editor
Program table full
04
Compile
Intermediate Storage full
05
Compile
Storage Area #2 not
allocated
08
Run Time
CR23X reset by
watchdog timer
09
Run Time
Insufficient Input Storage
10
Run Time
Low battery voltage
11
Editor
Attempt to allocate more
Input or Intermediate
Storage than is available
12
Compile
Duplicate
4
ID
13
Run Time
Low 5 V supply
20
Compile
SUBROUTINE encountered
before END of previous
subroutine
21
Compile
END without IF, LOOP or
SUBROUTINE
22
Compile
Missing END
23
Compile
Nonexistent
SUBROUTINE
24
Compile
ELSE in SUBROUTINE
without IF