Skocz do zawartości

Dziwne zachowanie się programu na PIC18F45K50


Pomocna odpowiedź

Napisano

Witam,
jestem jeszcze mocno początkujący w programowaniu, ale trochę już napisałem prostych programów na różne AVR'y. Problem jest taki, że w pracy korzystamy z PIC'ów i tutaj mam spore problemy z przenoszeniem programów na nie. Używam XC 8. Wiadomo, na początku proste programy w stylu miganie diodkami itp. Wszystko było dobrze, programy działały dopóki nie musiałem wykonać prostego programu :

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>




#pragma config FOSC = INTOSCIO
//#pragma config PLLSEL = PLL3X   // PLL Selection (3x clock multiplier)
//#pragma config CFGPLLEN = OFF    // PLL Enable Configuration bit (PLL Enabled)
//#pragma config CPUDIV = NOCLKDIV // CPU System Clock Postscaler (CPU uses system clock divided by 6)
//#pragma config PCLKEN = ON      // Primary Oscillator Shutdown (Primary oscillator enabled)
//#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor (Fail-Safe Clock Monitor disabled)
//#pragma config IESO = OFF       // Internal/External Oscillator Switchover (Oscillator Switchover mode disabled)
//#pragma config BOREN = OFF
//#pragma config WDTEN = OFF
/*
* 
*/
void main(void) {
   //OSCCON=0b11110100;
   //SPLLMULT=1;  
  // PLLEN=1;
   ANSELA = 0xff;
   TRISA =0x00;

       //LATA=0x01;

       LATA=0x00;
       asm("nop");
       LATA=0x01;
       asm("nop");
       asm("nop");
       LATA=0x01;
       asm("nop");
       LATA=0x00;
       asm("nop");
       asm("nop");
       LATA=0x00;
       asm("nop");
       LATA=0x01;

       //LATA=0x00;
       //LATA=0x01;

      // LATA=0x00;

    for(;;);  
}

Oczekiwanie było takie, że wykona się tak jak na np. Atmedze 32 czyli przejdzie przez wszystkie instrukcje i wpadnie w pętlę nieskończoną. Tymczasem nic się takiego nie dzieje, a jedynie program zatrzymuje się na ostatnim rozkazie przed pętlą for(;😉 i tyle. Pozostałe rozkazy wewnątrz się nie wykonują. Nie mam już pomysłu. Jeżeli dam to w pętlę oczywiście działa.

Na pierwszy rzut oka wygląda okej. Fusy sprawdzone? Czemu większość jest wykomentowana?

P.S. Co to za praca, że można pisać na PICach? Sam bym tam popracował 😉

Zakomentowana jest część od PLL'a tak żebym nie przeoczył niczego. Już tak się przyjeło że PIC'e są i tak zostało. Ogólnie to zawsze staram się pisać proste programy po to by sprawdzić na szybko niektóre porty po przylutuwaniu, bo ten jest w obudowie qfn. Może te procesory nie nadają się do prostych zadań. ale chciałbym się dowiedzieć dlaczego to nie działa bo nikt nie potrafi mi na to odpowiedzieć.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...