moving big things to flash, ram should be fine now

master
Nidan 13 years ago
parent 2dcbf0b5ef
commit 25286ce457

1
.gitignore vendored

@ -2,3 +2,4 @@
*.o *.o
*.bin *.bin
*.hex *.hex
disasm

@ -1,6 +1,7 @@
#include <avr/io.h> #include <avr/io.h>
#include <util/delay.h> #include <util/delay.h>
#include <avr/interrupt.h> #include <avr/interrupt.h>
#include <avr/pgmspace.h>
#define TEMP_PIN 0 #define TEMP_PIN 0
#define IMPULS0_PIN 1 #define IMPULS0_PIN 1
@ -91,7 +92,7 @@ inline uint16_t linearize_temp(uint16_t temp_in)
uint16_t temp_out = TARGET_TEMP_MAX; //burning uint16_t temp_out = TARGET_TEMP_MAX; //burning
// made from datasheet by: // made from datasheet by:
// for i in 677 740 807 877 951 1029 1111 1196 1286 1378 1475 1575 1679 1786 1896 2003 2103 2189; do calc 5*$i/9860*65472/1.11; done // for i in 677 740 807 877 951 1029 1111 1196 1286 1378 1475 1575 1679 1786 1896 2003 2103 2189; do calc 5*$i/9860*65472/1.11; done
static const uint16_t coeffs[] = static const uint16_t coeffs[] PROGMEM =
{ {
// in, out // in, out
20250, 0, // -20 celsius 20250, 0, // -20 celsius
@ -117,9 +118,9 @@ inline uint16_t linearize_temp(uint16_t temp_in)
uint8_t i=2; uint8_t i=2;
for (; i < (sizeof(coeffs)>>1)-2; i+=2) for (; i < (sizeof(coeffs)>>1)-2; i+=2)
{ {
if ( temp_in < coeffs[i] ) if ( temp_in < pgm_read_byte(&coeffs[i]) )
{ {
temp_out = (uint16_t) ( coeffs[i-1] + (uint32_t) ( (uint32_t) (temp_in-coeffs[i-2]) * (coeffs[i+1]-coeffs[i-1]) ) / (coeffs[i]-coeffs[i-2])); temp_out = (uint16_t) ( pgm_read_byte(&coeffs[i-1]) + (uint32_t) ( (uint32_t) (temp_in - pgm_read_byte(&coeffs[i-2])) * (pgm_read_byte(&coeffs[i+1])-pgm_read_byte(&coeffs[i-1])) ) / (pgm_read_byte(&coeffs[i])-pgm_read_byte(&coeffs[i-2])));
break; break;
} }
} }

Loading…
Cancel
Save