www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Programiranje PIC v C-ju!
Pojdi na stran Prejšnja  1, 2, 3 ... 10, 11, 12, 13  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pon Apr 18, 2011 7:36 am    Naslov sporočila:   Odgovori s citatom

MarkoM je napisal/a:
...to je moj zadnji fuš s pici, ker imajo IDE v totalnem k...., malo boljši notepad....


Si že poizkusil Mplab X? Sicer je še v beta fazi ampak dela prav lepo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 13.23
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pon Apr 18, 2011 8:46 am    Naslov sporočila:   Odgovori s citatom

Ne, nisem. Mogoče bom nazaj vzel, da sem rekel, da je zadnji fuš s pici. Imam namreč še večjo zalogo raznoraznih 18f krmilnikov. Za kakšno malo stvar so dobri, kjer ni veliko programiranja. Drugače pa zdaj večinoma delam s cortexi in keilom, je le amerika proti mplabu, če prav bi lahko še boljši bil.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.69
Kraj: Yogyakarta

PrispevekObjavljeno: Pon Apr 18, 2011 7:42 pm    Naslov sporočila:   Odgovori s citatom

ja hvala bogu,

končno so nardili IDE kot se spodobi v NetBeans Mr. Green

že prej sem namreč včasih fajle tipkal v C++ netbeans-u Very Happy

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vitez93
Član
Član



Pridružen-a: Pet 19 Sep 2008 20:00
Prispevkov: 1018
Aktiv.: 5.39
Kraj: Celje- Dobrna

PrispevekObjavljeno: Ned Apr 08, 2012 10:42 am    Naslov sporočila:   Odgovori s citatom

Spet bom jaz malo težil.
Izdelujem svojo verzijo MPGuino, bi bo delovala na PIC-u. Sam program bo dokaj enostaven za napisati. Muči me samo vključitev podprograma za funkcije LCD-ja. Našel sem zelo dobro napisan driver za LCD.
LINK za driver: http://www.ccsinfo.com/forum/viewtopic.php?t=24661

Zdaj problem je ta, da dobi tale error: Error 128 "flex_lcd.c" Line 28(1,43): A #DEVICE required before this line

Sem malo googlal in sem našel tole temo: LINK Mislim, da je rešitev v tej temi, ampak ne razumem kaj točno moram narediti.
Uporabljam CCS in mplab.

Hvala vnaprej za odgovore!


EDIT: Sem rešil problem. Pod "source files" v mplabu mora biti samo glavni program. Podprogrami morajo biti v "other files"

A bi še koga zinamil tale "potovalni računalnik" ? Avto mora imeti el. vbrizg in el. senzor hitrosti.

Koda:
#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)

#include "flex_lcd.c"
   
//==========================
void main()
{
lcd_init();  // Always call this first.

lcd_putc("\fHello World\n");
lcd_putc("Line Number 2");

while(1);
}




Koda:
// flex_lcd.c

// These pins are for the Microchip PicDem2-Plus board,
// which is what I used to test the driver.  Change these
// pins to fit your own board.

#define LCD_DB4   PIN_D0
#define LCD_DB5   PIN_D1
#define LCD_DB6   PIN_D2
#define LCD_DB7   PIN_D3

#define LCD_E     PIN_A1
#define LCD_RS    PIN_A3
#define LCD_RW    PIN_A2

// If you only want a 6-pin interface to your LCD, then
// connect the R/W pin on the LCD to ground, and comment
// out the following line.

#define USE_LCD_RW   1     

//========================================

#define lcd_type 2        // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the 2nd line


int8 const LCD_INIT_STRING[4] =
{
 0x20 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots
 0xc,                    // Display on
 1,                      // Clear display
 6                       // Increment cursor
 };
                             

//-------------------------------------
void lcd_send_nibble(int8 nibble)
{
// Note:  !! converts an integer expression
// to a boolean (1 or 0).
 output_bit(LCD_DB4, !!(nibble & 1));
 output_bit(LCD_DB5, !!(nibble & 2)); 
 output_bit(LCD_DB6, !!(nibble & 4));   
 output_bit(LCD_DB7, !!(nibble & 8));   

 delay_cycles(1);
 output_high(LCD_E);
 delay_us(2);
 output_low(LCD_E);
}

//-----------------------------------
// This sub-routine is only called by lcd_read_byte().
// It's not a stand-alone routine.  For example, the
// R/W signal is set high by lcd_read_byte() before
// this routine is called.     

#ifdef USE_LCD_RW
int8 lcd_read_nibble(void)
{
int8 retval;
// Create bit variables so that we can easily set
// individual bits in the retval variable.
#bit retval_0 = retval.0
#bit retval_1 = retval.1
#bit retval_2 = retval.2
#bit retval_3 = retval.3

retval = 0;
   
output_high(LCD_E);
delay_cycles(1);

retval_0 = input(LCD_DB4);
retval_1 = input(LCD_DB5);
retval_2 = input(LCD_DB6);
retval_3 = input(LCD_DB7);
 
output_low(LCD_E);
   
return(retval);   
}   
#endif

//---------------------------------------
// Read a byte from the LCD and return it.

#ifdef USE_LCD_RW
int8 lcd_read_byte(void)
{
int8 low;
int8 high;

output_high(LCD_RW);
delay_cycles(1);

high = lcd_read_nibble();

low = lcd_read_nibble();

return( (high<<4) | low);
}
#endif

//----------------------------------------
// Send a byte to the LCD.
void lcd_send_byte(int8 address, int8 n)
{
output_low(LCD_RS);

#ifdef USE_LCD_RW
while(bit_test(lcd_read_byte(),7)) ;
#else
delay_us(60); 
#endif

if(address)
   output_high(LCD_RS);
else
   output_low(LCD_RS);
     
 delay_cycles(1);

#ifdef USE_LCD_RW
output_low(LCD_RW);
delay_cycles(1);
#endif

output_low(LCD_E);

lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}

//----------------------------
void lcd_init(void)
{
int8 i;

output_low(LCD_RS);

#ifdef USE_LCD_RW
output_low(LCD_RW);
#endif

output_low(LCD_E);

delay_ms(15);

for(i=0 ;i < 3; i++)
   {
    lcd_send_nibble(0x03);
    delay_ms(5);
   }

lcd_send_nibble(0x02);

for(i=0; i < sizeof(LCD_INIT_STRING); i++)
   {
    lcd_send_byte(0, LCD_INIT_STRING[i]);
   
    // If the R/W signal is not used, then
    // the busy bit can't be polled.  One of
    // the init commands takes longer than
    // the hard-coded delay of 60 us, so in
    // that case, lets just do a 5 ms delay
    // after all four of them.
    #ifndef USE_LCD_RW
    delay_ms(5);
    #endif
   }

}

//----------------------------

void lcd_gotoxy(int8 x, int8 y)
{
int8 address;

if(y != 1)
   address = lcd_line_two;
else
   address=0;

address += x-1;
lcd_send_byte(0, 0x80 | address);
}

//-----------------------------
void lcd_putc(char c)
{
 switch(c)
   {
    case '\f':
      lcd_send_byte(0,1);
      delay_ms(2);
      break;
   
    case '\n':
       lcd_gotoxy(1,2);
       break;
   
    case '\b':
       lcd_send_byte(0,0x10);
       break;
   
    default:
       lcd_send_byte(1,c);
       break;
   }
}

//------------------------------
#ifdef USE_LCD_RW
char lcd_getc(int8 x, int8 y)
{
char value;

lcd_gotoxy(x,y);

// Wait until busy flag is low.
while(bit_test(lcd_read_byte(),7)); 

output_high(LCD_RS);
value = lcd_read_byte();
output_low(lcd_RS);

return(value);
}
#endif
[/code][/url]
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Peter123
Član
Član



Pridružen-a: Tor 13 Jan 2009 15:34
Prispevkov: 1364
Aktiv.: 7.37
Kraj: Lj.

PrispevekObjavljeno: Ned Apr 08, 2012 7:34 pm    Naslov sporočila:   Odgovori s citatom

@vitez93
Tudi mene bi zanimal tak računalnik, vendar na osnovi komunikacije K in L oziroma OBD2 protokola.
Kot vem so vsi podatki že v CPU ampak jih je potrebno brati in prikazovati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vitez93
Član
Član



Pridružen-a: Pet 19 Sep 2008 20:00
Prispevkov: 1018
Aktiv.: 5.39
Kraj: Celje- Dobrna

PrispevekObjavljeno: Pon Apr 09, 2012 1:01 pm    Naslov sporočila:   Odgovori s citatom

Glup CCS prevajalnik. Brick wall Brick wall

Ene pol leta nisem že pisal C programa za mikrokrmilnike in ko sem zdaj pisal mi je bilo logično, da mora biti tako:
Koda:

if (PIN_B0 == 0)
{
.
.
.
}



In se kako urco čudim zakaj hudič ne dela. In grem pogledat en star program in vidim, da CCS hoče imeti to tako:
Koda:

if (INPUT(PIN_B0) == 1)
{
.
.
.
}



@Peter123
Mogoče ti tole kej pomaga: http://code.google.com/p/opengauge/wiki/OBDuino32K

Lp, Robi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.18
Kraj: Domžale

PrispevekObjavljeno: Čet Apr 19, 2012 7:04 pm    Naslov sporočila:   Odgovori s citatom

Probam sestaviti program kjer bi ti ob pritisku tipke samo +1 ali -1 spremenilo vrednost. Ubistvu bi moral za +5, 5x pritisniti tipko.
Mi lahko kdo pomaga?

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.69
Kraj: Yogyakarta

PrispevekObjavljeno: Čet Apr 19, 2012 11:07 pm    Naslov sporočila:   Odgovori s citatom

hahalolek je napisal/a:
Probam sestaviti program kjer bi ti ob pritisku tipke samo +1 ali -1 spremenilo vrednost. Ubistvu bi moral za +5, 5x pritisniti tipko.
Mi lahko kdo pomaga?


Pokazes program ki ga imas sedaj?
Predvidevam da ti sedaj zletijo stevilke kot bi ga 100x pritisnil?

Drugace sem pa ravno v sourceforge posobil kodo za merilec tlaka.
http://sourceforge.net/p/mx12005/code/ci/bf3d4cb93a586b833f5e9e1a38277b866e530621/tree/main.c
Tukaj si lahko ogledas primer za tipke cisto spodaj v kodi kako je narejeno ce ti ustreza.

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.18
Kraj: Domžale

PrispevekObjavljeno: Pet Apr 20, 2012 7:10 am    Naslov sporočila:   Odgovori s citatom

Kakor sem jaz znal prebrati ptogram se ti ce tipko drzis potem skos povecuje.
Rad bi pa naredip brez delayev ker imam se 7segmente displaye za krmilit.

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Peter123
Član
Član



Pridružen-a: Tor 13 Jan 2009 15:34
Prispevkov: 1364
Aktiv.: 7.37
Kraj: Lj.

PrispevekObjavljeno: Pet Apr 20, 2012 7:24 am    Naslov sporočila:   Odgovori s citatom

7 segmentni prikazovalnik krmili z pomočjo interuptov in ne bo problema, lahko boš uporabil delaye za vse ostale funkcije.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.18
Kraj: Domžale

PrispevekObjavljeno: Pet Apr 20, 2012 7:46 am    Naslov sporočila:   Odgovori s citatom

Ok hvala za ta odgovor. Sem mislil da delay ustavi tudi interupt.
_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.69
Kraj: Yogyakarta

PrispevekObjavljeno: Pet Apr 20, 2012 8:45 am    Naslov sporočila:   Odgovori s citatom

imam jaz tudi z interupti,
samo je rutina za izpis displeyev v glavni zanki ker se tudi ADC vrednosti osvezijo v njej.

Poleg tega normalni pritiski tipk ne motijo prikaza.

Imas pa tudi opcijo tipke brat z interuptom ko se spremeni vrednost na njih.
V tem primeru ne rabis delayev ker se sprozi samo pri prehodu iz 0 v 1 recimo

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
matejmihelcic
Član
Član



Pridružen-a: Sob 14 Apr 2012 10:32
Prispevkov: 16
Aktiv.: 0.11
Kraj: Grahovo

PrispevekObjavljeno: Čet Apr 26, 2012 9:48 pm    Naslov sporočila:   Odgovori s citatom

sicer ni v c-ju, je pa ena rešitev brez interuptov, ko pritisneš tipko se števec poveča program pa skoči iz zanke šele ko tipko spustiš


tipka.txt
 Opis:

Download
 Ime datoteke:  tipka.txt
 Velikost datoteke:  150 Bytov
 Downloadano:  12 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.18
Kraj: Domžale

PrispevekObjavljeno: Tor Jun 26, 2012 8:54 pm    Naslov sporočila:   Odgovori s citatom

Zakaj mi ta funkcija za branje tipke, da bi povečal samo za +1 dela v preprostem programu, v bolj kompliciranem z interrupti pa ne?

Koda:
if(PORTD.F0==1 && t==0){
Delay_ms(50);
t=1;
count++;
        }
if(PORTD.F0==0 && t==1){
t=0;
        }

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Tor Jun 26, 2012 10:18 pm    Naslov sporočila:   Odgovori s citatom

hahalolek je napisal/a:
Zakaj mi ta funkcija za branje tipke, da bi povečal samo za +1 dela v preprostem programu, v bolj kompliciranem z interrupti pa ne?
Glede na napisano, ni mogoče podati odgovora. Potrebno je povedati še, kako sta deklarirani spremenljivki "t" in "count", ter kaj počne funkcija Delay_ms(...).

Oz. mogoče bom zadel: tisto spremenljivko, ki jo uporabljaš tudi v interruptu, deklariraj kot "volatile".
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3 ... 10, 11, 12, 13  Naslednja
Stran 11 od 13

 
Pojdi na:  
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