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

Вернуться   Форум Микро-Чип > Вопросы начинающих

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

Ответ
 
Опции темы Опции просмотра
Старый 01.11.2017, 11:55   #26
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от Марк Посмотреть сообщение
Зеленым исправил. Учтите, что в АСМ вставке задействованы три РОНа. Желательно эту вставку не располагать внутри функции, чтобы не разрушить соглашение о передаче параметров.
Код:
mov #OSCCON, w2
Не собирается. Ошибка. Без "#" собирается.
Код:
mov #0x01, w0
mov.b W0, [w2]
А напрямую #0x01 в w2 нельзя?
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 12:01   #27
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 59
Сообщений: 2,462
Вес репутации: 3412/102
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

решетка в АСМ строке означает, что за ней стоит ЛИТЕРАЛ (то есть константа).
решетка перед именем регистра означает, что это значение ИМЕНИ РЕГИСТРА, а не его содержимого. А значение имени - это адрес регистра.
Нам не надо писАть в W2, нам надо писАть ПО АДРЕСУ расположенному в W2.
Записать одной строкой литерал по указателю нельзя. Скобки обрамляющие РОН означают косвенную адресацию. В РОНе находится указатель.
Марк вне форума   Ответить с цитированием
Старый 01.11.2017, 12:05   #28
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 59
Сообщений: 2,462
Вес репутации: 3412/102
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от NSS Посмотреть сообщение
Ошибка. Без "#" собирается.
Не надо искать под фонарем, надо искать там, где потеряли. Имя регистра в АСМ вставке может иметь отличия от имени в Си коде. Например подчеркивание перед именем. Или пробел между решеткой и именем.

Последний раз редактировалось Марк; 01.11.2017 в 12:10.
Марк вне форума   Ответить с цитированием
Старый 01.11.2017, 12:09   #29
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Спасибо, понятно. Но от этого не легче - с решёткой выдаёт ошибку.
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 12:14   #30
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Вот такую ошибку получаю:

Цитата:
55 304 Instruction not recognized or operand(s) out of range: mov #OSCCON, w2 p24_fat32_test.c
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 12:16   #31
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Согласен. Буду пробовать искать. Хотя, пёс знает, где найти мануал по ASM от MkroC.
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 12:22   #32
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 59
Сообщений: 2,462
Вес репутации: 3412/102
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Я не знаю как в Вашем компиляторе в АСМ вставке передать адрес регистра по имени. Попробуйте &OSCCON или _OSCCON. Можете в крайнем случае просто вписать физический адрес (в комменте укажите что это за число).
Марк вне форума   Ответить с цитированием
Старый 01.11.2017, 12:29   #33
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,140
Вес репутации: 4017/87
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

есть programmers reference manual по семейству
http://ww1.microchip.com/downloads/e...Doc/70157F.pdf
его все равно придется скопировать и держать под рукой, если понадобится детальная отладка.
besogon вне форума   Ответить с цитированием
Старый 01.11.2017, 12:32   #34
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Да, спасибо, скачал.
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 12:32   #35
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от Марк Посмотреть сообщение
Я не знаю как в Вашем компиляторе в АСМ вставке передать адрес регистра по имени. Попробуйте &OSCCON или _OSCCON. Можете в крайнем случае просто вписать физический адрес (в комменте укажите что это за число).
Спасибо, попробую.
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 14:10   #36
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от Марк Посмотреть сообщение
Я не знаю как в Вашем компиляторе в АСМ вставке передать адрес регистра по имени. Попробуйте &OSCCON или _OSCCON. Можете в крайнем случае просто вписать физический адрес (в комменте укажите что это за число).
Без ошибок собралась вот такая конструкция:
Код:
asm { mov #0x78, w0              // -----
      mov #0x9A, w1              //     |
      mov #hi_addr(OSCCON), w2   //     > OSCCONH (high byte) Unlock Sequence
      mov.b w0, [w2]             //     |
      mov.b w1, [w2]             // -----
      mov #0x03, w0              //
      mov.b W0, [w2]             // Set New Oscillator Selection
                                 //
      mov #0x46, w0              // -----
      mov #0x57, w1              //     |
      mov #lo_addr(OSCCON), w2   //     > OSCCONL (low byte) Unlock Sequence
      mov.b w0, [w2]             //     |
      mov.b w1, [w2]             // -----
      mov #0x01, w0              //
      mov.b W0, [w2]};           // Enable Clock Switch
Случайно набрёл на пример кода на ASM в MikroC. Код был о другом, но там тоже использовались указатели на регистры. Видимо, lo_addr и hi_addr - предопределены в этом асме. Правда в ассемблерном листинге hi_addr представлен как higher_addr. Почему так - хрен знает. Попробую, вдруг заведётся.
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 14:40   #37
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,803
Вес репутации: 2039/81
petrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond repute
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от NSS Посмотреть сообщение
Без ошибок собралась вот такая конструкция:Случайно набрёл на пример кода на ASM в MikroC. Код был о другом, но там тоже использовались указатели на регистры. Видимо, lo_addr и hi_addr - предопределены в этом асме. Правда в ассемблерном листинге hi_addr представлен как higher_addr. Почему так - хрен знает. Попробую, вдруг заведётся.
Собраться-то собралась, но не заведется. Посмотрите, что будет в W2 после инструкции
Код:
mov #hi_addr(OSCCON), w2
Пробуйте так:
Код:
void __builtin_write_OSCCONL(unsigned short value){  
    asm{
        mov #0x46, w0
        mov #0x57, w1
        mov #lo_addr(OSCCON), w2
        mov.b w0, [w2]
        mov.b w1, [w2]
        mov FARG___builtin_write_OSCCONL_value, w0
        mov.b W0, [w2]
    };
}

