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
*.bin
*.hex
disasm

@ -1,6 +1,7 @@
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#define TEMP_PIN 0
#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
// 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
static const uint16_t coeffs[] =
static const uint16_t coeffs[] PROGMEM =
{
// in, out
20250, 0, // -20 celsius
@ -117,9 +118,9 @@ inline uint16_t linearize_temp(uint16_t temp_in)
uint8_t 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;
}
}

Loading…
Cancel
Save