Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту


 
Опции темы
Непрочитано 11.03.2020, 09:41  
Ganinoff
Частый гость
 
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Ganinoff на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от DmitriyVDN Посмотреть сообщение
смысл в том, что
Код:
/* Main.c file generated by New Project wizard
 *
 * Created:   Ср мар 11 2020
 * Processor: PIC12F1501
 * Compiler:  MPLAB XC8
 */
// Configuration bits: selected in the GUI

// CONFIG1 0x1FA4
#pragma config FOSC = INTOSC      // Oscillator Selection Bits-›INTOSC oscillator: I/O function on CLKIN pin
#pragma config WDTE = OFF        // Watchdog Timer Enable-›WDT disabled
#pragma config PWRTE = OFF      // Power-up Timer Enable-›PWRT disabled
#pragma config MCLRE = ON      // MCLR Pin Function Select-›MCLR/VPP pin function is MCLR
#pragma config CP = OFF       // Flash Program Memory Code Protection-›Program memory code protection is disabled
#pragma config BOREN = ON    // Brown-out Reset Enable-›Brown-out Reset enabled
#pragma config CLKOUTEN = OFF    // Clock Out Enable-›CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin

// CONFIG2 0x1FFC
#pragma config WRT = OFF       // Flash Memory Self-Write Protection-›Write protection off
#pragma config STVREN = ON    // Stack Overflow/Underflow Reset Enable-›Stack Overflow or Underflow will cause a Reset
#pragma config BORV = LO     // Brown-out Reset Voltage Selection-›Brown-out Reset Voltage (Vbor), low trip point selected.
#pragma config LPBOR = OFF  // Low-Power Brown Out Reset-›Low-Power BOR is disabled
#pragma config LVP = OFF   // Low-Voltage Programming Enable-›Low-voltage programming enabled


#include ‹xc.h›

void SYSTEM_Initialize(void);

void SYSTEM_Initialize(void)
{
	GIE = 0; //INTCON ‹7›
    INTCON = 0; //GIE,PIE,TMR0IE,INTIE,RBIE,TMR0IF,INTF,RBIF==0;
    PIE1 = 0; //-ADIE--SSPIE,CCP1IE,TMR2IE,TMR1IE ==0;
    PORTA = 0b00000000;
	OPTION_REG = (unsigned char)((OPTION_REG & 0xC0) | (0xD7 & 0x3F));
	CLRWDT();
	TMR0 = 0x00;
	INTCONbits.TMR0IF = 0;
    INTCONbits.TMR0IE = 1;
	PSA = 0; //Prescaler is assigned to the Timer0 module
	PS2 = 1;
    PS1 = 1;
    PS0 = 1; //TMR0 Rate 1:256!
/**************************************************  *********/	
    WDTCON = 0x16;// WDTPS 1:65536; SWDTEN OFF;
    
    LATA = 0x00;

    TRISA = 0x2D;
	    
    ANSELA = 0x00;
  
    WPUA = 0x00;
    OPTION_REGbits.nWPUEN = 1;
  
    APFCON = 0x00;
    
    OSCCON = 0x7A;//// SCS INTOSC; IRCF 16MHz_HF; 
	    
    BORCON = 0x00;// SBOREN disabled; BORFS disabled;
     
//INTCONbits.GIE=1;	
        	
}


void main(void)
 {
    SYSTEM_Initialize();
	//INTCONbits.GIE=1;
	
	 while (1)
    {
		static unsigned int  counter0=0xFFFF;
		counter0--;
		if(!counter0)
			{counter0=0xFFFFF;
				RA1=1;//INTCONbits.GIE=1;
				}
		   }
 }
Это упрощенный вариант в одном файле, без хеадеров. В главном цикле, рыба. Все виснет при включении глобальных прерываний.
Полные исходники в папке source по первой ссылке, но смотреть их смысла нет, если даже в таком виде не включаются глобальные.
Реклама:
Ganinoff вне форума  
Непрочитано 11.03.2020, 21:39  
DmitriyVDN
Вид на жительство
 
