Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

pic32 малко помощ
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=15000
Страница 1 от 1

Автор:  mkrumov [ Сря Яну 18, 2017 7:07 pm ]
Заглавие:  pic32 малко помощ

Здравейте,
разучавам pic32 и днес зациклих.
Опитвам се да направя програмка, която да обработва 2 прекъсвания - INT0 и Interupt On Change на PORTC.
Говоря за PIC32MX220F032D.
В обработване на прекъсването паля диодче.
Ето кода, да не обяснявам повече, мисля че е ясен.
Проблема е че което и от двете прекъсвания да симулирам, забива.
Ако съм разрешил само едното или само другото, работи.
Ползвам компилатора на Mikroe.
Всякакви съвети са добре дошли.

Код:
#include <stdint.h>

uint32_t temp32 = 0;

void main() {
 
  JTAGEN_bit = 0;

  TRISA = 0;
  LATA = 0;
 

 
  DisableInterrupts();
 
  // ON CHANGE PORTC
  ANSELC  = 0x0000;
  TRISC.TRISC7 = 1;
  CNCONC.B15 = 1;
  CNCONC.B3 = 1;

  CNPUC  = 0x0000;
  CNPUC.CNPUC7 = 1;
  CNPDC = 0x0000;
 
  temp32 =  PORTC;
 
  IPC8.CNIP0 = 0;
  IPC8.CNIP1 = 1;
  IPC8.CNIP2 = 1;
 
  IPC8.CNIS0 = 0;
  IPC8.CNIS1 = 0;
 
  IFS1.CNCIF = 0;
  CNENC.CNIEC7 = 1;
 
  IEC1.CNCIE = 1;
 
  // INT0
  ANSELB = 0x0000;
  CNPDB = 0x0000;

  CNPUB  = 0x0000;
  CNPUB.CNPUB7 = 1;

  ODCB = 0x0000;
  TRISB = 0;
  TRISB.TRISB7 = 1;
  LATB = 0;
 
  INTCON.INT0EP = 0;

  IPC0.INT0IP0 = 1;
  IPC0.INT0IP1 = 1;
  IPC0.INT0IP2 = 1;
 
  IPC0.INT0IS0 = 0;
  IPC0.INT0IS1 = 0;
 
  IFS0.INT0IF = 0;
  IEC0.INT0IE = 1;


  // enable all
  EnableInterrupts();


  while(1) {
    //LATA.B10 = ~PORTA.B10;       // LED2
    LATB.B15 = ~PORTB.B15;       // LED1

    Delay_ms(500);
  }
}


void OnINT0() iv IVT_EXTERNAL_0 ilevel 7 ics ICS_SOFT {
   
    IEC0.INT0IE = 0;

    LATA.B10 = ~PORTA.B10;
    IFS0.INT0IF = 0;

    IEC0.INT0IE = 1;
}

void OnChangePortC() iv IVT_CHANGE_NOTICE ilevel 6 ics ICS_SOFT {

    IEC1.CNCIE = 0;

    LATA.B10 = ~PORTA.B10;

    temp32 =  PORTC;
    IFS1.CNCIF = 0;

    IEC1.CNCIE = 1;

}

Автор:  TheWizard [ Сря Яну 18, 2017 7:48 pm ]
Заглавие:  Re: pic32 малко помощ

Вземи си качи майкрочипската среда....

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/