Sida 2 av 2

Re: ATmega16, C-kod som beter sig slumpmässigt (i mina ögon)

Postat: 11 augusti 2013, 15:14:14
av TomasL
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å.

Re: ATmega16, C-kod som beter sig slumpmässigt (i mina ögon)

Postat: 11 augusti 2013, 15:20:09
av mmarks
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!

Re: ATmega16, C-kod som beter sig slumpmässigt (i mina ögon)

Postat: 11 augusti 2013, 15:31:39
av TomasL
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)
			{
				.....
				.....
				.....
				.....
			}
		
		
		}