Регистрация: 10.06.2010
Сообщений: 374
Сказал спасибо: 139
Сказали Спасибо 121 раз(а) в 86 сообщении(ях)
DmitriyVDN на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от Ganinoff Посмотреть сообщение
если даже в таком виде не включаются глобальные.
все у тебя включается, у тебя тупо отсутствует обработчик прерывания , от слова ВООБЩЕ , открывай мануал на XC8 и читай как описывается функция прерывания
DmitriyVDN вне форума  
Непрочитано 12.03.2020, 00:35  
Ganinoff
Частый гость
 
Регистрация: 10.11.2019
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Ganinoff на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от DmitriyVDN Посмотреть сообщение
все у тебя включается, у тебя тупо отсутствует обработчик прерывания
Спасибо, уже разобрался.
Согласен, в приведенном примере он отсутствует. Но в примере по первой ссылке еще как присутствует. Нужно было его обозвать по другому для этого компилятора.
Стал отзываться при одном из нижеследующих именований.
Код:
interrupt void isr_lo(void)
interrupt void isr_hi(void)
void interrupt isr(void)
void interrupt my_isr(void)
Еще раз спасибо DmitriyVDN и Мануалу.
Ganinoff вне форума  
Непрочитано 23.03.2020, 15:28  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 560
Сказал спасибо: 20
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Вопрос по script для выдачи в UART. При выдаче в UART в конце каждой строки дублируется последний символ. Не могу найти ошибку. Может кто-то работал с подобными script'ами и может что-то посоветовать.
Вложения:
Тип файла: rar Disp.rar (18.1 Кб, 0 просмотров)
pifa вне форума  
Непрочитано 23.03.2020, 16:34  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,638
Сказал спасибо: 167
Сказали Спасибо 744 раз(а) в 469 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от pifa Посмотреть сообщение
Не могу найти ошибку.
RETURN потерялся
Код:
OUTSTRING:

FOR i=1 TO LEN(s)
  d = ASC(SUBSTR(s,i))
  GOSUB OUTCHAR
NEXT i
RETURN
Ara41 вне форума  
Сказали "Спасибо" Ara41
pifa (24.03.2020)
Непрочитано 24.03.2020, 14:00  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 560
Сказал спасибо: 20
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от Ara41 Посмотреть сообщение
RETURN потерялся
Именно оно. Большое спасибо.
pifa вне форума  
Непрочитано 26.03.2020, 08:45  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,800
Сказал спасибо: 706
Сказали Спасибо 657 раз(а) в 377 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Всем привет ! Народ помогите разобраться . Мега 8 простенькая программа , по приходу импульса на внешнее прерывание выдает на три пина порта В импульсы со сдвигом. Никак не отловлю глюк, почему импульсы на выходе иногда получаются двойной длины. Посмотрите , может у меня протеус глючит ? Что то никак не пойму, отладку пошаговую делал , такое впечатление, что по выходу из прерывания программа возвращается не туда, откуда был вход. Адрес стека что ли сносит ? Проект прилагаю.
Миниатюры:
Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 0
Размер:	62.5 Кб
ID:	151532  
Вложения:
Тип файла: rar Desktop.rar (37.1 Кб, 0 просмотров)
__________________
Да здравствует Разум,да сгинет Маразм!

Последний раз редактировалось E_C_C; 26.03.2020 в 09:38.
E_C_C вне форума  
Непрочитано 26.03.2020, 17:10  
j-Roger
Вид на жительство
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 347
Сказал спасибо: 247
Сказали Спасибо 407 раз(а) в 200 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от E_C_C Посмотреть сообщение
Проект прилагаю.
E_C_C, а исходник(и)?
j-Roger вне форума  
Непрочитано 27.03.2020, 07:35  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,800
Сказал спасибо: 706
Сказали Спасибо 657 раз(а) в 377 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Proteus общие вопросы

