Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 29.11.2018, 15:33   #201
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,003
Вес репутации: 3723/82
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: xc8

AlDes
Якобы она встроена в компилятор, что не верно. - у Вас же ниже написано
Код:
extern void _delay(unsigned long)
учитывая отсутствие квалификатора static inline она не может быть размещена в pic.h, тк. это заголовочный файл.

я не знаю где размещена _delay(unsigned long), но опираясь на pragma предполагаю, что функцию-таки линкует компилятор.
besogon вне форума   Ответить с цитированием
Старый 29.11.2018, 17:37   #202
AlDes
Member
 
Регистрация: 08.07.2016
Сообщений: 37
Вес репутации: 137/11
AlDes will become famous soon enoughAlDes will become famous soon enough
По умолчанию Re: xc8

C:\Program Files\Microchip\xc8\v1.20\include
Для младших pic.h
Для 18х в pic18.h

Достаточно подключить к проекту только
#include <xc.h>
В нем автоматом подключается
#include <htc.h>
А уже htc.h, в зависимости от пика, автоматом подключается:

Код:
/* HI-TECH PICC / PICC-Lite compiler */
#if	defined(__PICC__) || defined(__PICCLITE__)
#include <pic.h>
#endif

/* HI-TECH PICC-18 compiler */
#if	defined(__PICC18__)
#include <pic18.h>
#endif
В которых и описан этот макрос.
Здесь звучало утверждение, что этой функции, нет ни в одном файле. И мол, у кого то она работает не так как надо.
Мне например, она не очень то и нужна, но заглянув вышеозвученные файлы, можно понять, как надо ее вызывать, что бы была задержка в тиках, us, ms.

Тик

_delay();

us

__delay_us(x);

ms
__delay_ms(x);

А для 18-х, есть еще задержка и для WDT.

__delaywdt_us(x)
__delaywdt_ms(x)

Пусть студенты знают про это.
AlDes вне форума   Ответить с цитированием
Старый 29.11.2018, 18:36   #203
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,786
Вес репутации: 1986/77
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: xc8

Цитата:
Сообщение от AlDes Посмотреть сообщение
Достаточно подключить к проекту только
#include <xc.h>
В нем автоматом подключается
#include <htc.h>
А уже htc.h, в зависимости от пика, автоматом подключается:
У Вас старая версия, в xc8 2.0 уже нет ссылки на htc.h. А в
MPLAB XC8 C Compiler User’s Guide for PIC MCU про эти задержки все расписано, трудно не понять что о чем.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 11.02.2019, 20:14   #204
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 807
Вес репутации: 1418/55
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: xc8

даже не знаю куда и вопрос задать...
компилятор ХС8 1.33 , камень 12F675, вроде обычный ногадрыг
в вечном цикле
Код:
    while(1)
    {
      NOP();
      RELAY_1=1;
      dalay_time(2);
      RELAY_1=0;
      dalay_time(2);
      RELAY_2=1;
      dalay_time(2);
      RELAY_2=0;
      dalay_time(2);
      NOP();
           
    } // end while(1)
задержка
Код:
void dalay_time(unsigned int timer)
{
      while(timer--)
    {
        while(!flag.FL1SEC);
        flag.FL1SEC=0;     
    }
}
прерывание по TMR1 подымает флаг каждую секунду и мигает ледом
в симе получаю вот такую хрень
Миниатюры
сим.png  
DmitrijVDN на форуме   Ответить с цитированием
Старый 12.02.2019, 14:32   #205
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 365
Вес репутации: 1041/51
tsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud of
По умолчанию Re: xc8

Цитата:
Сообщение от DmitrijVDN Посмотреть сообщение
...в симе получаю вот такую хрень
Так а в чем собственно вопрос? По-моему, "хрень" на картинке соответствует тому, что написано в программе. Или нет?
А-а-а, кажется понял. Вопрос в том, что циклическое формирование импульсов на выходах RELAY через время прекращается?

Последний раз редактировалось tsb58; 12.02.2019 в 14:37.
tsb58 вне форума   Ответить с цитированием
Старый 12.02.2019, 18:45   #206
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 807
Вес репутации: 1418/55
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: А-а-а, кажется понял. Вопрос в том, что циклическое формирование импульсов на выходах RELAY через время прекращается?

именно это... по ходу сам разобрался ,было включено прерывание от TMR0
DmitrijVDN на форуме   Ответить с цитированием
Старый 09.03.2019, 21:40   #207
AlDes
Member
 
Регистрация: 08.07.2016
Сообщений: 37
Вес репутации: 137/11
AlDes will become famous soon enoughAlDes will become famous soon enough
По умолчанию Re: xc8

Как победить всплеск на выходах PORTB, при подачи питания на МК?
PIC16.
Если залить штатную прошивку, всплеска нет. Изделие заводское.
В Инициализации, что только не писал.
На выходах портов A, С всплеска нет.
Осциллограмма всплеска во вложении.
Вкл подтягивающих не помогает, и исходя из схемы устройства, в них нет необходимости.
Один из вариантов инициализации.

Код:
void init (void)
{
 CLRWDT();
   GIE=0;//INTCON = 0b00100000; 
     OPTION_REG=0b10001111;//RPBU-Off////Prescaler assigned to the WDT 1:128! 
   
//-----------------------------------------------
TRISA = 0b00111100; 
TRISB = 0b11110000; 
TRISC = 0b10001010;
   
//PORTA = 0b00000000; 
//PORTB = 0b00000000; 
//PORTC = 0b00000000;
PORTA = 0b00101100;// RA4 кнопка по умолчанию нажата
PORTB = 0b11110000;
PORTC = 0b10001010;
   
ADCON1 = 0b00000111; // AD in digital-RA0 RA1 RA2 RA5 RA3
PEIE=0;// Disables TMR0 Interapt
//-----------------------------------------------
INTE=0;//Disables the PortB/INT external interapt 
RBIE=0;//Disables the PortB change interrapt
INTF=0;//PortB
RBIF=0;//f_PortB
//-------------------------------------------------
TMR0IE=1;//Enabl the inter TMR0!//  T0IE=1;
PSA=0;//Prescaler is assigned to the Timer0 module
PS2=0;PS1=1;PS0=0;//TMR0 Rate 1:8!
T0CS=0;//Sorce TMR0 (CLKOUT)!
PCON   = 0b00000000;  // Flags BOR;  POR 
PIR1   = 0b00000000;  // Reset Flags Peripheral Interrupt 
CCPR1L=0b01100011;
T1CON=48;//00110000-Prescaller= 1:8;Fosc/4;TMR1-off;
TMR1IE=1;//Interrupt enable TMR 1
PEIE=1; //INTCON<6> Peripheral Interrupt enable
GIE=1;

     }/*Init*/
	 
	 void main (void)
{//И так не помогат.
init();

PORTA = 0b00101100;
PORTB = 0b11110000;
PORTC = 0b10001010;
RB0=0;//..не помогает.
while (1) 
{
Миниатюры
100_1751.JPG  
AlDes вне форума   Ответить с цитированием
Старый 09.03.2019, 22:00   #208
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,786
Вес репутации: 1986/77
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: xc8

Какой PIC16?
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 09.03.2019, 23:25   #209
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 807
Вес репутации: 1418/55
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: xc8

Цитата:
Как победить всплеск на выходах PORTB, при подачи питания на МК?
1.обнуляем регистр прерывания и периферийного прерывания
2. обнуляем регистры портов
3. если надо отключаем аналоговые входы
4. выставляем направление портов
5. устанавливаем состояние на выходах порта.
6. далее инициализируем нужные прерывания
DmitrijVDN на форуме   Ответить с цитированием
Старый 10.03.2019, 10:08   #210
AlDes
Member
 
Регистрация: 08.07.2016
Сообщений: 37
Вес репутации: 137/11
AlDes will become famous soon enoughAlDes will become famous soon enough
По умолчанию Re: xc8

Спасибо DmitrijVDN.
При следующем порядке инициализации, всплесков нет.

Код:
void init (void)
{
	CLRWDT();
	GIE=0;//INTCON <7>
	
	OPTION_REG=0b10001111;
	//               ||||||||_ PS0-PS2 1:128! 	
	//               |||||____ PSA-Prescaler assigned to the WDT
	//	             ||||_____ T0SE-TMR0 Soruce Edge
	//               |||______ T0CS-MMR0 Clock Source select bit-internal instr.	
	//               ||_______ Interapt rice RB0
	//               |________ RPBU-Off	
	//-----------------------------------------------
	
	INTCON=0;//GIE,PIE,TMR0IE,INTIE,RBIE,TMR0IF,INTF,RBIF==0;
   
        PIE1=0;//-ADIE--SSPIE,CCP1IE,TMR2IE,TMR1IE ==0;
	
	PORTA = 0b00000000; 
        PORTB = 0b00000000; 
        PORTC = 0b00000000;
	
	ADCON1 = 0b00000111; // AD in digital-RA0 RA1 RA2 RA5 RA3
	
	TRISA = 0b00111100; 
	TRISB = 0b11110000; 
	TRISC = 0b10001010;

	PORTA = 0b00101100;
	PORTB = 0b11110000;
        PORTC = 0b10001010;
	
	
	//-----------------------------------------------
	
	
	//---------------------INTCON--------------------
	
	//PEIE=0;// Disables TMR0 Interapt                   <6>
	//INTE=0;//Disables the PortB/INT external interapt  <4>
	//RBIE=0;//Disables the PortB change interrapt       <3>
	//INTF=0;//PortB External Interapt flag bit diseble  <1>
	//RBIF=0;//PortB                                     <0>


	TMR0IE=1;//Enabl the inter TMR0!                   <5>
	
	//----------------------OPTION_REG--------------------
	PSA=0;//Prescaler is assigned to the Timer0 module
	PS2=0;PS1=1;PS0=0;//TMR0 Rate 1:8!
	T0CS=0;//Sorce TMR0 (CLKOUT)!
	//-----------------------------------------------
	PCON   = 0b00000000;  // Flags BOR and POR Reset 
	
	PIR1   = 0b00000000;  // Reset Flags Peripheral Interrupt 
	CCPR1L=0b01100011;
	T1CON=48;//00110000-Prescaller= 1:8;Fosc/4;TMR1-off;
	TMR1IE=1;//Interrupt enable TMR 1
	PEIE=1; //INTCON<6> Peripheral Interrupt enable
	GIE=1; //INTCON<7>

}/*Init*/

void main (void)
{
	init();

	while (1) 
	{
AlDes вне форума   Ответить с цитированием
Старый 10.03.2019, 11:43   #211
DmitrijVDN
Senior Member
 
Регистрация: 09.04.2010
Сообщений: 807
Вес репутации: 1418/55
DmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud ofDmitrijVDN has much to be proud of
По умолчанию Re: xc8

сначала сброс прерываний , потом сброс собаки
Код:
     INTCON=0;
     PIE1=0;  
     PORTA = 0b00000000;
     PORTB = 0b00000000;          
     PORTC = 0b00000000;
     OPTION_REG=0b10001111;
     CLRWDT();          
     ADCON1 = 0b00000111; // AD in digital-RA0 RA1 RA2 RA5 RA3          
     TRISA = 0b00111100;      
     TRISB = 0b11110000;     
     TRISC = 0b10001010;
DmitrijVDN на форуме   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XC8 & OSA вопрос tester-y SSH Инструментарий 3 03.03.2013 07:44
mplabx-1.60 xc8 pic18f14k22 экспорт hex besogon Вопросы начинающих 3 05.02.2013 11:29
mplabx проект на XC8 с модулем на асм. EugenOS Продукция MICROCHIP 8 08.11.2012 21:26
Помогите настроить pic16f1827 в XC8 Urvin Продукция MICROCHIP 1 28.10.2012 12:48


Часовой пояс GMT +3, время: 14:51.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot