[ nikolapirot @ 19.05.2014. 17:13 ] @
Pocinjem da radim sa MPLab-om i interesuje me gde mogu da nadjem biblioteke za MPLAB X kompajler C8. Za pocetak mi treba za PWM (manje bitno) i za LCD 16x2 display. Ne mogu da nadjem na njihovom sajtu pa me interesuje odakle se skidaju biblioteke? Do sad sam radio u MikroC i tamo ima sve ugradjeno tako da nisam upoznat odakle se skidaju.
[ lestrigonac @ 19.05.2014. 18:23 ] @
Pozdrav,

Kod MikroC je malo drugaciji princip, sve imas "na gotovo". :)

Pocni odavde:
http://www.microchip.com/CodeExamplesByFunc.aspx

Mozda nisam bas "ubo" sustinu tvog pitanja, ali nadam se da ce biti od pomoci.

Pozdrav,
Lestrigonac
[ bogdan.kecman @ 19.05.2014. 19:12 ] @
biblioteke su vec tu a uputstvo:

C:\Program Files (x86)\Microchip\xc8\v1.30\docs\MPLAB_XC8_Peripheral_Libraries.pdf

http://ww1.microchip.com/downl...MPLAB_C18_Libraries_51297f.pdf

Citat:

8.8.4 PWM Examples
8.8.4.1 PWM Example1
Example Source Code demonstrating peripheral library usage
Code:

/******************************************************************
* NOTES:
* Code uses the Peripheral library support available with MCC18 Compiler
* Code Tested on:
* PicDem2+ demo board with PIC18F4685 controller
* PWM output is obtained on CCP1 pin. duty cycle is gievn by
*
*Formula for Period and Duty cycle calculatio
*
* PWM period = [(period ) + 1] x 4 x Tosc x TMR2 prescaler
*
* PWM x Duty cycle = (DCx<9:0>) x Tosc
*
* Resolution (bits) = log(Fosc/Fpwm) / log(2)
**********************************************************************/
#define USE_OR_MASKS
#include <p18cxxx.h>
#include "pwm.h"
void main(void)
{
  char period=0x00;
  unsigned char outputconfig=0,outputmode=0,config=0;
  unsigned int duty_cycle=0;
//----Configure pwm ----
  period = 0xFF;
  OpenPWM1( period); //Configure PWM module and initialize PWM period
//-----set duty cycle----
  duty_cycle = 0x0F00;
  SetDCPWM1(duty_cycle); //set the duty cycle
//----set pwm output----
  outputconfig = FULL_OUT_FWD ;
  outputmode = PWM_MODE_1;
  SetOutputPWM1( outputconfig, outputmode); //output PWM in respective modes 
  while(1); //observe output on CCP1 pin
//-----close pwm----
  ClosePWM1();
}


[ bogdan.kecman @ 19.05.2014. 19:23 ] @
i pogledaj include/plib/*.h tu su ti svi h fajlovi od peripheral libova pise ti u svakom fajlu sta se kako koristi
[ goran_68 @ 19.05.2014. 20:52 ] @

c:\Program Files\Microchip\xc8\v1.12\sources\

[ nikolapirot @ 21.05.2014. 11:48 ] @
A kako da te faljlove npr pwm.h ubacim u moj projekat? Ja dodam u Library folder Add Library/Object file i dodam pwm.h Ali kad stavim u moj kod #include <pwm.h>
ne moze da nadje gde je. Pokusao sam bez include ali ne prepoznaje naredbu a kompajler da error
error: unknown source file type "D:\Program Files (x86)\Microchip\xc8\v1.31\include\plib\pwm.h"
Kako da ubacim biblioteku i da mogu da je koristim?
[ bogdan.kecman @ 21.05.2014. 11:50 ] @
#include <plib/pwm.h>


(hm, mail posle < zabatali dalji deo poruke, mogao bi neki mod da to prijavi gde treba)
[ ColdKeyboard @ 21.05.2014. 12:25 ] @
Biblioteke od kompajlera ne moras da dodajes u svoj projekat nego je dovoljno da uradis #include <fajl.h> kao sto ti je gore receno.

Takodje pogledaj dokumentaciju za tu biblioteku da vidis kako radi i koje cipove podrzava. To sto ti inkludujes pwm.h, ne znaci da ta biblioteka podrzava tvoj mikrokontroler.

@bogdan.kecman Prijavljeno. :)
[ nikolapirot @ 21.05.2014. 13:49 ] @
Hvala vam na odgovorima, samo ima jos par sitnica koju ne razumem. Biblioteka za LCD je skroz drugacija ovde, i video sam funkcije putsXLCD i putrsXLCD i to je ok, ali kako da znam gde ce to on da odstampa? Npr kod MikroC bi bilo LCD_Out(2,8,"Test"); a kako se to radi ovde? I kad postavim sve config bitove, nigde ne vidim kako za interni oscilator da postavim da je frekfrenca 16Mhz?

Hvala svima na odgovorima

[Ovu poruku je menjao nikolapirot dana 21.05.2014. u 15:05 GMT+1]
[ bogdan.kecman @ 21.05.2014. 14:14 ] @
otvoris xlcd.h i procitas sta pise unutra

Code:

  *   Notes:
  *      - These libraries routines are written to support the
  *        Hitachi HD44780 LCD controller.
  *      - The user must define the following items:
  *          - The LCD interface type (4- or 8-bits)
  *          - If 4-bit mode
  *              - whether using the upper or lower nibble
  *          - The data port
  *              - The tris register for data port
  *              - The control signal ports and pins
  *              - The control signal port tris and pins
  *          - The user must provide three delay routines:
  *              - DelayFor18TCY() provides a 18 Tcy delay
  *              - DelayPORXLCD() provides at least 15ms delay
  *              - DelayXLCD() provides at least 5ms delay

dakle moras da setujes koji ces interface da koristis, to radis tako sto
definises ili ne BIT8 makro, dakle ako je definisano BIT8 osmobitni je
interface inace je 4bitni, takodje moras da napises ove 3 delay funkcije
sam.

data port i tris_data port u kombinaciji sa UPPER makroom definisu gde
su data linije
dalje imas tu TRIS_RW, RW_PIN .. etc koji definisu controlne linije

e sad, xc8 ima ovaj heder prilicno lose napisan (trebalo bi za svaki
ovaj define realno da bude ifdef pa ako ga ti definises kod sebe da ga
on ne definise ovde) tako da ako hoces da koristis druge portove od ovih
default moras ili da iskopiras ovaj heder u svoj projekat (dakle ne
inkludujes original iz plib nego kopiras kod sebe pa editujes) ili kod
sebe da radis #undef pa #define da bi redefinisao ove portove gde tebi treba

Sto se tice GDE ce da ispise, puts/putrs ispisuje text na trenutnoj
poziciji kursora. tako radi svaka valjana lcd biblioteka. a postoji
komanda da postavis trenutni kursor gde hoces (e sad jbg xlcd nema
gotoxy funkciju pa moras sam) ... na primer:

Code:


void lcdGotoXY(int x, int y) {
    x |= 0x80; // Set LCD for first line write
    switch (y){
    case 1:
        x |= 0x40;
        break;
    case 2:
        x |= 0x60;
        break;
    case 3:
        x |= 0x20;
        break;
    }
    WriteCmdXLCD(x);
}