Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Si5351 + PIC16F1455 USB controller
Ovo je minimalistička varijanta sa malim PIC 8-PIN MCU, to sve radi što treba, ima 5 LED i 1 taster i ulaze/izlaze.
Imaju GPS moduli koji na sebi imaju TCXO, malkice su skuplji tako da uz ovakav jedan PIC taj brojac bi radio sa TCXO kada je nesinhronizovan i preko GPS kada jeste.
Minimalno sve, kao NE555 da smo stavili a zavrsili smo kompletnu logiku.
Imam te PIC-ove zato sam njega izabrao, GPT napravi ceo prgram, samu se kaže "Rekao nam Miki da napišeš progam po ovoj tablici za Borin frekvencmetar sa GPS"  Cool

[Image: attachment.php?aid=43528]

Detalji po funkcionalnosti:
  1. Ulaz frekvencije (RA5):
    • Kada je ulazna frekvencija 10 kHz, sistem prepoznaje da je GPS sinhronizovan (locked).
    • Kada je ulazna frekvencija 20 kHz, sistem prepoznaje da je GPS nesinhronizovan (unlocked), ali i dalje funkcioniše normalno, generišući vremenske baze i signalizirajući nesinhronizovano stanje putem RA3.
  2. Izlaz frekvencije (RA4):
    • Sistem generiše sledeće frekvencije na osnovu izabrane vremenske baze:
      • 5 kHz
      • 500 Hz
      • 50 Hz
      • 5 Hz
  3. Sync LED (RA3):
    • RA3 kontroliše Sync LED:
      • Kada je GPS frekvencija 10 kHz (locked), LED svetli.
      • Kada je frekvencija 20 kHz (unlocked), LED može blinkati ili svetliti drugačije kako bi signalizovala nesinhronizovano stanje.
  4. Kontrola LED dioda (RA1 i RA2):
    • RA2 kontroliše dve LED diode koje prikazuju stanja za vremenske baze 0.1 s (10 Hz) i 1 s (1 Hz).
    • RA1 kontroliše preostale dve LED diode koje prikazuju stanja za vremenske baze 10 s (0.1 Hz) i 100 s(0.01 Hz).
  5. Taster za promenu baze (RA0):
    • Ovaj pin se koristi za jedan taster kojim ciklično menjaš između vremenskih baza.
    • Pritiskom na taster menja se baza, a odgovarajuće LED diode na RA1 i RA2 prikazuju trenutno stanje.


Code:
#include <xc.h>

// Konfiguracija fjuza
#pragma config FOSC = INTOSC    // Interni oscilator
#pragma config WDTE = OFF       // Watchdog Timer Off
#pragma config PWRTE = OFF      // Power-up Timer Disable
#pragma config MCLRE = ON       // Master Clear Enable
#pragma config CP = OFF         // Code Protection Off
#pragma config BOREN = OFF      // Brown-out Reset Disable
#pragma config CLKOUTEN = OFF   // CLKOUT Function Disable
#pragma config WRT = OFF        // Flash Memory Self-Write Protection Off
#pragma config PLLEN = OFF      // PLL Disable
#pragma config STVREN = OFF     // Stack Overflow/Underflow Reset Disable

// Definicija frekvencija i baze
#define BASE_5KHZ 0
#define BASE_500HZ 1
#define BASE_50HZ 2
#define BASE_5HZ 3

unsigned char current_base = BASE_5KHZ;  // Trenutna baza (default 5kHz)

