Hej igen.
nu bliver det lidt mere konkret gg
det er denne linie der fryser systemet i ISR(ADC_vect)
adcValue[adcChannel - ADC_FIRST][adcWriteIndex] = (adHi << 8 ) | adLo; /* save the value we've read above */
og den hænger jo sammen med if (adcBits <= 8 )
ISR(ADC_vect)
{
toggleLED1();
uint8_t adLo;
uint8_t adHi;
if(adcBits <= 8 ) /* using 8-bit precision */
{
if(ADCSRB & (1 << ADLAR)) /* check hardware alignment-configuration and act accordingly */
{
adLo = 0;
adHi = inb(ADCH); /* (read highbyte only) */
}
else
{
adHi = 0;
adLo = inb(ADCH); /* (read highbyte only) */
}
}
else
{
adLo = inb(ADCL); /* read lowbyte before highbyte! */
adHi = inb(ADCH); /* read lowbyte before highbyte! */
}
så længe jeg køre 8 bit kan jeg jo reducere den til at fjerne alle else og når jeg ved at jeg har sat ADLAR i initADC kan jeg vel ogso fjerne if condition og det samme når jeg ved at adc er 8 bit sat i main.c fjerner jeg også den sidste if lige for en stund, og ender ud med en værdi for adLo og adHI. dem smider jeg så ind i linien der skaber problemer og den kommer til at hedde
adcValue[adcChannel - ADC_FIRST][adcWriteIndex] = (inb(ADCH) << 8 ) | 0;
er det korrekt reduceret?
hvordan den linie så fungerer har jeg ingen ide om endnu, men tror den har noget med de værdier der skal bruges i tabellen, og hvad det er der får den til at fryse har jeg heller ikke gennemskuet endnu

Men erstatter jeg det før = tegnet med en anden variabel, så virker det godt og så må det være adcValue[adcChannel - ADC_FIRST][adcWriteIndex] der fryser systemet men det kan selvfølgelig også være værdien den vil skrive der er noget galt med
ved godt der er et mellemrum for meget i 8 ) men det er for at slippe for smily