Detb är ju inte så konstigt att det inte fungerar, eftersom bokstäverna "a-f" ingår i data du skickar.
vad du måste göra är att:
Du skickar alltså först 0x61 tom 0x66 som kommandon. Det innebär att när du skickar data som andra byten får du aldrig skicka dessa 6 värden.
Om du trots allt måste skicka detta som data, måste du skicka två byte i stöten, mellanlagra det i en buffert och därefter behandla dem, där första byten är kommando, och andra data, du kan alltså inte med den koden du har skicka en byte i taget, för då blir det fel, vilket du ser.
Dessutom, skall du initiera alla variabler, speciellt om de skall användas som index.
I teorin skall de initieras till 0 iom att du satt dem till statiska, men det kan du inte lita på.
ATmega16, C-kod som beter sig slumpmässigt (i mina ögon)
Re: ATmega16, C-kod som beter sig slumpmässigt (i mina ögon)
Tack TomasL! Det är ju självklart när du pekar ut det! Önskar att jag hade frågat lite tidigare, det hade besparat mig många timmar med dåligt humör 
Nu kan jag ju inte pröva detta förrän om ca en vecka men det verkar ju väldigt troligt att detta skulle vara orsaken till min huvudvärk!

Nu kan jag ju inte pröva detta förrän om ca en vecka men det verkar ju väldigt troligt att detta skulle vara orsaken till min huvudvärk!
Re: ATmega16, C-kod som beter sig slumpmässigt (i mina ögon)
jag hade gjort nått i den här stilen
Kod: Markera allt
unsigned char i=0;
unsigned char rxbuff[xxx]; // beroende på hur många byte du skall ta emot
unsigned char rxcmd=0;
while (rx_reg_not_empty)
{
rxbuff[i++]=rxreg;
}
if (i>=1) // beroende på hur många byte du tar emot i stöten
{
rxcmd=rxbuf[0];
switch (rxcmd)
{
.....
.....
.....
.....
}
}