|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Jakey Član
Pridružen-a: Sre 11 Jul 2012 0:38 Prispevkov: 651 Aktiv.: 4.56 Kraj: Ravne/LJ/Kobarid
|
Objavljeno: Ned Apr 13, 2014 12:28 am Naslov sporočila: Pomoč pri programiranju |
|
|
Moram opraviti za faks neke meritve ter podati poročila. Zanima me, če mi lahko kdo pomaga pri tem.
Pic: dsPIC33F modul z DSC krmilnikom dsPIC33FJ12GP202
Prva naloga:
"Izmerite interval prekinitev in interval preklopa LED diod."
Zanima me, kam naj vstavim breakpointe(za merjenje z stopwatchom) ter kam za merjenje dolžine utripa diode?
Koda: |
//*****************************************************************
//* 28pin_UART_TX-RX_Using_USB
//*****************************************************************
#include "p33FJ12GP202.h"
// the above include path may be different for each user. If a compile
// time error appears then check the path for the file above and edit
// the include statement above.
//#define XTFREQ 7370000 //FRC frequency
#define FCY 39613000 //Instruction Cycle Frequency
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1
int main(void)
{
// Configure Oscillator to operate the device at 40Mhz
// Fosc= Fin*M/(N1*N2), Fcy=Fosc/2
// Fosc= 7.37*43/(2*2)=79.23MHz
PLLFBD=41; // M=43
CLKDIVbits.PLLPOST=0; // N1=2
CLKDIVbits.PLLPRE=0; // N2=2
// Disable Watch Dog Timer
RCONbits.SWDTEN=0;
// Wait for PLL to lock
while(OSCCONbits.LOCK!=1) {};
RPINR18 = 9; // Make Pin RP9 U1RX
RPOR4bits.RP8R = 3; // Make Pin RP8 U1TX
AD1PCFGL = 0x03C0; // Make analog pins digital
LATB = 0x0000;
TRISB = 0x0FFF; // Config LED's as output and U1RX as Input
TMR1 = 0; // clear timer 1
PR1 = 0xFFFF; // interrupt every 400ms
IFS0bits.T1IF = 0; // clr interrupt flag
IEC0bits.T1IE = 1; // set interrupt enable bit
T1CON = 0x8030; // 1:64 prescale, start TMR1
U1BRG = BRGVAL;
U1MODE = 0x8000; /* Reset UART to 8-n-1, alt pins, and enable */
U1STA = 0x0440; /* Reset status register and enable TX & RX*/
_U1RXIF=0;
while(1)
{
int a;
while (_U1RXIF==0); // Wait and Receive One Character
a = U1RXREG;
while(!U1STAbits.TRMT);
U1TXREG = '"';
while(!U1STAbits.TRMT); // Echo Back Received Character with quotes
U1TXREG = a;
while(!U1STAbits.TRMT);
U1TXREG = '"';
while(!U1STAbits.TRMT);
U1TXREG = ' ';
_U1RXIF=0; // Clear UART RX Interrupt Flag
}
return 0;
}
void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)
{
IFS0bits.T1IF = 0; // clear interrupt flag
LATB ^= 0xF000; //Toggle LED's
} |
_________________ Predlagam, da kar napišem, si čimprej skopirat, saj bodo šerifi tega foruma verjetno pobrisali s predpostavko, da ne prispeva (dosti) k vrednosti foruma. |
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.30 Kraj: Ljubljana
|
Objavljeno: Ned Apr 13, 2014 1:51 am Naslov sporočila: Re: Pomoč pri programiranju |
|
|
Jakey je napisal/a: |
Zanima me, kam naj vstavim breakpointe(za merjenje z stopwatchom) ter kam za merjenje dolžine utripa diode? |
Če ugodimo tvoji prošnji, boš verjetno rešil nalogo, vendar se pri tem ne boš naučil skoraj nič.
Pri naslednji podobni nalogi bo spet tema.
Naštudiraj kako program deluje, ali vsaj v kateri vrstici prižiga in ugaša LED. |
|
Nazaj na vrh |
|
|
Jakey Član
Pridružen-a: Sre 11 Jul 2012 0:38 Prispevkov: 651 Aktiv.: 4.56 Kraj: Ravne/LJ/Kobarid
|
Objavljeno: Sre Apr 16, 2014 12:43 am Naslov sporočila: Re: Pomoč pri programiranju |
|
|
int47 je napisal/a: |
Jakey je napisal/a: |
Zanima me, kam naj vstavim breakpointe(za merjenje z stopwatchom) ter kam za merjenje dolžine utripa diode? |
Če ugodimo tvoji prošnji, boš verjetno rešil nalogo, vendar se pri tem ne boš naučil skoraj nič.
Pri naslednji podobni nalogi bo spet tema.
Naštudiraj kako program deluje, ali vsaj v kateri vrstici prižiga in ugaša LED. |
Res je, imam 4 naloge za "rešit". Zato pa se lotujem postopno(čeprav roko na srce MOČNO upam, da nikoli nebom rabil delati s pic-i, ker mi je resnično muka), in bi rad vsaj osnovno razumel; jezik kot C razumem, niso mi pa jasni ukazi. _________________ Predlagam, da kar napišem, si čimprej skopirat, saj bodo šerifi tega foruma verjetno pobrisali s predpostavko, da ne prispeva (dosti) k vrednosti foruma. |
|
Nazaj na vrh |
|
|
Tonny Član
Pridružen-a: Sre 23 Dec 2009 11:57 Prispevkov: 289 Aktiv.: 1.66 Kraj: Vrhnika - MS
|
Objavljeno: Pet Apr 18, 2014 7:55 am Naslov sporočila: Re: Pomoč pri programiranju |
|
|
Jakey je napisal/a: |
Res je, imam 4 naloge za "rešit". Zato pa se lotujem postopno(čeprav roko na srce MOČNO upam, da nikoli nebom rabil delati s pic-i, ker mi je resnično muka), in bi rad vsaj osnovno razumel; jezik kot C razumem, niso mi pa jasni ukazi. |
Misliš, da je pri drugih mlinčkih (npr. AVR, MSP430, itd.) kaj drugače?
Katerih ukazov ne razumeš? Glede na to, da "C" poznaš, ti težave verjetno delajo tiste čudne besede, napisane z veliko?
To so imena registrov uC-ja, tisto kar je za piko pa je poimensko določen bit v določenem registru. Na katerem naslovu se nahaja register je definirano v .h datoteki, katera je vključena na začetku programa. Ampak to zaenkrat sploh ni pomembno, ker so v datasheet-u vsi registri in biti predstavljeni z enakimi imeni kot v tvojem programu. Še več - za vsak register se tam najde podroben opis kaj njegovi bitki počnejo. Poleg tega pa imaš opis, kaj določen ukaz naredi, tudi v komentarjih v programu.
Malo bolj podrobno definiraj česa ne razumeš. |
|
Nazaj na vrh |
|
|
Jakey Član
Pridružen-a: Sre 11 Jul 2012 0:38 Prispevkov: 651 Aktiv.: 4.56 Kraj: Ravne/LJ/Kobarid
|
Objavljeno: Pet Apr 18, 2014 12:12 pm Naslov sporočila: Re: Pomoč pri programiranju |
|
|
Tonny je napisal/a: |
Misliš, da je pri drugih mlinčkih (npr. AVR, MSP430, itd.) kaj drugače?
|
kolikor sem delal z Atmeli, ni ravno kaj dosti drugače..se mi pa zdi, da je dosti bolj pregledno :S
Tonny je napisal/a: |
Katerih ukazov ne razumeš? Glede na to, da "C" poznaš, ti težave verjetno delajo tiste čudne besede, napisane z veliko?
|
Bo držalo
Tonny je napisal/a: |
Malo bolj podrobno definiraj česa ne razumeš.
|
Za začetek, katera vrstica vklopi diode in katera izklopi. _________________ Predlagam, da kar napišem, si čimprej skopirat, saj bodo šerifi tega foruma verjetno pobrisali s predpostavko, da ne prispeva (dosti) k vrednosti foruma. |
|
Nazaj na vrh |
|
|
Tonny Član
Pridružen-a: Sre 23 Dec 2009 11:57 Prispevkov: 289 Aktiv.: 1.66 Kraj: Vrhnika - MS
|
Objavljeno: Pet Apr 18, 2014 2:26 pm Naslov sporočila: Re: Pomoč pri programiranju |
|
|
Jakey je napisal/a: |
Za začetek, katera vrstica vklopi diode in katera izklopi. |
To je bolj konec kot začetek, pa vseeno.
- AD1PCFGL register določa, kateri pini kontrolerja so definirani kot digitalni
- TRIS register določa, kateri digitalni pini so definirani kot izhodi in kateri kot vhodi
- LAT register določa stanje izhodnih digitalnih pinov (visoko/nizko)
- "^" je bitni operator XOR (poglej si tabelco za XOR)
- ukaz "LATB ^= 0xF000;" je enak LATB = LATB ^ 0xF000
Mislim da je to vse kar se tiče ledic. |
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.30 Kraj: Ljubljana
|
Objavljeno: Sob Apr 19, 2014 1:59 pm Naslov sporočila: |
|
|
Ali je res tako težko prebrat komentarje v kodi ? |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 48 dni
Powered by phpBB © 2001, 2005 phpBB Group
|