Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 10.05.2007, 16:51   #1
Alex_Krycek
Guest
 
Сообщений: n/a
Post CCP PWM в PIC12F683

Доброго времени суток.

Сразу скажу, что я новичок в программировании контроллеров, поэтому имеется несколько вопросов. Конкретно - по работе CCP в режиме PWM контроллера PIC12F683.

Очень долго бился, чтобы получить хоть какую-то картинку на осциллографе с 5 пина контроллера, датащит же нам не писан

В секции 11.3.7 SETUP FOR PWM OPERATION пятым пунктом, написано:
Цитата:
5. Configure and start Timer2:
• Clear the TMR2IF interrupt flag bit of the
PIR1 register.
• Set the Timer2 prescale value by loading the
T2CKPS bits of the T2CON register.
• Enable Timer2 by setting the TMR2ON bit of
the T2CON register.
При написании программы я это дело проигнорировал, в итоге бился 5 часов сверху.

Вопрос. Я правильно понял этот пункт и правильная ли это реализация?:
Код:
    BANKSEL PIR1
    BTFSS PIR1,TMR2IF
    GOTO $-1
Вопрос 2. Зачем нужна эта задержка? Можно ли ее как-то обойти?
Вопрос 3. Оптимизирует ли MPASM свою директиву BANKSEL? (Например, два регистра в одном банке, перед каждым я ставлю BANKSEL, вставит ли компилятор 2 инструкции или ограничится одной).

Спасибо.
  Ответить с цитированием
Старый 05.11.2014, 18:47   #2
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 35
Сообщений: 2,096
Вес репутации: 3340/101
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от Alex_Krycek Посмотреть сообщение
Вопрос 3. Оптимизирует ли MPASM свою директиву BANKSEL? (Например, два регистра в одном банке, перед каждым я ставлю BANKSEL, вставит ли компилятор 2 инструкции или ограничится одной).
Спасибо.
Прошу прощения за реанимацию темы Присоединяюсь к вопросу, давно волнует. Кто-нибудь может уточнить?
Romantic вне форума   Ответить с цитированием
Старый 05.11.2014, 19:18   #3
Miser
Senior Member
 
Регистрация: 06.09.2008
Возраст: 58
Сообщений: 239
Вес репутации: 227/48
Miser has a spectacular aura aboutMiser has a spectacular aura aboutMiser has a spectacular aura about
По умолчанию Re: CCP PWM в PIC12F683

Если банки переключать не надо, на кой тогда вообще эту директиву ставить!?
По поводу оптимизации, можно же листинг посмотреть. Да и довольно не просто просчитать откуда может произойти прыжок в это место.
Miser вне форума   Ответить с цитированием
Старый 05.11.2014, 19:22   #4
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 35
Сообщений: 2,096
Вес репутации: 3340/101
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от Miser Посмотреть сообщение
Если банки переключать не надо, на кой тогда вообще эту директиву ставить!?
По поводу оптимизации, можно же листинг посмотреть. Да и довольно не просто просчитать откуда может произойти прыжок в это место.
Вы на память помните расположение всех регистров по банкам? Я - нет. И желания заглядывать каждые десять секунд в карту регистров тоже нет. Отсюда - вопрос.

Была бы возможность проверить в "натуре" - вопроса бы не возникло.
Romantic вне форума   Ответить с цитированием
Старый 05.11.2014, 20:04   #5
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4353/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от Romantic Посмотреть сообщение
Прошу прощения за реанимацию темы Присоединяюсь к вопросу, давно волнует. Кто-нибудь может уточнить?
Нет, не оптимизирует. Ассемблер ничего не оптимизирует.
Vlad&mir вне форума   Ответить с цитированием
Старый 05.11.2014, 20:05   #6
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 371
Вес репутации: 1099/56
tsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud of
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от Romantic Посмотреть сообщение
Прошу прощения за реанимацию темы...
А ведь прикольно ТС 7 лет назад зарегистрировался и "создал" всего одно сообщение... И в то время ему НИКТО НЕ ОТВЕТИЛ! Наверное, все посчитали ниже своего достоинства отвечать на такие ламерские вопросы
А по поводу BANKSEL - так вопрос был про Ассемблер, а не про Си. А, насколько я понимаю, Ассемблер никакой "оптимизации" не производит: что программист написал - то и будет. Если лень смотреть в ДШ о распределении SFR по банкам - ставьте BANKSEL перед каждым упоминанием регистра. Но тогда не удивляйтесь размеру получившегося кода
Немного не понял высказывание:
Цитата:
Сообщение от Romantic Посмотреть сообщение
Была бы возможность проверить в "натуре" - вопроса бы не возникло.
В данном случае "натура" - это не спаянная плата с микроконтроллером. Это просто MPLAB, который бесплатно скачивается и устанавливается на компьютере. Затем создаете простейшую программу на ассемблере с директивами BANKSEL и смотрите в View/Disassemly Listing что "сделал" ассемблер с Вашими BANKSEL. Если у Вас нет возможности установить MPLAB и Вы не пишете программы на ассемблере, то тогда к чему Ваш вопрос?
tsb58 вне форума   Ответить с цитированием
Старый 05.11.2014, 20:08   #7
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 35
Сообщений: 2,096
Вес репутации: 3340/101
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от tsb58 Посмотреть сообщение
А ведь прикольно ТС 7 лет назад зарегистрировался и "создал" всего одно сообщение... И в то время ему НИКТО НЕ ОТВЕТИЛ! Наверное, все посчитали ниже своего достоинства отвечать на такие ламерские вопросы
А по поводу BANKSEL - так вопрос был про Ассемблер, а не про Си. А, насколько я понимаю, Ассемблер никакой "оптимизации" не производит: что программист написал - то и будет. Если лень смотреть в ДШ о распределении SFR по банкам - ставьте BANKSEL перед каждым упоминанием регистра. Но тогда не удивляйтесь размеру получившегося кода
Немного не понял высказывание:

