Misc

Optimization Code дар Микроконтроллерҳо

Муаллиф: Laura McKinney
Санаи Таъсис: 4 Апрел 2021
Навсозӣ: 16 Май 2024
Anonim
Optimization Code дар Микроконтроллерҳо - Misc
Optimization Code дар Микроконтроллерҳо - Misc

Мундариҷа

Муаллиф лоиҳаи муҳандисии соли охири худро бо микро контроллерҳои dsPic ба итмом расонида, дар бораи ин дастгоҳҳо фаҳмиши васеъ пайдо кард.

Рамзи забони C-и микроконтроллер метавонад оптимизатсияро дар замимаҳои муайяни пешрафта талаб кунад. Ин оптимизатсияи код барои коҳиш додани ду чизи муҳим истифода мешавад:

  1. Андозаи код: Микроконтроллерҳо метавонанд маълумот ва дастурҳои маҳдудро аз сабаби маҳдуд будани ҳаҷми хотираи RAM нигоҳ доранд. Аз ин рӯ, рамз бояд оптимизатсия карда шавад, то ки дастурҳои мавҷуда ва хотираи маълумот ба таври самарабахш истифода шаванд.
  2. Вақтҳои иҷрои кодекс: Микроконтроллерҳо дастгоҳҳои пайдарпай мебошанд, ки як дастурро дар як вақт иҷро мекунанд. Ҳар як дастури васлкунӣ барои иҷрои худ миқдори муайяни давраҳои соатро сарф мекунад. Аз ин рӯ, рамз бояд оптимизатсия карда шавад, то ки он вазифаи ҳадди ақаллро дар давраҳои соат ё дастурҳои васлкунӣ иҷро кунад. Рамз ҳар қадаре ки давраро камтар истифода барад, ҳамон қадар тезтар кор мекунад. Ин маънои онро дорад, ки барномаҳо метавонанд зудтар кор кунанд, зеро вақти коркардашуда кам карда шудааст.

Ин мақола маслиҳатҳо ва ҳилаҳоеро пешниҳод мекунад, ки метавонанд барои коҳиш додани андоза ва мӯҳлати иҷрои рамзи микроконтролер истифода шаванд.


Microchip аз IDP MplabX барои намоиши намунаҳо дар ҷойҳои мувофиқ истифода мешавад.

Чӣ гуна вақти иҷрои кодро ба таври таҷрибавӣ чен кардан мумкин аст

Барои гирифтани тасаввурот дар бораи он, ки коди шумо барои иҷро дар вақти воқеӣ чӣ қадар вақтро мегирад, шумо бояд онро бо тариқи озмоишӣ чен кунед. Барои таҳлили вақти иҷрои рамз таҳлилгари мантиқӣ метавонад ба осонӣ истифода шавад ва хоҳишмандон метавонанд дар бораи ин раванд тавассути почтаи электронӣ аз ман бипурсанд. Ғайр аз ин:

  • Баъзе компиляторҳо қобилияти ҳисобкунии даврҳои соати рамзро доранд.
  • Баъзе ислоҳкунандагон, масалан ICD 3 аз микрочип метавонанд вақти иҷрошударо мустақиман тавассути сониясанҷ чен кунанд.

1. Қудрати коркард ва ҳаҷми хотираи микроконтроллератонро донед

Ин на ҳамеша басомади соат (Mhz) аст, ки тасвири ҳақиқии суръати коркарди микроконтролерро медиҳад, миқдори воқеӣ MIPS (дастурҳои мега дар як сония) ё шумораи дастурҳои MCU метавонад дар як сония иҷро кунад.

MCUs одатан аз 60-70 MIPS дар категорияи баландтарин то 20 MIPS 8-bit AVR доранд. Эҳтимол дорад, ки контролери баландсифати MIPS нисбат ба дастгоҳи пастсифат гаронтар бошад, бинобар ин дар ин ҷо шумо байни арзиш ва суръати коркард мубодила доред.


Микроконтроллерҳо барои нигоҳ доштани маълумот ва рамзи барнома хотираи алоҳида доранд. Андозаи ҳардуи онҳоро аз варақаи иттилоотӣ пайдо кардан мумкин аст. Агар кодекси шумо ба андозаи назаррас калон бошад, ба шумо як MCU лозим аст, ки ҳаҷми калонтари хотира дошта бошад.

