04.02.2011, 09:36
|
|
Прописка
Регистрация: 14.10.2006
Адрес: Ростов-на-Дону
Сообщений: 113
Сказал спасибо: 14
Сказали Спасибо 32 раз(а) в 21 сообщении(ях)
|
Re: Осваиваем PIC24
Dtolok, SOSC генератор 32 кГц включается независимо от таймера 1 (например, для RTCC или как вторичный тактовый). Если при этом таймер 1 сконфигурирован на работу с внешним источником такта, он будет работать от этих же 32 кГц, если от внутреннего - в зависимости от включённого генератора и делителей.
Цитата:
|
The secondary oscillator is enabled by setting the SOSCEN control bit in the OSCCON
register.
|
Последний раз редактировалось varostov; 04.02.2011 в 09:38.
|
|
|
Сказали "Спасибо" varostov
|
|
|
05.02.2011, 10:26
|
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Осваиваем PIC24
Easyrider83 ,не подскажешь - mikrobasic ругается когда вызываю в одном модуле функцию которая в другом модуле, тоже с переменными... пишет не задекларирована -может я где их не прописал?
|
|
|
|
05.02.2011, 12:02
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Осваиваем PIC24
Сообщение от Dtolok
|
Easyrider83 ,не подскажешь - mikrobasic ругается когда вызываю в одном модуле функцию которая в другом модуле, тоже с переменными... пишет не задекларирована -может я где их не прописал?
|
Да. Функции и процедуры, к которым будете обращаться не только из самого модуля (не локальные) надо декларировать дважды. До точки implements и после. Например, так:
Цитата:
|
sub function read_adc (dim _channel as byte) as word
implements
sub function read_adc (dim _channel as byte) as word
'текст функции
end sub
|
|
|
|
|
05.02.2011, 12:06
|
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Осваиваем PIC24
у меня так и записано... но всеравно выдает ошибку
у меня в одном модуле указана переменная до implement и функция так же...а в другом модуле я ее вызываю... перенести в основную программу не получается...include стоит раньше чем обьявление переменных..
dim kan,pause as word 'step_value -êîëëè÷åñòâî øàãîâ îò êðàÿ äî êðàÿ
txt as string[6]
txt3 as string[3]
flag_step as bit 'ôëàã ðàçðåøåíèÿ ðàáîòû ìîòîðà - âûñòàâëÿåòñÿ ïðåðûâàíèåì 2 ïî êíîïêàì
dirr as byte
sub procedure KNMot( dim flag as byte,dim stepp as word)
sub procedure Test_Motor ()
sub function ON_Motor( dim flag as byte) as word
implements
вызов
if Rotation[i] = tempDat then
if dirr = 0 then
dirr = 1
else
dirr = 0
end if
ON_Motor(dirr)
end if
Последний раз редактировалось Dtolok; 05.02.2011 в 12:10.
|
|
|
|
05.02.2011, 12:15
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Осваиваем PIC24
Dtolok, проверил. Действительно, переменные, процедуры и функции, декларированные в одном модуле не существуют в другом. Это либо глюк компилятора, либо сделано так, чтобы люди работали только с одним модулем.
|
|
|
|
05.02.2011, 16:57
|
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Осваиваем PIC24
ну не велика проблема ... модулей то у меня много просто вызываемые функции кинул в один модуль и все ок..
|
|
|
|
07.02.2011, 02:23
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Осваиваем PIC24
Возникла у меня проблемка... (ассемблер!)
PIC24FJ16GA002. Задача простейшая - дергать всеми ногами порта В:
Цитата:
|
L__main_loop:
COM LATB
GOTO L__main_loop
|
При частоте работы процессора 16МГц, ноги дергаются только на 1.333 МГц
Если инструкция выполняется за один такт, куда делись остальные такты?
Такая же история с PIC18.
Цитата:
|
loop1:
btg portb,5
goto loop1
|
Теперь частота 500 КГц. При том, что частота процессора 16МГц. Я чего-то упустил при изучении МК?
Это, конечно, симмуляция протеуса. Но все же... Временные задержки delay_ms и delay_us работают корректно, если кто заподозрит неверный конфиг.
В железе проверить не долго. Но хочется прояснить ситуацию.
Проблема началась с того, что на одной ноге МК у меня встретился аппаратный SPI и выход генератора таймера1. Была попытка применить программный SPI, но с грохотом провалилась. Меня устроил бы 1МГц тактовых импульсов, но получилось только 60КГц. Это полная ерунда, даже учитывая, что пакет будет весить несколько байт и передаваться редко.
Есть у меня ощущение, что протеус не умеет симмулировать регистр slrcon. И slew rate всегда включено.
Последний раз редактировалось Easyrider83; 07.02.2011 в 02:37.
|
|
|
|
07.02.2011, 02:38
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: Осваиваем PIC24
Сообщение от Easyrider83
|
Возникла у меня проблемка... (ассемблер!)
PIC24FJ16GA002. Задача простейшая - дергать всеми ногами порта В:
При частоте работы процессора 16МГц, ноги дергаются только на 1.333 МГц
Если инструкция выполняется за один такт, куда делись остальные такты?
|
2 такта генератора = 1 машинный цикл (1 инструкция).
Частота генератора 16/2 = 8 миллионов машинных циклов в секунду.
Инструкции переходов(BRA, GOTO) выполняются за 2 машинных цикла.
8/3/2 = 1,33 Мгц. Все правильно.
Почему не хотите использовать аппаратный SPI?
Последний раз редактировалось realid; 07.02.2011 в 02:44.
|
|
|
|
07.02.2011, 02:57
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Осваиваем PIC24
Сообщение от realid
|
Почему не хотите использовать аппаратный SPI?
|
Спасибо за разъяснения. Я не знал, какие инструкции выполняются за 2 такта.
Аппаратный очень хочу использовать, но надо раз в секунду пробуждать камень из спячки. Для этого надо использовать таймер1 с внешним резонатором на 32768. Мне нужно максимально энергию экономить. Так вот сигнал SDO висит на одной ноге с T1OSO. Какие есть варианты? Есть у меня RTC PCF8563, но он работает по I2c, который будет мешать использовать SPI. Опять же ни туда, ни сюда. Камень PIC18F13K50.
|
|
|
|
07.02.2011, 08:56
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: Осваиваем PIC24
Сообщение от Easyrider83
|
Спасибо за разъяснения. Я не знал, какие инструкции выполняются за 2 такта.
Аппаратный очень хочу использовать, но надо раз в секунду пробуждать камень из спячки. Для этого надо использовать таймер1 с внешним резонатором на 32768. Мне нужно максимально энергию экономить. Так вот сигнал SDO висит на одной ноге с T1OSO. Какие есть варианты? Есть у меня RTC PCF8563, но он работает по I2c, который будет мешать использовать SPI. Опять же ни туда, ни сюда. Камень PIC18F13K50.
|
Я думал PIC24FJ16GA002, а у него SPI не привязан к конкретным выводам. У него есть Peripheral Pin Select и можно SPI назначить на любые RPx выводы.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:14.
|
|