// Funkcija za inicijalizaciju tajmera i ulaznih/izlaznih pinova
void init_pic() {
    // Interni oscilator na 4MHz
    OSCCON = 0x6A;
   
    // Konfiguracija I/O pinova
    TRISA = 0xFF;  // RA5 kao ulaz (GPS frekvencija), RA4 kao izlaz frekvencije, RA3 kao izlaz za Sync LED
    ANSELA = 0x00; // Digitalni režim za sve pinove
   
    // Postavljanje izlaznih pinova za LED diode i frekvenciju
    TRISA0 = 1;  // RA0 kao ulaz za taster
    TRISA1 = 0;  // RA1 kao izlaz za dve LED diode (1s i 10s)
    TRISA2 = 0;  // RA2 kao izlaz za dve LED diode (0.1s i 100s)
    TRISA3 = 0;  // RA3 kao izlaz za Sync LED
    TRISA4 = 0;  // RA4 kao izlaz za frekvenciju
    TRISA5 = 1;  // RA5 kao ulaz za GPS
   
    // Timer1 konfiguracija za deljenje frekvencije
    T1CON = 0x31;  // 16-bitni tajmer, predelilac 1:8
    TMR1 = 0;      // Resetovanje Timer1

    // Konfiguracija Timer2 za generisanje PWM (ukoliko je potrebno)
    T2CON = 0x04;  // Postavljanje predelilaca i uključenje tajmera
    PR2 = 249;     // Postavljanje vrednosti za postizanje željene frekvencije

    // Interrupt za taster
    OPTION_REGbits.nWPUEN = 0;  // Dozvoli weak pull-up
    WPUAbits.WPUA0 = 1;         // Pull-up za taster na RA0
    INTCONbits.INTF = 0;        // Resetovanje interapt flaga
    INTCONbits.INTE = 1;        // Dozvoli eksterni interrupt
    INTCONbits.GIE = 1;         // Dozvoli globalne prekide
}

// Funkcija za promenu vremenske baze
void change_base() {
    // Promena baze u ciklusima
    current_base++;
    if (current_base > BASE_5HZ) {
        current_base = BASE_5KHZ;
    }
}

// Funkcija za generisanje izlazne frekvencije na RA4
void set_frequency_output() {
    switch (current_base) {
        case BASE_5KHZ:
            // Postavi Timer1 za generisanje 5kHz na RA4
            T1CONbits.TMR1ON = 1;  // Uključi Timer1
            LATAbits.LATA4 = 1;
            __delay_ms(1);         // Kratak impuls
            LATAbits.LATA4 = 0;
            break;
        case BASE_500HZ:
            // Postavi Timer1 za 500Hz
            T1CONbits.TMR1ON = 1;
            LATAbits.LATA4 = 1;
            __delay_ms(10);
            LATAbits.LATA4 = 0;
            break;
        case BASE_50HZ:
            // Postavi Timer1 za 50Hz
            T1CONbits.TMR1ON = 1;
            LATAbits.LATA4 = 1;
            __delay_ms(100);
            LATAbits.LATA4 = 0;
            break;
        case BASE_5HZ:
            // Postavi Timer1 za 5Hz
            T1CONbits.TMR1ON = 1;
            LATAbits.LATA4 = 1;
            __delay_ms(1000);
            LATAbits.LATA4 = 0;
            break;
    }
}

// Funkcija za detekciju GPS frekvencije i kontrolu Sync LED-a
void check_gps_signal() {
    // Prebrojavanje impulsa na RA5 (10kHz ili 20kHz)
    if (PORTAbits.RA5 == 1) {
        // GPS frekvencija je prisutna
        LATAbits.LATA3 = 1;  // Upali Sync LED
    } else {
        LATAbits.LATA3 = 0;  // Ugasi Sync LED
    }
}

// Funkcija za kontrolu LED-ova vremenske baze
void update_leds() {
    // Kontrola LED-a na RA1 i RA2 na osnovu trenutne baze
    switch (current_base) {
        case BASE_5KHZ:
            LATAbits.LATA2 = 1;  // LED za 0.1s
            LATAbits.LATA1 = 0;
            break;
        case BASE_500HZ:
            LATAbits.LATA2 = 0;
            LATAbits.LATA1 = 1;  // LED za 1s
            break;
        case BASE_50HZ:
            LATAbits.LATA1 = 1;  // LED za 10s
            LATAbits.LATA2 = 0;
            break;
        case BASE_5HZ:
            LATAbits.LATA1 = 1;  // LED za 100s
            LATAbits.LATA2 = 1;
            break;
    }
}

// Prekidna rutina za eksterni interrupt (taster)
void __interrupt() ISR() {
    if (INTCONbits.INTF) {
        // Detekcija pritiska tastera
        change_base();  // Promeni vremensku bazu
        INTCONbits.INTF = 0;  // Resetovanje interapt flaga
    }
}

void main() {
    init_pic();  // Inicijalizacija mikrokontrolera
   
    while (1) {
        check_gps_signal();     // Detekcija GPS signala
        set_frequency_output(); // Generisanje izlazne frekvencije
        update_leds();          // Ažuriranje stanja LED-ova
    }
}


Attached Files
.png   opis-pic16f15313.png (Size: 102,73 KB / Downloads: 137)
Reply


Messages In This Thread
Si5351 + PIC16F1455 USB controller - by mikikg - 11-05-2014, 09:51 AM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 04-12-2016, 01:29 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 04-12-2016, 03:23 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 04-12-2016, 03:50 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 05-22-2017, 08:52 AM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 07-22-2017, 07:12 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 07-22-2017, 10:25 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 07-23-2017, 02:54 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 08-24-2017, 10:55 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 03-24-2023, 02:20 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-23-2023, 07:32 PM
RE: Si5351 + PIC16F1455 USB controller - by Gosha - 03-24-2023, 09:56 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-26-2023, 03:26 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-27-2023, 12:49 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-15-2023, 04:06 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 05-12-2023, 07:00 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-15-2023, 08:55 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-16-2023, 03:45 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-29-2024, 02:15 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-30-2024, 08:55 AM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-30-2024, 10:25 AM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-30-2024, 10:00 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-31-2024, 08:26 AM
RE: Si5351 + PIC16F1455 USB controller - by savan - 03-31-2024, 05:01 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 05-24-2024, 08:44 AM
RE: Si5351 + PIC16F1455 USB controller - by mikikg - 09-27-2024, 12:28 AM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-13-2024, 12:14 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-13-2024, 12:36 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-13-2024, 04:37 PM
RE: Si5351 + PIC16F1455 USB controller - by savan - 10-14-2024, 11:21 AM
RE: Upravo stiglo - by Khadgar2007 - 05-19-2017, 06:27 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 06:44 PM
RE: Upravo stiglo - by Khadgar2007 - 05-19-2017, 07:05 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 07:12 PM
RE: Upravo stiglo - by emiSAr - 05-19-2017, 07:41 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 09:57 PM
RE: Upravo stiglo - by Milan94 - 05-19-2017, 10:17 PM
RE: Upravo stiglo - by Gosha - 05-19-2017, 10:27 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 10:28 PM
RE: Upravo stiglo - by Milan94 - 05-19-2017, 10:33 PM
RE: Upravo stiglo - by Khadgar2007 - 05-19-2017, 10:38 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 10:41 PM
RE: Upravo stiglo - by Milan94 - 05-19-2017, 10:52 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 11:05 PM
RE: Upravo stiglo - by Khadgar2007 - 05-19-2017, 11:15 PM
RE: Upravo stiglo - by Milan94 - 05-19-2017, 11:24 PM
RE: Upravo stiglo - by mikikg - 05-19-2017, 11:44 PM
RE: Upravo stiglo - by Milan94 - 05-20-2017, 12:01 AM
RE: Upravo stiglo - by Khadgar2007 - 05-20-2017, 12:06 AM
RE: Upravo stiglo - by mikikg - 05-20-2017, 12:10 AM
RE: Upravo stiglo - by mikikg - 05-20-2017, 12:40 AM
RE: Upravo stiglo - by Khadgar2007 - 05-20-2017, 06:53 AM
RE: Upravo stiglo - by progster - 05-20-2017, 07:57 AM
RE: Upravo stiglo - by Khadgar2007 - 05-20-2017, 09:27 AM
RE: Upravo stiglo - by mikikg - 05-20-2017, 12:52 PM
RE: Upravo stiglo - by npejcic - 05-20-2017, 01:10 PM
RE: Upravo stiglo - by mikikg - 05-20-2017, 01:24 PM
RE: Upravo stiglo - by npejcic - 05-20-2017, 01:30 PM
RE: Upravo stiglo - by mikikg - 05-20-2017, 01:34 PM
RE: Upravo stiglo - by Khadgar2007 - 05-20-2017, 02:33 PM
RE: Upravo stiglo - by mikikg - 05-20-2017, 02:48 PM

Forum Jump:


Users browsing this thread: 8 Guest(s)