forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Zaciatocnik u microchipu
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 08 leden 2015, 14:59    Předmět: Citovat

Dakujem Vam pekne, som tu len na skok a nemam pristup k datasheetu ale hned ked pridem domov tak to pozriem. Zatial Vam dakujem

PS: Pozeral som to a nasiel som to aj ja. Hodim si to na nejaky pin a skusim pokracovat dalej. Zatial Vam dakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
zapomněl svou registraci
Anonymní





PříspěvekZaslal: 08 leden 2015, 18:16    Předmět: Citovat

Není zač Wink 16b dsPICy už nejsou žádná ořezávátka, dokumentace je k tomu poměrně rozsáhlá, snadno se něco přehlédne... Hlavně ať se dílo daří, a kdyby zas něco, fórum tu pořád je Smile Jsem rád že jsem mohl pomoci
Návrat nahoru
 

 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 09 leden 2015, 11:26    Předmět: Citovat

Tak to urcite je s tym suhlasim. Mam ale dalsi problem a to je prerusenie v rezime input capture. Cely kod je tu
kód:
#include <p33FJ06GS202A.h>   //Typ procesora

#define FCY 40000000   //Vypocet taktovacej frekvencie na 40MIPS

//Nastavenie konfiguracnych bitov
_FICD(ICS_PGD1 & JTAGEN_ON);    //Komunikacny kanal nastaveny na PGEC1/PGED1 a povolenie JTAG-u
_FWDT(FWDTEN_OFF);  //Watchdog vypnuty
_FOSCSEL(FNOSC_FRC & IESO_OFF); //Vnutorny fast oscilator so zakazom startu na dvoch oscilatoroch
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);    //Povolenie prepinania oscilatora, OSC2 je vystup oscilatora, povol prerpnutie oscilatora

//Zoznam pouzitych kniznic
#include <stdio.h>
#include <stdlib.h>
#include <libpic30.h>   //Pre funkciu delay

//Definovanie globalnych premennych
volatile unsigned int cas_polperiody = 0;

//Obsluha prerusenia zachytneho registra
void __attribute__((__interrupt__, no_auto_psv)) _IC1Interrupt(void)
    {
        LATAbits.LATA0 = 1;
        __delay_us(10);
        LATAbits.LATA0 = 0;
        IFS0bits.IC1IF = 0; //Vymazanie priznaku prerusenia
    }

//Hlavny program
int main(void)
{
//Konfiguracia PLL
    PLLFBD = 63;    //M = 65
    CLKDIVbits.PLLPOST = 0; //N2 = 2
    CLKDIVbits.PLLPRE = 1;  //N1 = 3

//Inicializacia prepinaca oscilatora na vnutorny FRC s PLL
    __builtin_write_OSCCONH(0x01);
    __builtin_write_OSCCONL(OSCCON | 0x01);
   
//Podmienky prepnutia oscilatora
    while(OSCCONbits.COSC !=0b001){};   //Cakaj na prepnutie oscilatora
    while(OSCCONbits.LOCK !=1){};   //Cakaj na zavesenie PLL

//Mapovanie pinov
    __builtin_write_OSCCONL(OSCCON & ~(1<<6));  //Odomknutie konfiguracneho registra
    RPINR7bits.IC1R = 0b00000;    //Input Capture 1 na pin RP0
    __builtin_write_OSCCONL(OSCCON | (1<<6));   //Zamknutie konfiguracneho registra

//Konfiguracia I/O portov
    TRISAbits.TRISA0 = 0;   //Nastav PA0 ako vystup
    TRISBbits.TRISB0 = 1;   //Nastav PB0 ako vstup

//Nastavenie startovacej hodnoty I/O portov
    LATAbits.LATA0 = 0;  //Nastav logicku uroven na PA0
    LATBbits.LATB0 = 0; //Nastav logicku uroven na PB0

//Nastavenie zachytneho registra
    IC1CON = 0; //Vymazanie konfiguracneho registra Input Capture
    IC1CONbits.ICM = 0b011; //Zober vzorku pri kazdej nabeznej hrane signalu
    IC1CONbits.ICI = 0b00;  //Prerusenie na kazdu vzorku
    IC1CONbits.ICTMR = 1;   //Casova zakladna zvolena ako T2

//Povolenie prerusenia zachytneho registra
    IPC0bits.IC1IP = 0b001; //Nastavenie priority prerusenia
    IFS0bits.IC1IF = 0; //Vymazanie priznaku prerusenia od zachytneho registra
    IEC0bits.IC1IE = 1; //Povolenie prerusenia zachytneho registra

//Nastavenie casovaca T2 ako casovej zakladne zachytneho registra
    T2CON = 0;  //Vymazanie konfiguracneho registra casovaca T2
    PR2 = 1;    //Nastav periodu citania pre T2
    T2CONbits.TON = 1;  //Spustenie casovaca T2

    while(1)    //Nekonecna slucka
    {

    }
}


Ide o to ze som chcel skusit odmerat cas periody a v nejakom case napriklad nastavit vystup. Samozrejme mi to neslo tak som zacal hladat problem a prisiel som na to ze mne sa ani nemeni obsah zachytneho registra, skusal som nastavit aby mi pri nenulovej hodnote registra nastavilo nejaky pin na log.1 no bez uspechu. Spravil som potom taky barbarsky cin ze v obsluhe prerusenia som chcel vytvorit delay-om 100us dlhy impulz aby som to mohol vidiet na osciloskope no prisiel som na to ze mne program ani neskoci do obsluhy prerusenia a stale mam na vystupe nulu.
Myslim ze mozu byt tri zdroje problemu:
1.) Mam zle nadefinovany vstup pre ICP1 - nastavil som ho na RP0, je to pin5 a kontroloval som asi 3x ci je vystup generatora na tomto pine
2.) Mam zle nastavene prerusenia
3.) To je to najpravdepodobnejsie a to je ze mam chyby v oboch pripadoch Smile

Pozeral som aj nejake priklady od Microchipu no vsade to maju priblizne rovnako, nikto samozrejme nerobil to ze v preruseni stopoval MCU ale principialne by to malo byt jedno, ja potrebujem az mi program skoci do prerusenia a je si to mozem takto lahko skontrolovat. Dakujem Vam
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 09 leden 2015, 14:22    Předmět: Citovat

1)o jakym vystupe generatoru mluvis ?
2)vetsinou bejva jeste globalni preruseni a preruseni od periferii, to musis taky povolit, a globalni povolit pri navratu z preruseni
3) pokud pouzivas pin na kterem je i analogovy vstup je potreba nastavit ten pin jako digitalni
citace:
The ADPCFG register has a default value of 0x0000;
therefore, all pins that share ANx functions are analog
(not digital) by default


dsPIC33xx moc neznam vychazim z nizzsih rad, takze mohla nastat nekde zmena ...

PS: nejsem si jistej tim odblokovanim pri mapovani pinu

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 09 leden 2015, 14:35    Předmět: Citovat

kód:
ADPCFGbits.PCFG3 = 1;

Toto bol problem, uz to slape. Dakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 09 leden 2015, 14:39    Předmět: Citovat

jj analog, na tom uz vyhorelo hodne lidi, jakmile je tam ADC nebo komparator tak se musi nejdriv vyhnout a pak dat digitalni..
_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 09 leden 2015, 14:42    Předmět: Citovat

Ani nehovor, ja sa s tym trapim uz od rana, citam AN, presiel som cele forum na microchipe a nic, nikde to tam nebolo a ani ma to len nenapadlo. Pridem domov tak si dam pivo Very Happy
Ale aj tak mi nebezi timer tak musim si to este raz prejst a zamerat sa na to, ale aspon som sa posunul dalej

PS: Uz aj casovac mi funguje. Este raz dakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
zapomněl svou registraci
Anonymní





PříspěvekZaslal: 10 leden 2015, 14:13    Předmět: Citovat

Dej prosím kdyžtak kód i k tomu časovači, já zrovna taky s 16b začínám (už nějakou dobu), tak se mi to hodí... předem děkuju.
Návrat nahoru
 

 
marosh555
Profesionál
Profesionál


Založen: 23.3.2012
Příspěvky: 129

PříspěvekZaslal: 10 leden 2015, 15:45    Předmět: Citovat

kód:
//Nastavenie casovaca T2
    T2CON = 0x0000; //Nastavenie konfiguracneho registra
    T2CONbits.TCKPS = 0b00; //Nastavenie preddelicky na 1:1
    T2CONbits.TCS = 0;  //Nastavenie taktovacieho signalu na FCY
    TMR2 = 0x0000;  //Vynulovanie registra casovaca T2
    T2CONbits.TON = 1;  //Spustenie casovaca T2


Je to ale to iste co bolo vyssie, len som si tam dal este zvlast konfiguracne bity ke nastavujem preddelicku, zdroj hodin a nulujem register casovaca, ale fungovalo to aj bez tohoto. Problem som mal len syntakticky, nenuloval som casovac pri vykonani mojej instrukcie
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2
 
Strana 2 z 2
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2018 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)