Регистри и първоначална настройка на таймера
Така, до сега дадохме описание на важните параметри на таймерите. Не забравяйте, че има и доста по сложни таймерни блокове, които се използват за различни цели в процесорната техника.
Настройката на таймерите, както и всички хардуерни блокове се прави чрез хардуерните регистри и техните битове, като както знаете за всеки хардуерен блок на процесора си има отделен регистър, в някои процесори единични битове са обединени в общ регистър.
В процесора 16F1829 настройката на таймерите 2, 4, 6 се прави във регистъра показан на графиката по-надолу

Ето в този регистър TxCON се настройва стартирането на таймера, делителя преди самия таймер и делителя след самия таймер. Буквата която е малко х се замества със номера на самия таймер който искате да настроите и да ползвате. Това са таймерите 2, 4, 6 като другите два таймера – таймер 0 и таймер 1 са във отделни графи на документацията. Както се вижда от блоковата графика на таймера входящата честота е директно зададена FOSC/4, което означава че входящата честота на таймера е настроена да бъде предварително разделена на 4 без значение дали ползвате външен или вътрешен генератор.
Има таймери на които входящата честота може да бъде подавана от външен пин на процесора, като това може да бъде отделен честотен генератор с външна интегрална схема или изобщо някаква външна електроника, която да подава правоъгълни импулси към таймера. За информация може да разгледате другите два таймера на този процесор, като обърнете внимание на блок схемата която е в началото на всеки раздел, където е описано от къде таймера може да вземе входяща честота, както и какви са хардуерните функции които може да изпълни таймера чрез управлението със съответните за него регистри.
- Details
- Written by Super User
- Category: picprocesori
- Hits: 362
Какво се случва когато таймера се препълни ? Това правят всички таймери и това е тяхната цел, да се препълнят за да генерират прекъсване и да изпълнят командите, които сте задали във функцията за прекъсване на таймера. По този начин следим някакво време което ни изпълнява определени команди в процесора за управление на някакъв хардуер, променливи, часовници и много други. Прекъсването ще даде възможност на точно определено време да се изпълни някакво събитие, което ни помага при отчитане на входящи и/или изходящи данни, процеси и други.
1. Когато таймера се препълни се вдига флага за прекъсване на таймера, процесора обработва командите които са във функцията на прекъсването и след това се връща към изпълнение на функциите в главната функция void main(void) във файла main.c
2. ВНИМАНИЕ !!!!! КОЛКОТО ПО-ЧЕСТО ПРЕПЪЛВАТЕ ТАЙМЕРА, ТОЛКОВА ПО-ЧЕСТО ЩЕ СЕ ГЕНЕРИРА ПРЕКЪСВАНЕ В ПРОЦЕСОРА И МОЖЕ ДА НЕ ОСТАНЕ ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ НА ОСНОВНИТЕ ФУНКЦИИ ВЪВ ГЛАВНАТА ФУНКЦИЯ !!!! АКО СТАРТИРАТЕ ПОВЕЧЕ ОТ ЕДИН ТАЙМЕР КОИТО И ДА СА ТЕ ВНИМАВАЙТЕ ЗА ВРЕМЕТО ЗА КОЕТО ГИ ПРЕПЪЛВАТЕ СЪОТВЕТНО В ПРОЦЕСОРА СЕ ГЕНЕРИРА ПРЕКЪСВАНЕ !!!
3. Ще разгледаме това във показания код по-надолу във урока
На тази графика има няколко съществени разлики в настройката на таймер 2, таймер 4 и/или таймер 6. Таймерите в процесора с тази конфигурация като три отделни хардуерни блока са три броя с имена таймер 2, таймер 4 и таймер 6. В описанието на процесора микрочип са дали възможност да използваме няколко различни по хардуерна настройка таймера с цел по-голяма гъвкавост в различните приложения в електрониката.

Описание на параметрите на таймера :
1. FOSC/4 е тактовата честота подавана на входа на таймера разделена предварително на 4.
2. PRESCALER – е делител преди таймера, който с конфигурация от битове можете да изберете коефициент на делене показан на графиката, както и описанието на регистъра отговарящ за всеки от трите таймера поотделно.
3. TMRx e регистъра на таймера 2,4,6 който се увеличава с 1 на всеки постъпил импулс след входящия делител според коефициента на делене.
4. PRx е регистъра в който давате стойност до колко да брои таймера. В таймер 0 този регистър го няма. Таймер 0 винаги брой до 255 от колкото му зададете предварително. Таймерите 2,4,6 имат възможност да зададете и стойност на регистъра от колко да започне, както и стойност до колко да брои със тактова честота постъпваща от делителя преди таймера и подавани след делителя на таймера ако искате да го използвате и него.
5. COMPARATOR e регистърът който ще отчете дали има равенство между двата регистъра, което съответно ще означава, че таймера се е препълнил и ще се подаде импулс на ИЗХОДЯЩИЯ ДЕЛИТЕЛ – POSTSCALER
6. POSTSCALER – това е също делител на честота, но след таймера, който има възможност да бъде настроен да дели или да не дели а директно да подава изходящия импулс към флаговете за прекъсване всеки съответно на таймерите 2, 4, 6.
7. TMRxIF е флага съответно 2, 4, 6 за всеки от трите таймера, който ще се установи в 1, когато таймера се препълни и се генерира прекъсване.
- Details
- Written by Super User
- Category: picprocesori
- Hits: 364
Схема на таймерите които ще разгледаме във този урок. И двата таймера са с почти еднакво софтуерно управление, което ще разгледаме след като обясним показаните графики.
Така, да направим разбор на показните две диаграми за двата таймера които ще разгледаме. Първата е за таймер с номер 0, който често употребяваме за най-различни задачи. Кое какво означава :
1. FOSC/4 е входящата тактова честота от тактовия генератор на процесора. Тактовият генератор може да бъде, както външен кварц или кварцов резонатор, така и вътрешният генератор на процесора. FOSC/4 означава frequency oscilator divide by 4 или преведено означава, че взимаме тактова честота от генератор разделена на 4. Или това е 1 импулс към таймера на всеки 4 подадени от тактовия генератор. Честотните делители ще разгледаме в друг урок с процесорите, но за честотните делители в TTL електрониката има урок написан на блога, както и в нета има доста.
2. TMR0CS е таймер 0 чип селект e бит от регистър, който има две състояния 0 или 1 за да изберем от къде да постъпи тактов сигнал към таймера. Ако бита има стойност 0 ще използваме тактова честота постъпила от генератора на процесора. Ако стойността е 1 може да подаваме тактова честота към таймера от външен хардуерен генератор например с чип таймера 555 на определен пин на процесора като вход за импулси.
3. PSA битовете са също възможност за избор на опция при настройката на таймера. Имаме възможност да избираме дали входящата честота да се дели през делител със зададена от нас стойност на делене или директно да постъпи като импулси към таймера.
4. Следва синхронизиращият блок в който ние нямаме възможност за контрол. Той е хардуерен модул вътре в кристала на процесора и софтуера не може да контролира този модул. Има процесори на които може да се задават разни опции за този модул, но за 16F1829 тази опция не е валидна.
5. 8 bit PRESCALER – този модул е честотен делител с възможност за задаване на коефициента на деление. В пдф файла в регистъра за настройка на таймера има стойностите с които може да се настрои делителя, в зависимост кои битове са 0 и кои 1 от тази част на регистъра.
6. TMR0 е регистъра на таймер 0, към който сочи цялата електроника в процесора. Ако четете внимателно пдф описанието ще видите че постъпилата честота с определени параметри ще увеличава съдържанието на таймер с +1 докато таймера стигне стойност 255. Този таймер както казахме е 8 битов и максимума на достигане на стойността в регистъра НЕ МОЖЕ ДА БЪДЕ ПО-ГОЛЯМА ОТ 255 !!! регистърът може предварително да бъде зареден със стойност ОТ КОЯТО увеличаващо да брои таймера нагоре до 255 или това е препълване и прекъсване.
7. Най-важната част от таймера е неговият флаг за препълване – TMRIF0 . този е флага за таймер 0 който показва кога таймера се е препълнил. Щом флага е вдигнат или това означава че е равен на 1, значи имаме препълване на таймера и ще се изпълнят командите записани във функцията за прекъсване на този таймер. Флагът трябва да се нулира софтуерно, като веднага след това се изпълняват командите във функцията за прекъсването.
8. Overflow to timer 1 означава че този изход е свързан към таймер 1 като може да се използва ако сте пуснали и използвате и таймер 1.
- Details
- Written by Super User
- Category: picprocesori
- Hits: 385
употреба на таймерите в пик процесорите – тест с процесор 16F1829
урок за настройване и управление на таймерните блокове във пик процесорите с примерен софтуер и диаграми
таймерите както във всички процесори, така и във пиковете са отделни хардуерни модули, които са самостоятелни като управление и действие от процесорното ядро.
В по ниските класове процесори са свързани към общата шина за данни, но в някои процесори може да се види, че са свързани към шината на процеорното ядро и/или на отделна самостоятелна шина за таймерите, където има арбитърен хардуер за управление на приоритети, прекъсвания и други функции. В различните конфигурации на процесорните кристали могат да се срещнат различни хардуерни варианти на таймерни структури и/или на таймерни хардуерни конфигурации.
за пример ще вземем таймерните блокове на пик процесора 16F1829.
В описанието на процесора таймерните блокове са няколко на брой като се различават по номер и брой битове на таймерите. Имаме няколко 8 битови таймера и няколко 16 битови таймера
8 битовите таймери са с възможност на броене до 255, както знаете максимум на стойността, която може да запишете във 8 битова клетка е 255 числова стойност, но възможните комбинации са 256 защото 0 също е вариант за запис на 8 битовият регистър/клетка.
16 битовите таймери са двубайтови като максимум стойноста може да бъде до 65535 числова стойност, като прибавим и вариант 0 стават 65536 варианта.
Тези стойности са границите на препълване на таймерите, като те са важни да ги знаем за да можем да настройм таймерите да работят правилно и да знаем кога ще се случи прекъсването за да се увеличи стойността на таймера и така до препълването му и започването от начало на броенето. По време на това броене могат да бъдат използвани функции за определяне на различни входящи и/или изходящи параметри от и/или към процесорите.
Таймерите са широко използвани за измерване на различни променливи във времето величини, като това могат да бъдат обороти на двигатели, измерване на силата на поток на дадени течности в различни тръбни конструкции, задаване на честоти за управление на обороти, организиране на часовници за реално време, изобщо всякакви времеви променливи могат да бъдат измерени или зададени към всеки един вход или изход на процесора, като на този вход или изход мога да бъдат свързани всякакви двигатели, помпи, лампи, светодиоди, високо или ниско волтови датчици или товари за управление.
Можете да си направите таймер който примерно през определено време да следи температурата на аналогов датчик, като след това процесора следи за стойността на тази температура и взема решение спрямо вашата настройка в софтура дали да включи вентилатора, реотан, или да ги изключи, колко време да изчака когато веднъж ги е включил, или колко време да изчака след като е изключени преди да се включат, изобщо всякакви възможности могат да бъдат постигнати с таймерното управление.
Таймерите също така са важни за постигане на различни честоти при употреба в различни работни процеси. С таймер можете да направите даден изход на процесора да мига с определена честота ако иската да имате някакъв честотен генератор на правоъгълни импулси.
Можете също с таймер и със аналоговия изход на процесора да направите честотен генератор не само на правоъгълни ами и на всякакви импулси, като определяте честотата, периода, амплитудата на сигнала, също и коефициента на запълване на импулса /duty cycle/, когато ползвате ШИМ модулация или така наречения PWM сигнал за управление на мощността на различни товари.
Схема на таймерите които ще разгледаме във този урок. И двата таймера са с почти еднакво софтуерно управление, което ще разгледаме след като обясним показаните графики.
- Details
- Written by Super User
- Category: picprocesori
- Hits: 403
много добър сайт за уроци за ПИК ПРОЦЕСОРИТЕ >>> https://deepbluembedded.com/
- Details
- Written by Super User
- Category: picprocesori
- Hits: 819
Page 3 of 11

