Co je spatne?
MK
info@mcu.cz
Pátek Říjen 1 17:52:52 CEST 2004
> mam na procesoru ATmega8535 takovyto kod:
>
> // A/D converter bit mask. Enables ADC, one conversion
> // at a time, frequency CLK/64 (~160kHz). Disable interrupts
> #define admask 0x86
> // ADIF bit mask
> #define adif 0x10
> // ADSC mask
> #define adsc 0x40
>
> uint16_t i, h, l;
> uint8_t value, prevval;
>
> for (i=1; i<256; i++) {
> // Start conversion, loop until it is done
> ADCSRA = admask | adsc;
> while (ADCSRA & adsc) ;
> ADCSRA = ADCSRA | adif;
> // Read value
> l = ADCL;
> h = ADCH;
> value = ((h << 8) | l) >> 2;
>
> /**/ char buffer[10];
> /**/ sprintf( buffer, "%x%x", ADMUX, (h<<8) | l);
> /**/ DisplayText( buffer);
>
> if (prevval!=value) return 0xFF;
> prevval = value;
> }
>
> /*************************/
>
> Kdyz je kod oznaceny /**/ tam, kde ted je, vse funguje spravne a pri
> zmene napeti na vstupech AD prevodniku se meni displej. Kdyz ovsem tento
> kod dam az za cyklus na pozici oznacenou /*************************/,
> tak to porad zobrazuje 3FF bez ohledu na to, co je ne vstupu. Uz nad tim
> badam druhy den a porda na nic nemuzu prijit. Nevite, v cem je chyba?
> Prekladam to pomoci nejnovejsi verze WinAVR. Pokud enkdo vite o
> disassembleru pro ATmega8535, budu moc rad - prohlednu si primo
> prelozeny kod a treba budu moudrejsi.
Jsem uz dneska nejak pretazenej a proto asi kod vubec nechapu :-)))
Je to v main(), nebo je to fragment nejake funkce ???
Pokud to je v main-u, kam se vlastne chcete vracet tim returnem ???
A s jakou hodnotou pri nesplnene podmince???
Jinak pokud to je funkce a promenna "h" je globalni, tak ji musite definovat jako volatile,
jinak Vam to prekladac mirne poupravi :-)))
A zaroven, pokud to je funkce, tak je to .... (nevim jak slusne to nazvat) napsane.
Koser by pak bylo vracet opravdu hodnotu a ne pouzivat globalni promennou
Neni nutny dissasembler, staci si jen nechat udelat preklad GCCckem do asm
S pozdravem
===============================
Milan Kostomlatsky
Belcicka 14
14100 Praha 4 - Sporilov
Czech Republic
-------------------------------
GSM : +420 604 281 263
ICQ : 167 766 629
HTTP: http://www.mcu.cz
===============================
Další informace o konferenci Hw-list