В данном случае "натура" - это не спаянная плата с микроконтроллером. Это просто MPLAB, который бесплатно скачивается и устанавливается на компьютере. Затем создаете простейшую программу на ассемблере с директивами BANKSEL и смотрите в View/Disassemly Listing что "сделал" ассемблер с Вашими BANKSEL. Если у Вас нет возможности установить MPLAB и Вы не пишете программы на ассемблере, то тогда к чему Ваш вопрос?
Под рукой нет

Про оптимизацию собственно кода понятно, но ведь BANKSEL - это директива, а как они себя там ведут - один майкрочип ведает
Romantic вне форума   Ответить с цитированием
Старый 07.11.2014, 01:03   #8
Guaho
Senior Member
 
Аватар для Guaho
 
Регистрация: 28.06.2013
Возраст: 48
Сообщений: 771
Вес репутации: 1674/49
Guaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant future
По умолчанию Re: CCP PWM в PIC12F683

Почему он один? И те, кто читал документацию, - тоже.
Guaho вне форума   Ответить с цитированием
Старый 07.11.2014, 17:01   #9
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/117
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от Romantic Посмотреть сообщение
Под рукой нет

Про оптимизацию собственно кода понятно, но ведь BANKSEL - это директива, а как они себя там ведут - один майкрочип ведает
Это макрос.
В свое время делал свои макросы, которые запоминали предыдущее выставленное состояние банка, и в зависимости от требуемого нового - устанавливали/сбрасывали только необходимые биты.
Но это можно делать только внутри процедуры (ибо на момент входа в неё не известно какой банк использовался).

PS чем Си не устраивает?
__________________
- Готово, мастер !!!
- Что готово ???
- Сломал ...
IceS вне форума   Ответить с цитированием
Старый 07.11.2014, 17:53   #10
Илья
Senior Member
 
Регистрация: 26.02.2007
Адрес: SPb
Сообщений: 1,217
Вес репутации: 1775/78
Илья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant future
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от Romantic Посмотреть сообщение
Под рукой нет

Про оптимизацию собственно кода понятно, но ведь BANKSEL - это директива, а как они себя там ведут - один майкрочип ведает
BANKSEL это макрос. В зависимости от адреса регистра вставляет конструкцию типа такой:
bcf STATUS,RP0
bsf STATUS,RP1

вместо 2-х команд можете (оптимизировать) ставить одну ли вообще не ставить, если обращение к регистру в том же банке.

Но BANKSEL предпочтительнее в плане совместимости.
см. http://www.kit-e.ru/assets/files/pdf/2009_11_65.pdf
Илья вне форума   Ответить с цитированием
Старый 07.11.2014, 18:03   #11
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 35
Сообщений: 2,096
Вес репутации: 3340/101
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: CCP PWM в PIC12F683

Цитата:
Сообщение от IceS Посмотреть сообщение
PS чем Си не устраивает?
Вопрос возник чисто риторический, чтобы не оставлять белых пятен в понимании предмета, так сказать.
Romantic вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
моторный блок dsPIC33F Valdis Продукция MICROCHIP 3 23.04.2008 18:01
Подозрительная маркировка PIC12F683 Any_Way Продукция MICROCHIP 6 26.01.2008 22:46
Помогите с PWM на pic16f628 djdiablo Продукция MICROCHIP 22 24.01.2008 15:00
Вопрос по работе модуля PWM в dsPIC30 LWA Продукция MICROCHIP 4 02.07.2007 06:24
модель pic12f683 для Proteusa alex_new_2030 Общетехнические вопросы 2 11.05.2007 07:06


Часовой пояс GMT +3, время: 12:03.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot