Zaciatocnik u microchipu

Dakujem, skusim to pozriet a nejako sa do toho dostat. V tom tvojom MPLAB-e funguje aj nieco take ako predikcia pri pisani prikazov? Napriklad napisem #inc a ono mi v ponuke vyhodi vsetko co tak isto zacina? Je to velmi sikovna vec, tento novy MPLAB to ma, podobne ako AVR studio. Venujem tomu este dnesok, ak nie tak zajtra si nainstalujem tu tvoju verziu a skusim pisat v tom, keby som nevedel tak aspon budem mat niekoho kto bude vediet poradit ako zalozit projekt :slight_smile:
Zatial dakujem

je to dobra vec ale bohuzel to neumi…

Ak by to fungovalo tak aj to obetujem. Tie konfiguracne bity som uz nasiel, dakujem
microchip.wikidot.com/mplabx:view-and-set-configuration-bits

Zatial iba delay-om ale blikaaaaam :slight_smile:
PS: a uz aj timerom :slight_smile:

No vida, šikovnej :wink:

MPLAB X (ten novější) se víc podobá jak tomu co znáš, tak běžným standardům co se týká všech IDE společně. Rozhodně bych zůstal u něj, starý MPLAB je jednak svým pojetím nestandard, a jednak nebude do budoucna podporován. Chápu že když s ním někdo dělá 10 let tak si na něj zvyknul, když ale začínáš teď od začátku, tak bych rozhodně doporučil už X.

Zatial som to robil v MPLAB-X a chodi to tak to nemam este dovod menit IDE. Pokusim sa rozbehat dalsie periferie a pochopit pracu s registrami, zapis do nich a pod lebo je to zmena oproti tomu na co som bol zvyknuty u AVR. S tym MPLAB-om mam ale taky problem ze niekedy sa mi stane ze mi vyskoci nejake okno a je cele cierne, alebo mi to spravi pas cez obrazovku a pod. Staci ho len minimalizovat a vratit spat a ide to ale je to otravne. Stretli ste sa s tym? Dakujem

MPLAB X je prostředí vycházející z NetBeans a běží pod JVM. Osobně nevím, neřešil jsem nic takového, ale zkusil bych se asi první soustředit na to, abych měl aktuální ovladače grafické karty a verzi Javy. Možná někdo poradí víc, já mohu dát jen takto obecnou radu.

Aktualizoval som ovladace a zatial som problem nemal tak to asi bolo len tym sposobene. Dakujem
Mam ale iny problem, vybral som si svab dsPIC33FJ06GS202A bol v DIL puzdre tak az sa mi s nim lahsie robi. Chcel by som skusit merat frekvenciu, prestudoval som si datasheet, AN od vyrobcu a chcem pripojit generator k MCU a pozeram ze neviem kde. Neviem ci som slepy ale nikde nevidim pin IC1. V datasheete popisovany je, na zaciatku je pisene ze tusim verzia dsPIC…101 neobsahuje tuto jednotku a ze ten moj obsahuje jednu ale kde sa mam pripojit? V pdfku som dal vyhladavat IC1 a naslo mi len to ze to tam ma byt, na rozlozeni pinov nic nieje. Som slepy alebo…?

Tet momentalne nemuzu nahlidnout do ds, nema nahodou to picko"remappable pins"?

Má… Mapuje se to pomocí registru RPINR7 a jeho bitů IC1R 5:0 na piny RPx (přičemž piny RP32 - RP35 jsou virtuální piny).

Jinak v Reference manualu jsou k tomuto modulu ještě nějaké užitečné poznámky (přičemž to mapování pinů tam není, to je v datasheetu na straně 60, 149, 157).

takze se jedna o Input Capture 1, ten vstup si muzes nastavit na jakejkoliv pin kterej je oznacenej RPx ,str 149

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

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 :slight_smile: Jsem rád že jsem mohl pomoci

Tak to urcite je s tym suhlasim. Mam ale dalsi problem a to je prerusenie v rezime input capture. Cely kod je tu

[code]#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
{

}

}[/code]

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 :slight_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

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

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

PS: nejsem si jistej tim odblokovanim pri mapovani pinu

ADPCFGbits.PCFG3 = 1;

Toto bol problem, uz to slape. Dakujem

jj analog, na tom uz vyhorelo hodne lidi, jakmile je tam ADC nebo komparator tak se musi nejdriv vyhnout a pak dat digitalni…

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 :smiley:
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

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.

//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