Перейти к содержанию

Настройка частоты PIC16F18313


Zombie47

Рекомендуемые сообщения

Народ вопрос по настройке частоты таймера. Вот простой код, меняю состояние ноги в прерывании, и смотрю анализатором частоту.

void init() { 
TRISA = 0b00110000;//RA5,4,3,2,1,0
WPUA4_bit=0;

INTCON = 0b11000000; //page 89 enable all interrupts 

ANSELA = 0b00000000;  //
LATA = 0b00000000;
}

void interrupt() { 
        if(TMR0IF_bit == 1){ 
                 TMR0IF_bit=0;
                 LATA0_bit=~LATA0_bit; //main code for analyzator
                }
}

void TMR0_Initialize(void)// PIC 16F18313 has 1Mhz ferq ref. But can freq 32mhz (edit project) page 52 , page 71, page 82
{
    OSCCON1 = 0b0000000;//page 78 (0 000 0000) 0, 000 - NOSC (HFINTOSC with 2x PLL 32MHZ), 0000 - NDIV clock divider 1
    OSCFRQ = 0b00000001;//page 82 (---- 0001) 2MHZ
    T0CON0 = 0b10000000; //page 261 (1 - 0 0 0000) Timer enable, - , read only , 8 bit, postscaler 1:1
    T0CON1 = 0b01110000; //page 262 (011 0 0000) 011 = HFINTOSC, 1 = The input to the TMR0 counter is not synchronized to system clocks, 0000 - prescaler 1:1
    TMR0H = 255;// it is not just counter, in 8 bit mode it is register period // to what number to count
    TMR0L = 0x00;
    TMR0IF_bit = 0;// Clear Interrupt flag before enabling the interrupt
    TMR0IE_bit = 1; // Enabling TMR0 interrupt.

    // Set Default Interrupt Handler
   // TMR0_SetInterruptHandler(TMR0_DefaultInterruptHandler);
 }

void main()
{
    init ();
    TMR0_Initialize ();
    TRISA0_bit = 0;   
    ANSA0_bit = 0;

    while (1)
    {
       
    }
}

Например вот регистр по настройке частоты мк: 
OSCCON1 = 0b0000000;//page 78 (0 000 0000) 0, 000 - NOSC (HFINTOSC with 2x PLL 32MHZ), 0000 - NDIV clock divider 1
NOSC тут равен 000 то-есть режим HFINTOSC with 2x PLL
OSCFRQ = 0b00000001;//page 82 (HFFRQ = 0001)
 это частота 2mhz при NOSC = 110: 
image.png.6aa89ab82af4de9088830bc91b805a44.png
Но у меня NOSC = 000 и должно быть reserved.
Таймер 8-ми битный, считаем с 0 до 255, прескайлер 1:1.
Итого 2 000 000hz делим на 256 и получаем ~7812 прерываний в секунду. (hz) 
Смотрим анализатор:

  image.png.5ed76fd6b90d996efae0a418f04cf8d5.png

У меня в коде при заходе в прерывание меняется состояние ноги. Так что просто смотрим на параметр width- = 7744hz. Ну типо ок пусть будет так. Частота 2mhz.

Меняю:
OSCFRQ = 0b00000110;//page 82 (---- 0110) 16MHZ if Nominal Freq. (MHz)(NOSC = 110)
NOSC не трогаю остается 000
Какая будет частота? 16 или 32MHz?
Вроде должна быть 32Mhz, но по факту 16Mhz:
16 000 000 / 256 = 62500
image.png.42e12d1e17b488a4d8dbfe4a34ede91f.png

Ну и если прописать  OSCFRQ = 0b00000111; 
то частота будет 32MHz.
Почему работает по левому столбцу?

И еще вопрос:
image.png.090103005e1264e115c5e933bf4dbef9.png

Вот тут в даташите написано  ставим (HFFRQ = 0110) это будет 16Mhz и активирует 2x PLL и частота по идее должна быть в два раза выше, но вот почему то у меня этого не происходит.
А ниже написано для задания значения регистра смотрите register 6-6 , но такого в даташите нет и наверно тут опечатка имеется ввиду 7-6 то что скидывал выше.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...