Некоректная частота

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 1
Зарегистрирован: Пн апр 27, 2020 14:45:00

Сообщение Jaidat »

Здравствуйте, подскажите пожалуйста, почему предпологаемая мной частота не совпадает с симулируемой в Proteus'е?

Код: Выделить всё

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define PulseLow 100
#define Period 200
#define PULSE PORTB 
 
volatile int i=0;
int TimerStartWith = 65510;//Макс значение таймера 65535.
 
    ISR(TIMER1_OVF_vect)
    {
        TCNT1 = TimerStartWith;
        i++;
        if(i==PulseLow){
            PULSE |=(1<<5);
        }
        if(i==Period){
            i=0;
            PULSE &=~(1<<5);
        }
    }
 
int main(void)
{
    DDRB = 0b00100000;
    PULSE = 0b00000000;
    
    TIMSK1 |= (1<<0);
    TCCR1B = 0b00000011; /*16-ти битний таймер, 64 from rescaling.
                         F=16МГц. f=F/64=0.25МГц T=1/F=0.004мс*/
    TCNT1 = TimerStartWith;
    sei();
        
    while(1){
    }
}
Итогово должна получиться частота 50Гц, а период Т=0.02 с, а протеус показивает около Т=0.332 с, в чьом проблема?
Вложения
Screenshot_3.png
(91.11 КБ) 123 скачивания
Screenshot_2.png
(88.89 КБ) 131 скачивание
Screenshot_1.png
(31.17 КБ) 175 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

У тебя проект настроен на 16МГц, а протеус на 1МГц...

Добавлено after 2 minutes 1 second:
тебе надо отключить делитель на 8 , выбрать правильно источник тактирования и указать частоту (всё на этой вкладке)
СпойлерИзображение
или переписать проект под 1МГц...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Ivanoff-iv правильно всё сказал. Добавлю что аналогично надо не забывать про настройки будет и в железе. Там вообще-то тоже по умолчанию 1 МГц Fclk заводится с такими же настройками. Фьюзы менять надо.
Ответить

Вернуться в «AVR»