Почему мой PIC не мигает светодиодами?

Я пытаюсь начать работу с pic24, в частности с PIC24FJ64GA002, и я посмотрел в таблице данных регистры и еще много чего, но я все еще не могу заставить его мигать светодиодами. Когда я запускаю его через отладку, он работает правильно, но когда я пытаюсь запустить его на картинке, он вообще не работает.

Я использую внешний генератор, в частности генератор на 8 МГц, подключенный к контактам 9 (OSCI) и 10 (OSCO). Компилятор C30 в Mplab.

Ссылка на техническое описание: http://ww1.microchip.com/downloads/en/DeviceDoc/39881D.pdf

Код ниже

//include basic header definition
#include <p24FJ64GA002.h>

//config
_CONFIG2(0x0200);
_CONFIG1(0x0800);

int i;

//main loop
int main(void)
{

   OSCCON = 0x2280;  //select external OSC, no PLL
   AD1PCFG      = 0xFFFF;  //set to all digital I/O
   TRISA = 0x0000;  //configure all PortA as output

   while(1)    //Loop forever
   {
  LATAbits.LATA0 = 1; //RA0 = 1
  Wait();
  LATAbits.LATA0 = 1; //RA0 = 1
  Wait(); 
   }

}


int Wait(void) // gives me a nice delay of 1/3rd a second or so
{
for (int i = 0; i < 30000; i++)
 { 
  for (int i = 0; i < 30; i++);
    }

}


person hak8or    schedule 23.11.2010    source источник


Ответы (3)


Тебе нужно сказать привет, подожди, потом вот, подожди... ты просто будешь привет, подожди, привет, подожди.

   while(1)    //Loop forever
   {
  LATAbits.LATA0 = 1; //RA0 = 1
  Wait();
  LATAbits.LATA0 = 0; //RA0 = 1
  Wait(); 
   }
person superfro    schedule 23.11.2010
comment
@Chubsdad Программирование логично по определению :) - person ruslik; 23.11.2010
comment
О, это была опечатка с моей стороны, фактический код действительно имеет правильное изменение защелки, с 0 на 1. В любом случае, светодиод на самом деле не включается. Я думаю, что я где-то неправильно установил некоторые регистры, такие как слова конфигурации или периферийные устройства. Я думаю, что АЦП был отключен правильно, только другие вещи на этих выводах - это Vref и какое-то прерывание. - person hak8or; 24.11.2010
comment
Вы запускаете рис на 3v? Вы используете светодиод ~ 3 В? У вас есть анод, подключенный к RA0 и катод, подключенный к земле? - person superfro; 24.11.2010
comment
MCLR плавает? или отключил через конфиг? - person superfro; 24.11.2010
comment
Также я думаю, что вы хотите изменить свои LATAbits.LATA0 на PORTAbits.RA0=1 / 1... и поставить один LATAbits.LATA0 = 0 перед тем, как рядом установить трис - person superfro; 24.11.2010
comment
Целевая мощность не обнаружена - Питание от PICkit 2 (3,50 В) Обнаружен PIC24FJ64GA002 (Rev 0x3043) От mplab, он работает на 3,5 В, на всякий случай откалиброван вчера. Это светодиод, рассчитанный на 5 В, но если на него подается напряжение 3 В, разве он не должен по-прежнему гореть, хотя бы тускло? Спасибо за помощь, кстати :D - person hak8or; 24.11.2010
comment
зависит от минимального прямого напряжения светодиода, возьмите дешевый светодиод малой мощности, чтобы быть в безопасности. - person superfro; 24.11.2010
comment
Обычно я использую компилятор CCS, а не mplab, который немного отличается. Попробуйте изменить LATAbits.LATA0 на PORTAbits.RA0 и добавить один LATAbits.LATA0 = 0 в операторе tris. - person superfro; 24.11.2010

С каким уровнем оптимизации вы компилируете? Если он работает только в режиме отладки, возможно, оптимизатор сводит всю функцию Wait() к неактивной. Попробуйте объявить `volatile int i'.

person AShelly    schedule 30.11.2010

Спасибо вам, ребята, за вашу помощь, но я неправильно установил биты конфигурации, когда я установил их в редакторе конфигурации в mplab, все работает хорошо.

Спасибо за твою помощь!

person hak8or    schedule 30.11.2010
comment
Для следующего бедолаги, который столкнется с этим вопросом с аналогичной проблемой, не могли бы вы отредактировать эти вопросы и указать, какой бит конфигурации был неправильным и какое значение устранило проблему? - person spade78; 12.12.2010