void __builtin_write_OSCCONH(unsigned short value){
    asm{
        mov #0x78, w0
        mov #0x9A, w1
        mov #lo_addr(OSCCON+1), w2
        mov.b w0, [w2]
        mov.b w1, [w2]
        mov FARG___builtin_write_OSCCONH_value, w0
        mov.b w0, [w2]
    };
}
..........

__builtin_write_OSCCONH(0x03);
__builtin_write_OSCCONL(0x01);
......
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 01.11.2017, 16:29   #38
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от petrd Посмотреть сообщение
Собраться-то собралась, но не заведется. Посмотрите, что будет в W2 после инструкции
А почему не заведётся, что будет в w2 и как это посмотреть? По идее там должен быть адрес старшего байта слова OSCCON...
Цитата:
Сообщение от petrd Посмотреть сообщение
Пробуйте так:
Спасибо, собралось. Если не сложно, поясните суть конструкции
Код:
FARG___builtin_write_OSCCONL_value
Что такое FARG и как это всё работает. Я, конечно, сейчас залезу в сеть - сам поищу, но от человека, знакомого с сутью проблемы понятнее будет. На первый взгляд эта конструкция - что то типа отсылки к аргументу той же функции, в которой эта конструкция расположена? А зачем так сложно, почему мой вариант не прокатит?
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 17:49   #39
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 59
Сообщений: 2,462
Вес репутации: 3412/102
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от NSS Посмотреть сообщение
А почему не заведётся, что будет в w2 и как это посмотреть? По идее там должен быть адрес старшего байта слова OSCCON...
Посмотреть очень просто. Включаете симулятор, а обсуждаемый код либо переносите в самое начало, либо делаете переход на него. По шагам проходите исполнение и смотрите что в регистрах.
Марк вне форума   Ответить с цитированием
Старый 01.11.2017, 17:54   #40
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Понятно, спасибо. Про SIM я что то не подумал - давно им не пользовался, всё как то больше дебаггером. А что с FARG - что это за зверь? В сети что то ничего не нашёл...
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 18:38   #41
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Прогнал в симуляторе - работает правильно, спасибо. Сейчас попробую свой код прогнать - посмотрю в чём косяк. А что такое FARG - так и не разобрался. Понял суть этой строки в коде, но как это работает - не понял.
__________________
"Ignoramus et ignorabimus..."
NSS вне форума   Ответить с цитированием
Старый 01.11.2017, 20:28   #42
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,803
Вес репутации: 2039/81
petrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond repute
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от NSS Посмотреть сообщение
Прогнал в симуляторе - работает правильно, спасибо. Сейчас попробую свой код прогнать - посмотрю в чём косяк. А что такое FARG - так и не разобрался. Понял суть этой строки в коде, но как это работает - не понял.
FARG - логически догадываюсь что это просто аббревиатура, FunctionARGument.
В хелпе и мануале раздел Accessing variables сказано:
Код:
- Accessing local variable: <routine_name>_<variable_name>.
- Accessing routine parameter: FARG_<routine_name>_<variable_name>.
Только про lo_addr, hi_addr, higher_addr неясно. Догадываюсь по аналогии еще есть highest_addr. Но нигде про эти макросы не говорится, недокументированные они получаются.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 01.11.2017, 21:55   #43
NSS
Senior Member
 
Аватар для NSS
 
Регистрация: 25.02.2007
Возраст: 49
Сообщений: 986
Вес репутации: 414/59
NSS is just really niceNSS is just really niceNSS is just really niceNSS is just really niceNSS is just really nice
Thumbs down Re: Как настроить PIC24H на максимальную частоту?

Цитата:
Сообщение от petrd Посмотреть сообщение
FARG - логически догадываюсь что это просто аббревиатура, FunctionARGument...
Ну, собссно, я так и думал. Да там по другому думать то и не получилось бы - всё было очевидно. Просто сама суть этого мистического FARG, принцип действия, так сказать, был загадочен.
Цитата:
Сообщение от petrd Посмотреть сообщение
...Только про lo_addr, hi_addr, higher_addr неясно. Догадываюсь по аналогии еще есть highest_addr. Но нигде про эти макросы не говорится, недокументированные они получаются.
Да, я тоже совершенно случайно наткнулся на них в хелпе (см. скрин). Ну и про "префиксы" lo, high, higher, highest тоже в хелпе есть. Правда там про другое. Только вот почему у меня в ассемблерном листинге этот префикс отличается от написанного в коде - неясно. Но, компайлеру виднее, вероятно. Попробую завтра собрать макетку и прошить. Вот только как определить - правильно ли работает гена... Разве что ногой какой нибудь подёргать через delay_ms() и посмотреть ослом - соответствует ли... Как то так.
Миниатюры
screen#1.jpg   screen#2.jpg  
__________________
"Ignoramus et ignorabimus..."

Последний раз редактировалось NSS; 01.11.2017 в 22:00.
NSS вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель на указатель?..Или как вообще можно управлять указателями из функции? maagalex Общетехнические вопросы 35 03.05.2011 13:03
Pic 18 На Максимальной Частоте или как заставить 4550 работать на 48МГц Pasipaka Продукция MICROCHIP 7 19.03.2011 22:40
Вопросы по проекту на pic16f84a asm. louiscifer Вопросы начинающих 14 13.04.2009 06:19


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


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