Αρχικό μήνυμα από
Fubar.gr
Τα configuration bits μπορείς να τα βάλεις κατευθείαν μέσα στο κυρίως κώδικα σου (συνήθως main.c).
Παρόλα αυτά, συνηθίζεται να φτιάχνεται ένα header file οπου να μπαίνουν τα configuration bits και στη συνέχεια να το καλείς μέσα στον κυρίως κώδικα με την εντολή #include "header.h"
Προσοχή, το όνομα του αρχείου σε " " και όχι < > γιατι είναι τοπικό αρχείο του project και όχι universal του compiler.
Με αυτό τον τρόπο και ο κώδικας στο main.c φαίνεται πιό καθαρός, αλλά μπορούμε και να έχουμε πολλά διαφορετικά configuration files, πχ header1, header2 κτλ. και απλά να τα επιλέγουμε κάθε φορά με την εντολή include αντί να καθόμαστε να ξαναγράφουμε με το χέρι.
Για να δείς όλα τα configuration bits του μικροελεγκτή που έχεις επιλέξει για το project θα πάς στο Window, PIC Memory Views, Configuration Bits
Εκεί βγάζει όλες τις πιθανές επιλογές σε drop down menu και με περιγραφή του τί κάνει η καθε μία. Στη συνέχεια πατάς απο κάτω το κουμπί Generate Code και θα σου βγάλει ετοιμο τον κώδικα για να τον κάνεις copy-paste στο header.h
Απο κεί και πέρα δέν έχω δουλέψει κάποιο PIC με ενσωματωμένο PLL, αλλά έχω την εντύπωση οτι για να ρυθμιστεί σωστά πρέπει να ορίσεις τιμές και σε κάποιο register εκτός απο τα configuration bits.
ευχαριστω για την παντηση,
εχω δει πολλα tutorial που αναφερουν αυτα που ειπες και τα οποία τα έκανα.
το θέμα είναι αν πρεπει να ρυθμισω κατι αλλο οπως το Low voltage ..... για να μην καη ο μικροελεγκτης.
εχω προγραμματίει πολλους PIC 16F ομως αλλα πριν χρονια και φυσικα ολα αλλαζουν αλλα τα βασικα είναι ιδια οπως αυτο το low voltage .... το οποίο πρεπει να είναι disabled.
παραθέτω τα configuration bits οπως τα μετέτρεψε το πρόγραμμα
Κώδικας:
// DSPIC30F4013 Configuration Bit Settings
// 'C' source line config statements
// FOSC
#pragma config FOSFPR = XT_PLL4 // Oscillator (XT w/PLL 4x)
#pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw Disabled, Mon Disabled)
// FWDT
#pragma config FWPSB = WDTPSB_16 // WDT Prescaler B (1:16)
#pragma config FWPSA = WDTPSA_512 // WDT Prescaler A (1:512)
#pragma config WDT = WDT_OFF // Watchdog Timer (Disabled)
// FBORPOR
#pragma config FPWRT = PWRT_4 // POR Timer Value (4ms)
#pragma config BODENV = BORV20 // Brown Out Voltage (Reserved)
#pragma config BOREN = PBOR_ON // PBOR Enable (Enabled)
#pragma config MCLRE = MCLR_EN // Master Clear Enable (Enabled)
// FGS
#pragma config GWRP = GWRP_OFF // General Code Segment Write Protect (Disabled)
#pragma config GCP = CODE_PROT_OFF // General Segment Code Protection (Disabled)
// FICD
#pragma config ICS = ICS_PGD // Comm Channel Select (Use PGC/EMUC and PGD/EMUD)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
εδω λεει ενα tutorial οτι πρεπει να προσθέσουμε την ταχύτητα κρυστάλλου
Κώδικας:
#define _XT_PPL4_FREQ 40000000
Στον κυρίως κώδικα βάζεις τον κρύσταλλο και την την τιμη του, παραθέτω όλες τις μορφές που βρηκα:
Κώδικας:
_FOSC(CSW_FSCM_OFF & XT_PLL4); //10 MHz External crystal, 4x PLL enabled
ή
Κώδικας:
#define _XT_PPL4_FREQ 40000000
παραθέτω επισης ενα πολυ ενημερωμενη ιστοσελιδα ελπιζω να σας βοηθησει να μου πειτε κατι ευκολα χωρις να ζαλιζεσστε πολυ
http://www.studentcompanion.net/en/mplab-code-configurator/
Eίναι σωστές όλες δεδομένου οτι θέλω 10ΜHz external osc x4 PPL?
οταν βάζω, εσωτερικο , PPL Εχω πρόβλημα? γιατι στα datasheet λέει οτι οταν βαζω internal osc οπως και το PPL (ελπίζω μόνο να διαιρει την εξωτερικη συχνότητα) χάνω σε αρίβεια, δεν είναι ακριβης ο εσωτερικος ταλαντωτής.