decreased accuracy so that the real hardware is useful at 33 MHz

This commit is contained in:
Mirko Scholz 2020-09-10 19:59:57 +02:00
parent 5f0bd3886a
commit 2b915a3e59
3 changed files with 15 additions and 17 deletions

View File

@ -1,10 +1,10 @@
SDCC ?= sdcc SDCC ?= sdcc
STCCODESIZE ?= 13312 STCCODESIZE ?= 13312
SDCCOPTS ?= --code-size $(STCCODESIZE) --xram-size 256 --idata-loc 0x80 SDCCOPTS ?= --code-size $(STCCODESIZE) --xram-size 256 --idata-loc 0x70
#SDCCOPTS ?= --code-size $(STCCODESIZE) --xram-size 256 --stack-auto --model-large #SDCCOPTS ?= --code-size $(STCCODESIZE) --xram-size 256 --stack-auto --model-large
FLASHFILE ?= main.hex FLASHFILE ?= main.hex
LARGE_LDFLAGS += -L/usr/share/sdcc/lib/large/ LARGE_LDFLAGS += -L/usr/share/sdcc/lib/large/
# CFLAGS += -DSTACK_DEBUG -DSHOW_STACK # write the stack pointer to P3_4 # CFLAGS += -DSTACK_DEBUG # write the stack pointer to P3_4
SRC = src/lcd.c src/key.c src/utils.c src/decn/decn.c src/calc.c src/stack_debug.c SRC = src/lcd.c src/key.c src/utils.c src/decn/decn.c src/calc.c src/stack_debug.c

View File

@ -1339,8 +1339,8 @@ void sincos_decn(const uint8_t sincos_arctan) {
copy_decn(&THETA, &AccDecn); copy_decn(&THETA, &AccDecn);
copy_decn(&COS, &DECN_1); copy_decn(&COS, &DECN_1);
set_dec80_zero(&SIN); set_dec80_zero(&SIN);
// 0.0 00 05 // 0.0 00 5
SIN.lsu[2] = 5; SIN.lsu[2] = 50;
negate_decn(&SIN); negate_decn(&SIN);
} }
do { do {
@ -1355,29 +1355,27 @@ void sincos_decn(const uint8_t sincos_arctan) {
break; break;
} }
} }
// COS = COS - SIN / 10000 // COS = COS - SIN / 1000
copy_decn(&AccDecn, &COS); copy_decn(&AccDecn, &COS);
copy_decn(&BDecn, &SIN); copy_decn(&BDecn, &SIN);
shift_right(&BDecn); shift_right(&BDecn);
shift_right(&BDecn); shift_right(&BDecn);
shift_right(&BDecn); shift_right(&BDecn);
shift_right(&BDecn);
negate_decn(&BDecn); negate_decn(&BDecn);
add_decn(); add_decn();
copy_decn(&COS, &AccDecn); copy_decn(&COS, &AccDecn);
// SIN = SIN + COS / 10000 // SIN = SIN + COS / 1000
copy_decn(&AccDecn, &SIN); copy_decn(&AccDecn, &SIN);
copy_decn(&BDecn, &COS); copy_decn(&BDecn, &COS);
shift_right(&BDecn); shift_right(&BDecn);
shift_right(&BDecn); shift_right(&BDecn);
shift_right(&BDecn); shift_right(&BDecn);
shift_right(&BDecn);
add_decn(); add_decn();
copy_decn(&SIN, &AccDecn); copy_decn(&SIN, &AccDecn);
// THETA = THETA -/+ 0.0 00 1 // THETA = THETA -/+ 0.0 01
copy_decn(&AccDecn, &THETA); copy_decn(&AccDecn, &THETA);
set_dec80_zero(&BDecn); set_dec80_zero(&BDecn);
BDecn.lsu[2] = 10; BDecn.lsu[1] = 1;
if (!sincos_arctan) negate_decn(&BDecn); if (!sincos_arctan) negate_decn(&BDecn);
add_decn(); add_decn();
copy_decn(&THETA, &AccDecn); copy_decn(&THETA, &AccDecn);

View File

@ -80,7 +80,7 @@ const char * const pi_quarted = ".7853981633974483096";
TEST_CASE("sin") { TEST_CASE("sin") {
sin_test("0.1", 0); sin_test("0.1", 0);
sin_test("0.05", 0); sin_test("0.05", 0, 1e-2);
sin_test("0.01", 0, -1); sin_test("0.01", 0, -1);
sin_test("0.001", 0, -1); sin_test("0.001", 0, -1);
sin_test("0.0001", 0, -1); sin_test("0.0001", 0, -1);
@ -147,8 +147,8 @@ TEST_CASE("cos") {
TEST_CASE("tan") { TEST_CASE("tan") {
tan_test("0.1", 0); tan_test("0.1", 0);
tan_test("0.05", 0); tan_test("0.05", 0, 1e-2);
tan_test("0.01", 0); tan_test("0.01", 0, 5e-2);
tan_test("0.001", 0, -1); tan_test("0.001", 0, -1);
tan_test("0.0001", 0, -1); tan_test("0.0001", 0, -1);
tan_test("0.00001", 0, -1); tan_test("0.00001", 0, -1);
@ -165,8 +165,8 @@ TEST_CASE("tan") {
} }
TEST_CASE("arctan") { TEST_CASE("arctan") {
atan_test("0.001", 0); atan_test("0.001", 0, -1, 2e-3);
atan_test("-0.001", 0); atan_test("-0.001", 0, -1, 2e-3);
atan_test("0.7", 0); atan_test("0.7", 0);
atan_test("-0.7", 0); atan_test("-0.7", 0);
atan_test("0.1", 0); atan_test("0.1", 0);
@ -185,8 +185,8 @@ TEST_CASE("arcsin") {
asin_test("-0.001", 0, -1); asin_test("-0.001", 0, -1);
asin_test("0.7", 0); asin_test("0.7", 0);
asin_test("-0.7", 0); asin_test("-0.7", 0);
asin_test("0.1", 0); asin_test("0.1", 0, 1e-2);
asin_test("-0.1", 0); asin_test("-0.1", 0, 1e-2);
asin_test("0.9", 0); asin_test("0.9", 0);
asin_test("-0.9", 0); asin_test("-0.9", 0);
} }