Easyelectronics.ru

Электроника для всех
Текущее время: 07 июл 2022, 04:17

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Delay ?!
СообщениеДобавлено: 18 авг 2015, 16:06 
Только пришел

Зарегистрирован: 27 апр 2015, 17:16
Сообщения: 6
Бодрый день!
Есть вопрос/проблема с программированием задержек.
Дано:
МК - PIC18F452, 20МГц,
компилятор - XC8 1.33
IDE - MPLAB x v2.15
кусочек кода:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <i2c.h>

// PIC18F452 Configuration Bit Settings
// __CONFIG
// CONFIG1H
#pragma config OSC = HS         // Oscillator Selection bits (HS oscillator)
#pragma config OSCS = OFF       // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source))

// CONFIG2L
#pragma config PWRT = ON        // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOR = OFF        // Brown-out Reset Enable bit (Brown-out Reset disabled)
#pragma config BORV = 20        // Brown-out Reset Voltage bits (VBOR set to 2.0V)

// ...
// Там ещё немного конфигов, почти всё выключено
// ...

#define _XTAL_FREQ 20000000     // Crystal clock speed

void main(void) {
    TRISA = 0b00001000;
    TRISB = 0b00000000;
    TRISC = 0b00011000;
    TRISD = 0b00000000;
    TRISE = 0b00000000;
    ADON = 0;   // АЦП выключен
    ADCON1bits.PCFG0 = 0;
    ADCON1bits.PCFG1 = 1;
    ADCON1bits.PCFG2 = 1;
    ADCON1bits.PCFG3 = 1;
   
   while (1) {
   // Просто задержка (не важно на сколько) [в идеале около 2.5с]
   for (int i = 0; i < 250; i++) {
   __delay_ms(10);
    }
   
   // Интересующий кусок кода
       PORTBbits.RB4 = 1;
__delay_ms(10);               // <=== Самая интересующая строка!!!
    PORTBbits.RB4 = 0;
   }
}
//end


А вот теперь проблема: высокий уровень должен быть на RB4 10мс, но на деле ~7,4мс! (Скрин осциллограммы прилагается) Как так-то??!! Даже использование задержек типа Delay10KTCYx(50) выдаёт тот же результат.
Какие грабли я топчу? Как поправить такую беду? Заранее спасибо!


Вложения:
7.5.PNG
7.5.PNG [ 21.53 Кб | Просмотров: 3998 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 18 авг 2015, 16:35 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
А что показуют графы ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 18 авг 2015, 18:15 
Только пришел

Зарегистрирован: 27 апр 2015, 17:16
Сообщения: 6
dosikus_2 писал(а):
А что показуют графы ?

Деление сетки 1 мс, длительность импульса получается около 7.5 мс, а должно 10. ((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 18 авг 2015, 18:28 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Я о графах - Digital analysis. Или пользоваться инструментом не умеем?

Изображение

http://kazus.ru/forums/showpost.php?p=1 ... stcount=20
http://kazus.ru/forums/showpost.php?p=1 ... stcount=22


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 18 авг 2015, 20:01 
Только пришел

Зарегистрирован: 27 апр 2015, 17:16
Сообщения: 6
dosikus_2, спасибо, узнал про новый для меня инструмент. )
Но, к сожалению, он показал то же самое 7.5 мс. (


Вложения:
7.55.PNG
7.55.PNG [ 1.09 Кб | Просмотров: 3943 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 18 авг 2015, 20:19 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Ну дык движемся далее ...
Что выставлено в свойствах модели для тактовой ?
И лучше проект Протеус'а вместе с проектом MPLAB в архив и сюда...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 19 авг 2015, 11:27 
Только пришел

Зарегистрирован: 27 апр 2015, 17:16
Сообщения: 6
Снова спасибо за попытки помочь!
Во вложении архив с проектом протеуса и мплпба. В "железе", кстати, то же самое, логическим анализатором ловил импульс, опять ноль семьдесят пять...
Надеюсь, что проблема в чём-то простом и тривиальном (ну может галку где поставил не ту или снял, наоборот).


Вложения:
delay.zip [195.24 Кб]
Скачиваний: 246
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 19 авг 2015, 13:40 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Ничего не меняя :
MPLABX 3.00 XC8 1.34
Оптимизация PRO,Free,Standart...

Изображение
Изображение
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 19 авг 2015, 14:00 
Только пришел

Зарегистрирован: 27 апр 2015, 17:16
Сообщения: 6
А переставлю ка я IDE с компилятором.....
Чудеса блин...
Спасибо!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 19 авг 2015, 14:40 
Только пришел

Зарегистрирован: 27 апр 2015, 17:16
Сообщения: 6
dosikus_2, спасибо!!
Спаситель моих нервов, переставил компилятор и всё стало нормально. Я уж и про конвейер думал, может там сменилось чего в 452 пике, может он за 3 такта выполнял чего, может.... В общем компилятор оказался с глюком, ИМХО.
Буду осваивать XC8 1,35. Ещё раз благодарю, дай боги, чего захочется!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Delay ?!
СообщениеДобавлено: 19 авг 2015, 15:35 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Не за что, обращайся .
А лучше переходи на STM32 ...


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


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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB