Skocz do zawartości

Dziwne zachowanie się programu na PIC18F45K50


patryk29a

Pomocna odpowiedź

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.

Link do komentarza
Share on other sites

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ć.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.