Kod: Markera allt
/* å=\x86 ä=\x84 ö=\x94 Å=\x8f Ä=\x8e Ö=\x99 */
uint8_t EEMEM change2[] = "\n\rBekr\x84fta \x84ndring:";
Kod: Markera allt
Bekr0ta ändring:

Kod: Markera allt
/* å=\x86 ä=\x84 ö=\x94 Å=\x8f Ä=\x8e Ö=\x99 */
uint8_t EEMEM change2[] = "\n\rBekr\x84fta \x84ndring:";
Kod: Markera allt
Bekr0ta ändring:
Kod: Markera allt
...
while (!ADC_ready); // vänta
adc = ADCL;
adc |= (ADCH << 8);
ADCSRA = ADCSRAset; // ADC-OFF
MCUCR = MCUCRset; // default = IDLE sleep mode
return adc;
}
Läser alltså in ADCL och ADCH , båda till r24, och instruktionen efter så kommer en LDI R24, 0x06 .... den spolar alltså hela min analoga läsning! Nu blir jag sne..192: while (!ADC_ready); // vänta
+000000F9: 91800090 LDS R24,0x0090 .......... Load direct from data space
+000000FB: 2388 TST R24 .......... Test for Zero or Minus
+000000FC: F3E1 BREQ PC-0x03 .......... Branch if equal
193: adc = ADCL;
+000000FD: B184 IN R24,0x04 .......... In from I/O location
194: adc |= (ADCH << 8 );
+000000FE: B185 IN R24,0x05 .......... In from I/O location
195: ADCSRA = ADCSRAset; // ADC-OFF
+000000FF: E086 LDI R24,0x06 .......... Load immediate
+00000100: B986 OUT 0x06,R24 .......... Out to I/O location
Kod: Markera allt
+000000FF: E086 LDI R24,0x06 .......... Load immediate
+00000100: B986 OUT 0x06,R24 .......... Out to I/O location
Kod: Markera allt
return adc;
Kod: Markera allt
int16_t ADCread(uint8_t kanal) {
int16_t adc;
....
adc = ...
...
return adc;
det är en väldans massa kod, som jag ville bespara er... (som jag nu inte kan återge längre, då jag rättat koden och kompilerat om). Det returnerades aldrig något värde förstås, eftersom det redan från början hade spolats. Men hela funktionen hade optimerats till en "line-in" så det fanns ingen return över huvud taget i den optimerade koden.Jag skulle vilja se hur koden ser ut de följande raderna. Vad händer efter OUT 0x06,R24? Det är ju där "return" skall utföras.
Kod: Markera allt
if (gain20) {
current = ADCread(k[knr]);
current = current*32/20;
}
...
(senare i koden:)
current = ADCread(k[knr]);