C-30 #define fråga

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
BER
Inlägg: 399
Blev medlem: 9 mars 2005, 00:02:10
Ort: Östergötland

Inlägg av BER »

Jag hade också tyckt det vore trevligt om det gick att skriva ut egna meddelanden. Ofta använder jag ”#define test 1” så att det på ett enkelt sätt går att stänga av kontrollfunktioner som endast används i test stadiet. Denna test definitionen hade varit trevligt att kunna skriva ut varje gång vid kompilering. Sökte lite på google men det verkar inte som att egen definierade preprocessor meddelande är inkluderat i ANSI C

http://icecube.wisc.edu/~dglo/c_class/
jbulow
Inlägg: 114
Blev medlem: 22 juni 2006, 21:35:26
Ort: Malmö

Inlägg av jbulow »

Ett tips för att debugga pre-processor-problem är att just bara köra pre-processorn och titta på vad det resulterar i för kod. Med gcc-baserade kompilatorer är det E-flaggan man använder då.
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

Inlägg av dangraf »

>> icecap,
BRG_1 och BRG_2 är inte identiska, det skiljer en "1"a
eftersom TEST_1 och TEST_2 beror på ovanstående variabler kommer resultaten bli olika.
Anledningen till detta är att ibland får man värdet 24.98 som skall avrundas till 25 och ibland får jag 25.02 som skall avrundas till 25.

alltså borde en av dem vara rätt och den andra fel vilket jag testat i
#if satserna nedan. Där kontrollerar jag även att felet är inom rimilga gränser. ifall varken BRG_1 eller BRG_2 ger en tillräckligt noggran baudrate kommer inte BRG bli definierad och då visas error meddelandet.. var det tänkt iaf.

>>$tiff det brukar gå att skriva ut #warning meddelanden så att man får ut en text utan att avbryta kompileringen
EDIT: såg just i manualen att C30 INTE stöder #warning meddelanden, sorry
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Re: C-30 #define fråga

Inlägg av exile »

Du kan kan lösa avrundning genom:

Kod: Markera allt

#define BRG  		(int)((CLOCK_SPEED+BAUDRATE/32)/BAUDRATE/16) - 1	
Skriv svar