Например TDA7294

Форум РадиоКот • Просмотр темы - PIC24FJ64GA002 настройка осциллятора
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб июл 05, 2025 14:14:38

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Вс фев 10, 2019 21:19:27 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт ноя 08, 2011 18:36:47
Сообщений: 193
Откуда: Днепр
Рейтинг сообщения: 0
Добрый день форумчане! Изучаю новый контроллер, столкнулся с проблемой настройки тактовой частоты. Первая задача - мигать светодиодом. Светодиод мигает, но вместо периода в 1 сек я получил почему то 2 сек. Вот мой код:
Код:
#pragma config POSCMOD = NONE    // Primary Oscillator Select->Primary oscillator disabled
#pragma config I2C1SEL = PRI    // I2C1 Pin Location Select->Use default SCL1/SDA1 pins
#pragma config IOL1WAY = ON    // IOLOCK Protection->Once IOLOCK is set, cannot be changed
#pragma config OSCIOFNC = ON    // Primary Oscillator Output Function->OSC2/CLKO/RC15 functions as port I/O (RC15)
#pragma config FCKSM = CSECMD    // Clock Switching and Monitor->Clock switching is enabled, Fail-Safe Clock Monitor is disabled
#pragma config FNOSC = FRC    // Oscillator Select->FRC
#pragma config SOSCSEL = SOSC    // Sec Oscillator Select->Default Secondary Oscillator (SOSC)
#pragma config WUTSEL = LEG    // Wake-up timer Select->Legacy Wake-up Timer
#pragma config IESO = ON    // Internal External Switch Over Mode->IESO mode (Two-Speed Start-up) enabled

// CONFIG1
#pragma config WDTPS = PS32768    // Watchdog Timer Postscaler->1:32768
#pragma config FWPSA = PR128    // WDT Prescaler->Prescaler ratio of 1:128
#pragma config WINDIS = ON    // Watchdog Timer Window->Standard Watchdog Timer enabled,(Windowed-mode is disabled)
#pragma config FWDTEN = OFF    // Watchdog Timer Enable->Watchdog Timer is disabled
#pragma config ICS = PGx1    // Comm Channel Select->Emulator EMUC1/EMUD1 pins are shared with PGC1/PGD1
#pragma config BKBUG = OFF    // Background Debug->Device resets into Operational mode
#pragma config GWRP = OFF    // General Code Segment Write Protect->Writes to program memory are allowed
#pragma config GCP = OFF    // General Code Segment Code Protect->Code protection is disabled
#pragma config JTAGEN = OFF    // JTAG Port Enable->JTAG port is disabled

#include <xc.h>
#define FCY 32000000UL
#include <libpic30.h>

int main()
{
      OSCCON=0b0001000100000000;            
      CLKDIV=0b0000000000000000;
      OSCTUN=0;
      
      AD1PCFG = 0xffff;      

      TRISA =    0;      
      TRISB =    0;
while(1)
   {
        _LATA0 = !_LATA0;       
        __delay_ms(1000);
   }
}

Кто компетентен в этом вопросе, может видите ошибку невооруженным глазом? Настраивал по даташиту и статьям с простора интернета.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Вс фев 10, 2019 21:43:14 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 1
Медали: 5
Получил миской по аватаре (5)
Не ленитесь. Откройте pdf на PIC24FJ64GA002 и сделайте так, как рекомендует разработчик контроллера... :)
Изображение
/Если не требуется сохранения значений в W1 - W3, команды push и pop можно пропустить/

Добавлено after 15 minutes 30 seconds:
P.S.
Не забудьте в Config-е разрешить программные изменения в OSCILLATOR CONFIGURATION.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Вс фев 10, 2019 21:49:03 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт ноя 08, 2011 18:36:47
Сообщений: 193
Откуда: Днепр
Рейтинг сообщения: 0
Спасибо за отклик, но использовать переключение осцилляторов - не моя основная задача. Моя проблема в том, что я настраиваю тактирование от внутреннего RC генератора на 8 МГц, подключаю PLL x 4 - по идее контроллер должен работать на 32 МГц. Окей, прописываю определение тактовой частоты для макросов задержки #define FCY 32000000UL. Устанавливаю задержку в главном цикле __delay_ms(1000), но по факту получаю задержку в 2 сек!... Эмпирическим путем установил, что если установить FCY 16000000UL, все работает корректно, но не соответствует установленой мною конфигурации контроллера. Вот и хотел разобраться, где натупил. Неужели определение частоты FCY требует Fosc/2??? На других контроллерах такого не бывало :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Вс фев 10, 2019 21:55:10 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Всё правильно. При тактовой 32 МГц, контроллер работает максимум на 16 MIPS /читайте документацию/.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Пн фев 11, 2019 14:54:37 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23870
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
На других контроллерах такого не бывало :dont_know:

Что не бывало? Какая разница какая частота у осциллятора? Важно какая системная частота. Про 16 МИПС написано даже в шапке даташита.
Желаете более высокую производительность - берите либо PIC24H - 40МИПС, либо PIC24ЕР - 70 МИПС.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Сб мар 02, 2019 13:26:35 
Родился

Зарегистрирован: Сб мар 28, 2015 23:06:05
Сообщений: 12
Рейтинг сообщения: 0
Светодиод мигает, но вместо периода в 1 сек я получил почему то 2 сек. Вот мой код:
Код:
while(1)
   {
        _LATA0 = !_LATA0;       
        __delay_ms(1000);
   }
}

Кто компетентен в этом вопросе, может видите ошибку невооруженным глазом? Настраивал по даташиту и статьям с простора интернета.

Павел, хотел бы уточнить - период зажигания - время между началом (передний фронт) зажигания светодиода? Если да, то все как раз как вы и заказали по программе:
1.зажигаем светодиод (инвертируем LATA)
2.ждем секунду (+ возврат в начало)
3.гасим светодиод (инвертируем LATA)
4.ждем секунду (+ возврат в начало)
т.е. период сигнала как раз 2 секунды. Или под периодом понималось именно время горение светодиода?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Пн мар 04, 2019 14:14:04 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вт ноя 08, 2011 18:36:47
Сообщений: 193
Откуда: Днепр
Рейтинг сообщения: 1
Всем спасибо, разобрался, по незнанию попутал тактовую частоту с частотой выполнения кода


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Вс мар 03, 2024 16:57:06 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 13, 2023 01:03:04
Сообщений: 21
Рейтинг сообщения: 0
Не забудьте в Config-е разрешить программные изменения в OSCILLATOR CONFIGURATION.

подскажите, пожалуйста, где это задается


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC24FJ64GA002 настройка осциллятора
СообщениеДобавлено: Ср июл 31, 2024 15:15:04 
Родился

Зарегистрирован: Ср июл 31, 2024 10:42:31
Сообщений: 4
Рейтинг сообщения: 0
Похоже, у вас могут быть проблемы с настройкой частоты тактового сигнала и функции задержки. Согласно вашему коду, вы используете внутренний быстрый генератор (FRC) в качестве источника системного тактового сигнала. Рассмотрим несколько шагов для проверки и корректировки параметров, чтобы ваш светодиод мигал так, как ожидалось.

Прежде всего, я предлагаю внести следующие изменения и проверки в ваш код:

Определение FCY:

Убедитесь, что определение FCY верно и соответствует вашей фактической тактовой частоте.
Настройка OSCCON и CLKDIV:

Проверьте, правильно ли настроены регистры OSCCON и CLKDIV, так как они напрямую влияют на системную тактовую частоту.
Использование правильной функции задержки:

Убедитесь, что функция задержки __delay_ms() используется с правильными параметрами, зависящими от определения FCY.
Пример измененного кодаhttp://www.chipic.ru
#pragma config POSCMOD = NONE // Primary Oscillator Mode Select bits -> Primary oscillator disabled
#pragma config I2C1SEL = PRI // I2C1 Pin Location Select bit -> Use default SCL1/SDA1 pins
#pragma config IOL1WAY = ON // IOLOCK Protection -> Once IOLOCK is set, cannot be changed
#pragma config OSCIOFNC = ON // OSCO Pin Configuration -> OSCO/CLKO/RC15 functions as port I/O (RC15)
#pragma config FCKSM = CSECMD // Clock Switching and Monitor -> Clock switching is enabled, Fail-Safe Clock Monitor is disabled
#pragma config FNOSC = FRC // Oscillator Select -> Fast RC Oscillator (FRC)
#pragma config SOSCSEL = SOSC // Secondary Oscillator Select -> Default Secondary Oscillator (SOSC)
#pragma config WUTSEL = LEG // Wake-up Timer Select -> Legacy Wake-up Timer
#pragma config IESO = ON // Internal External Switchover -> Enabled

// CONFIG1
#pragma config WDTPS = PS32768 // Watchdog Timer Postscaler -> 1:32768
#pragma config FWPSA = PR128 // WDT Prescaler -> Prescaler ratio of 1:128
#pragma config WINDIS = ON // Watchdog Timer Window -> Standard WDT enabled, (Window mode is disabled)
#pragma config FWDTEN = OFF // Watchdog Timer Enable -> WDT disabled
#pragma config ICS = PGx1 // ICD Communication Channel Select -> Communicate on PGEC1 and PGED1
#pragma config BKBUG = OFF // Background Debugger Enable -> Device resets into Operational mode
#pragma config GWRP = OFF // General Segment Write Protect -> Writes to program memory are allowed
#pragma config GCP = OFF // General Segment Code Protect -> Code protection is disabled
#pragma config JTAGEN = OFF // JTAG Port Enable -> JTAG port is disabled

#include <xc.h>

#define FCY 8000000UL // Предполагается, что частота FRC равна 8 МГц
#include <libpic30.h>

int main ()
{
// Настройка OSCCON для FRC
OSCCON = 0b0001000100000000;
CLKDIV = 0b0000000000000000;
OSCTUN = 0;

AD1PCFG = 0xffff;

TRISA = 0;
TRISB = 0;

while (1)
{
_LATA0 = !_LATA0;
__delay_ms(1000);
}
}
Важные моменты проверки:
Частота FCY: Убедитесь, что FCY соответствует вашей фактической частоте циклов команд. Если вы используете внутренний быстрый генератор (FRC), его стандартная частота обычно составляет 8 МГц, что означает, что FCY должна быть установлена на 8 МГц.
Настройка OSCCON: Убедитесь, что настройки OSCCON соответствуют вашей аппаратной конфигурации. Если вы используете внутренний быстрый генератор, убедитесь, что соответствующие биты настроены правильно.
Функция задержки: Функция __delay_ms() зависит от правильного определения FCY. Если FCY неверна, время задержки также будет неточным.
Пожалуйста, убедитесь, что эти настройки проверены на вашем оборудовании, и при необходимости обратитесь к техническому описанию вашего микроконтроллера для получения подробной информации о конфигурации. Эти шаги должны помочь вам решить проблему с неточным временем мигания светодиода.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y