2. Интихоби тағирёбандаҳо барои оптимизатсия дар андозаи рамз

Микро контроллерҳо хотираи маҳдуди маълумотро доранд, ки одатан аз 1 то 4 Кбайтро ташкил медиҳанд. Дар ин ҳолат оқилона аст, ки мувофиқи доираи интизоршудаи санаи сабтшуда навъи мувофиқи мувофиқро интихоб кунед. Дар ҷадвали зерин ин тағирёбандаҳо оварда шудаанд:

Хулосаи тағирёбандаҳое, ки дар забони C истифода мешаванд.

Намуди тағирёбандаАндозаи байтДиапазон

матн

1

Танҳо 0 ё 1

чар

1


-128 то 127

Int

2

-32,768 ба 32,767

int бидуни имзо

2

0 то 65,535

дароз

4

-2,147,483,648 ба 2,147,483,647

шино кардан

4

То 6 ҷои даҳӣ дақиқ

дучанд

8

То дақиқаҳои 15 даҳӣ дақиқ

дароз дукарата

10

То 19 ҷойҳои даҳӣ дақиқ

Мисол:

  • Агар ду тағирёбандаҳои X ва Y илова карда шаванд ва натиҷа дар Z нигоҳ дошта шаванд, аммо арзиши Z пас аз илова кардан 65.535 зиёдтар хоҳад буд, пас Z метавонад дароз ва X ва Y ҳамчун имзо эълон карда шаванд int, арзишҳои X ва Y низ манфӣ намешаванд. Ин имкон медиҳад, ки 04 байт дар хотираи додаҳо сабт карда шавад, дар акси ҳол, агар ҳамаи тағирёбандаҳо тӯлонӣ эълон карда шаванд, истифода мешуданд.
  • Ду тағирёбандаи X ва Y тақсим карда мешаванд, ки арзишҳояшон бояд ба рақамҳои бутун тақсим карда шаванд, аммо натиҷаи тақсимот метавонад даҳӣ ҳосил кунад, пас X ва Y метавонанд int эълон карда шаванд ва натиҷа вобаста аз он шино ё дубора эълон карда шаванд дақиқ талаб карда мешавад.

Ҳангоми эълони массивҳои дорои шумораи зиёди унсурҳо интихоби навъи маълумот метавонад муҳим бошад.

3. Интихоби тағирёбандаҳо барои оптимизатсия дар вақти иҷрои кодекс

  • Далели собит аст, ки ҳисобҳои нуқтаи шинокунанда нисбат ба ҳисобҳои нуқтаи собит тӯлонитар мегиранд. Тағирёбандаи нуқтаи шинокунандаро, ки дар он арзиши даҳӣ лозим нест, истифода набаред. Дар ҷойҳои имконпазир бо рақамҳои беимзо кор кунед.
  • Тағирёбандаҳои маҳаллӣ аз тағирёбандаҳои глобалӣ бартарӣ доранд. Агар тағирёбанда танҳо дар функсия истифода шавад, пас он бояд дар он вазифа эълон карда шавад, зеро дастрасӣ ба тағирёбандаҳои глобалӣ нисбат ба тағирёбандаҳои маҳаллӣ сусттар аст.
  • MCU-и 8-бита тағирёбандаи андозаи байтро зудтар пайдо мекунад ва MCU-и 16-ро бо сабаби дарозии суроғаи тавлидшуда тағйирёбандаи 2-байтӣ осонтар хоҳад ёфт.

4. Оптимизатсияи амалиёти арифметикӣ

