Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip MPLAB C serisi => Microchip C30 => Konuyu başlatan: GreeN - 27 Mayıs 2011, 16:54:45

Başlık: Mplab C30 C Compilers Döküman
Gönderen: GreeN - 27 Mayıs 2011, 16:54:45
Mplab C30 derleyici help file yada microchip sitesindeki dökümanlar genelde c dili ana konularına değinmiş geçmiş.

ADC , PWM , SPI , EPROM , UART  gibi donanımsal konuları içeren bir referans kaynak bulamadım .
siteyi alt üst ettiğimi düşünüyorum. Ama örneklerden başka bir bilgiye ulaşamadım.

Acaba bahsettiğim konuları içeren bir kaynak varmı? Benim gözümden kaçmış olabilir.

Saygılarımla.
Başlık: Ynt: Mplab C30 Compilers Döküman
Gönderen: iyildirim - 27 Mayıs 2011, 17:18:54
İşlemcilerin datasheet'lerinde yeterli açıklama var.

Ayrıca sitesinde çeşitli app.note ve kaynak kodu açık uygulama örnekleri de var. 
Dökümanlarda verilen örneklerin de neredeyse hepsi C30 için..

App.note ları ve örnek uygulamaları istediğiniz türde uygulama veya donanımsal modüle göre arayabilirsiniz.

Başlık: Ynt: Mplab C30 Compilers Döküman
Gönderen: Tagli - 27 Mayıs 2011, 17:29:19
Derleyiciyi yükleyince içinde dökümanlar da geliyor.

C:\Program Files\Microchip\mplabc30\v3.25\docs (veya her neredeyse...)
Başlık: Ynt: Mplab C30 C Compilers Döküman
Gönderen: GreeN - 28 Mayıs 2011, 10:16:28
 :-[  Evet bakmak ile görmek arasındaki fark bu olsa gerek . :)  Teşekkürler.


ADC örnek....

ADPCFG = 0xFFFB; // all PORTB = Digital; RB2 = analog
ADCON1 = 0x0000; // SAMP bit = 0 ends sampling ...
// and starts converting
ADCHS = 0x0002; // Connect RB2/AN2 as CH0 input  ..
// in this example RB2/AN2 is the input
ADCSSL = 0;
ADCON3 = 0x0002; // Manual Sample, Tad = internal 2 Tcy
ADCON2 = 0;
ADCON1bits.ADON = 1; // turn ADC ON
while (1) // repeat continuously
}
ADCON1bits.SAMP = 1; // start sampling ...
DelayNmSec(100); //  for 100 mS
ADCON1bits.SAMP = 0; // start Converting
while (!ADCON1bits.DONE); // conversion done?
ADCValue = ADCBUF0; // yes then get ADC value
} // repeat



UART Örnek ;
#define FCY 29100000
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1
int main(void)
}
U1MODEbits.STSEL = 0; // 1-stop bit
U1MODEbits.PDSEL = 0; // No Parity, 8-data bits
U1MODEbits.ABAUD = 0; // Autobaud Disabled
U1MODEbits.BRGH = 0; // Low Speed mode
U1BRG = BRGVAL; // BAUD Rate Setting for 9600
U1STAbits.UTXISEL = 0; // Interrupt for every data transfer
IEC0bits.U1TXIE = 1; // Enable UART Transmit interrupt
U1MODEbits.UARTEN = 1; // Enable UART
U1STAbits.UTXEN = 1; // Enable UART Tx
/* wait at least 104 usec (1/9600) before sending first char */
for(i = 0; i < 4160; i++){
Nop();
{
U1TXREG = 'a'; // Transmit one character
while(1) {}
{
//UART Transmit ISR
void __attribute__((interrupt, no_auto_psv)) _U1TXInterrupt(void)
}
IFS0bits.U1TXIF = 0; // clear TX interrupt flag
U1TXREG = 'a'; // Transmit one character
{


SPI Master Mode örnek

/* Following code snippet shows SPI register configuration for MASTER mode*/
IFS0bits.SPI1IF = 0; //Clear the Interrupt Flag
IEC0bits.SPI1IE = 0; //disable the Interrupt
//SPI1CON1 Register Settings
SPI1CON1bits.DISSCK = 0; //Internal Serial Clock is Enabled.
SPI1CON1bits.DISSDO = 0; //SDO1 pin is controlled by the module.
SPI1CON1bits.MODE16 = 1; //Communication is word-wide (16 bits).
SPI1CON1bits.SMP = 0; //Input Data is sampled at the middle of data
//output time.
SPI1CON1bits.CKE = 0; //Serial output data changes on transition from
//Idle clock state to active clock state
SPI1CON1bits.CKP = 0; //Idle state for clock is a low level; active
//state is a high level
SPI1CON1bits.MSTEN = 1; //Master Mode Enabled
SPI1STATbits.SPIEN = 1; //Enable SPI Module
SPI1BUF = 0x0000; //Write data to be transmitted
//Interrupt Controller Settings
IFS0bits.SPI1IF = 0; //Clear the Interrupt Flag
IEC0bits.SPI1IE = 1; //Enable the Interrupt