j-Roger, пардон , вот они-
Код:
#include ‹mega8.h›  
 
  
 
     unsigned int time_count; 
     
     unsigned int delay_A,delay_B,delay_C,length_A,length_B,length_C  ;
     
     unsigned char flag1,flag2,flag3,flag4,flag5,flag6,flag7;
     
      unsigned int delay_time=20; 
        unsigned int length_pulse=50; 


// External Interrupt 1 service routine            // прерывание по синхре 
interrupt [EXT_INT1] void ext_int1_isr(void)
{
          #asm("wdr")
        flag1=1;
        flag2=1;
        flag3=1;
        flag4=1;
        flag5=1;
        flag6=1;
        flag7=1; 
              
        time_count=0;
              
        
       
}




  // Timer2     10mks
 interrupt [TIM2_COMP] void timer2_comp_isr(void)
  { 
   #asm("wdr")
   
    if((time_count‹1000)&&(flag7))
       {
          time_count++;
           };
   }





 

void main(void)
{

PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x0A;
TCNT2=0x00;
OCR2=0x0A;
GICR|=0x80;
MCUCR=0x0C;
GIFR=0x80;
TIMSK=0x80;  
SPCR=0x00;    
TWCR=0x00;

WDTCR=0x1E;
WDTCR=0x0E;


#asm("sei")


  delay_A = delay_time; 
   length_A = length_pulse+delay_time;  
    delay_B = delay_time+333; 
     length_B = length_pulse+delay_time+333;  
      delay_C = delay_time+666; 
       length_C = length_pulse+delay_time+666; 
  
  
     
while (1)
   {  
       #asm("wdr")
             
       if(( time_count›=delay_A)&&(flag1))         // выдыдим импульс 1
            {
              PORTB.3=1; 
                flag1=0;               
                };            
         if(( time_count›=length_A)&&(flag2))              
                   {
                   PORTB.3=0; 
                      flag2=0; 
                      
                        };            
        if(( time_count›=delay_B)&&(flag3))        // выдыдим импульс 2
            {
               PORTB.1=1;                
                  flag3=0;
                };                 
           if((time_count›=length_B)&&(flag4))
                {
                  PORTB.1=0; 
                     flag4=0;
                   };                 
          if((time_count›=delay_C)&&(flag5))      // выдыдим импульс 3
             { 
               PORTB.4=1; 
                  flag5=0;                
                };   
             if((time_count›=length_C)&&(flag6))
                {
                   PORTB.4=0; 
                    flag6=0;  
                       flag7=0;                        
                       };     
                   
      };  
      
}
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Непрочитано 27.03.2020, 16:56  
DmitriyVDN
Вид на жительство
 
Регистрация: 10.06.2010
Сообщений: 374
Сказал спасибо: 139
Сказали Спасибо 121 раз(а) в 86 сообщении(ях)
DmitriyVDN на пути к лучшему
По умолчанию Re: Proteus общие вопросы

Сообщение от E_C_C Посмотреть сообщение
пардон , вот они-
КМК это из-за установки флагов и сброса счетчика при синхронизации.
к примеру выполнилась проверка на delay_B вывод PORTB.1=1, прилетела синхронизация сбросился счетчик , порт остался в 1 пока счетчик не досчитает до length_B
или нет?
DmitriyVDN вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по PROTEUS-у Advanced_LAMER Proteus 370 07.01.2018 05:26
Вопросы и замечания по топику - FAQ по PROTEUS avr123-nm-ru Proteus 292 05.06.2015 20:49
Вопросы по работе с Proteus dosikus Proteus 510 20.12.2007 18:48
CAN BUS общие впечатления vasseff Микроконтроллеры, АЦП, память и т.д 7 20.06.2007 09:15
Вопросы по Си. Zemlyanov Proteus, KiCAD и другие ECAD 5 20.11.2006 15:36


Часовой пояс GMT +4, время: 22:36.


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