Амалҳои арифметикиро бо роҳҳои зерин оптимизатсия кардан мумкин аст.

  1. Ба ҷои арзёбии Sine ё ягон функсияи дигари тригонометрӣ ё ягон амалиёти дигар, ки натиҷаи онро пешакӣ дар код маълум кардан мумкин аст, ҷадвалҳои ҷустуҷӯи арзишҳои пешакӣ ҳисобшударо истифода баред.
  2. Дар ҳолате, ки ҷадвали ҷустуҷӯи синусҳо аллакай дар хотира нигоҳ дошта шуда бошад, косинусро бо пешрафти нишондиҳандаи массив ба 90 дараҷа баробар арзёбӣ кардан мумкин аст.
  3. Дар байни чор амали арифметикӣ тақсим ва зарб вақти коркарди бештарро талаб мекунад, дар амал он метавонад дар ҳудуди садҳо микро сонияҳо ва ё дар ҳолати арзишҳои нуқтаи шинокунанда бошад.
  4. Ба ҷои тақсим ва зарб дастурҳои гузариши битро истифода баред. Дастури басти рости 3 барои тақсим кардани 2 хизмат мекунад3 ки дар он ҳамчун дастури сменаи чап 1 ба 2 зарб шудан хизмат мекунад1.

5. Барои ҳисобҳои пуршиддат як микроконтролери қобилияти DSP истифода баред

Баъзе микроконтроллерҳо як дастгоҳи коркарди DSP доранд, ки пас аз он ALU-и маъмулӣ дар меъмории онҳо сохта шудааст. Ин муҳаррики DSP ба ҳисобгирии арифметикӣ хеле зуд дар миқдори камтари давраҳои соатӣ (яке дар аксар ҳолатҳо) пас аз ALU чанд маротиба тезтар равона карда шудааст.

Дастурамали протсессори DSP метавонад зудтар иҷро карда шавад, пас ALU инҳоянд:

  • Дастурамали бит ва битобед.
  • Зарб, тақсимот ва дигар амалиётҳои арифметикӣ.
  • Арзёбии синусҳо ва дигар функсияҳои тригонометрӣ.
  • Ҳама амалиётҳои DSP, ба монанди FFT, DFT, гардиш ва филтркунии FIR.

Истифодаи муҳаррики DSP-и микроконтроллер талаб мекунад, ки:

  • Китобхонаҳои алоҳидаи DSP ба лоиҳа дохил карда шудаанд.
  • Номҳои функсияҳо аз китобхонаи математикии стандартии забони C фарқ мекунанд. Ҳуҷҷатҳои ин китобхонаҳо ва функсияҳо метавонанд аз вебсайти истеҳсолкунандагони дахлдор дастрас карда шаванд.
  • Муҳаррики DSP як навъи тағирёбандаи гуногуни 'касрӣ' -ро истифода мебарад. Пеш аз давом додани функсияҳои китобхонаи dsp тарзи истифодаи тағирёбандаҳои навъи касриро омӯзед.

Дар хотир доред, ки функсияҳои стандартии китобхонаи математика муҳаррики DSP-ро ба кор намедароранд, зеро онҳо ба дастурҳои васлкунии ALU тарҷума мешаванд.

6. Кор бо Interrupts

Истифодаи қатъҳоро барои иҷрои вазифаҳои мушаххас, ба монанди:

  • Хондани арзишҳои ADC.
  • Ирсол ва қабул аз UART.
  • Навсозии регистрҳои даврии боҷи PWM.
  • CAN ё муоширати I2C.

Қатъкуниҳо ба ин функсияҳо дар муқоиса бо иҷрои онҳо дар қисми асосӣ бо роҳи даъвати функсия ё рамзи дохилӣ зуд хидмат мерасонанд.

Қатъкунӣ инчунин танҳо дар ҳолати зарурӣ сар мезанад, дар сурате, ки агар дар қисми асосии рамзгузорӣ карда шавад, рамз дар ҳар такрори даври while (1) иҷро карда мешавад.

7. Беҳтарин Тарҷумонҳои дастрасро истифода баред

Компиляторҳо метавонанд баъзе оптимизатсияҳои дар боло баррасишударо ҳангоми тарҷумаи код аз забони C ба забони ассамблея дар сурати дуруст танзим карда шуданашон ба таври худкор татбиқ кунанд. Имкониятҳои оптимизатсияро дар компиляторатон ҷустуҷӯ кунед ва агар имконпазир бошад ба версияҳои касбии компиляторҳо такмил диҳед, зеро онҳо оптимизатори рамзи қавитаранд.

8. Изҳороти шартиро оқилона истифода баред

  • Ҳангоми истифодаи як қатор изҳороти if-else аввал шароити эҳтимолиро нигоҳ доред. Ҳамин тариқ, MCU набояд ҳамаи шартҳоро пас аз пайдо кардани ҳолати ҳақиқӣ тафтиш кунад.
  • Изҳори коммутатори калима одатан if-else тезтар аст.
  • Ба ҷои як қатор изҳорот ибораҳои nested if-else -ро истифода баред. Блоки if-else, ки изҳороти зиёд дорад, метавонад ба зерфаслҳои хурд тақсим карда шавад, то ҳолати бадтарин (охирин) -ро оптимизатсия кунад.

9. Вазифаҳои Inline -ро истифода баред

Вазифаҳое, ки бояд танҳо як маротиба дар код истифода шаванд, метавонанд статикӣ эълон карда шаванд. Ин имкон медиҳад, ки тартибдиҳанда ин функсияро ба функсияи дохилӣ оптимизатсия кунад ва аз ин рӯ барои занги функсия ягон коди калисо тарҷума нахоҳад шуд.

  • Функсия метавонад бо истифодаи калимаи калидии 'статикӣ' бо он дар хатти дохил эълон карда шавад.

10. Доираҳои камкардашударо истифода баред

Доираи коҳишёфта дар муқоиса бо ҳалқаи афзоянда рамзи васлкуниро камтар месозад.

Ин дар он аст, ки дар ҳалқаи афзоиш дастури муқоиса барои муқоисаи индекси давра бо арзиши максималӣ дар ҳар давра барои санҷидани он, ки индекси давр ба арзиши ҳадди аксар расидааст, лозим аст. Баръакс, дар ҳалқаи коҳиш, ин муқоиса дигар лозим нест, зеро натиҷаи коҳишёфтаи индекси давр парчами сифрро дар SREG дар ҳолати ба сифр расидан таъин мекунад.

Бо дарназардошти он, ки ҳалқа бояд сад маротиба такрор шавад, кам кардани як дастур аз ҳалқа сад маротиба аз иҷрои он канорагирӣ мекунад, аз ин рӯ, эҳтимол дорад, вақте ки ҳалқа борҳо такрор шавад, таъсир бештар хоҳад буд.

Печондан

Ин маслиҳатҳо метавонанд муфид бошанд, аммо татбиқи ҳақиқии онҳо ва қобилияти онҳо аз маҳорати барномасоз ва фармоне, ки ӯ дар кодекси худ дорад, вобаста аст. Дар хотир доред, ки андозаи барнома на ҳама вақт мӯҳлати иҷроро муайян мекунад, баъзе дастурҳо метавонанд давраҳои бештари соатро сарф кунанд, пас дигараш, пас бори дигар малакаҳои барнома бояд нақши худро бозанд.

Ин мақола дақиқ ва ба беҳтарин дониши муаллиф рост аст. Мундариҷа танҳо барои мақсадҳои иттилоотӣ ё фароғатӣ пешбинӣ шудааст ва маслиҳати шахсӣ ё машварати касбиро дар масъалаҳои тиҷорӣ, молиявӣ, ҳуқуқӣ ва техникӣ иваз намекунад.

Тавсия Дода Мешавад

Интихоби Сайт

Чӣ гуна заминаи сафеди тасвири .jpeg -ро дар Illustrator нест кардан мумкин аст
Компютер

Чӣ гуна заминаи сафеди тасвири .jpeg -ро дар Illustrator нест кардан мумкин аст

Форест ва Анс ҳарду бо нармафзори гуногун кор мекунанд ва аз мубодилаи усулҳо ва фаҳмишҳои барнома бо дигарон лаззат мебаранд.Ба наздикӣ ман бо мушкилоти оддии аз байн бурдани заминаи сафед аз тасвири...
Саволҳои ҷавобии батареяи 6 Volt
Саноатӣ

Саволҳои ҷавобии батареяи 6 Volt

Тамара Вилҳит як нависандаи техникӣ, муҳандиси саноатӣ, модари ду фарзанд аст ва муаллифи илмҳои фантастикӣ ва даҳшат аст.Дар зер, шумо ба саволҳои зерин ҷавоб хоҳед ёфт:Ба ман чанд батареяи 6 волт ло...