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 ... 9, 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
vitez93
Član
Član



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

PrispevekObjavljeno: Sob Feb 26, 2011 9:09 pm    Naslov sporočila:   Odgovori s citatom

Potrebujem i2c komunikacijo pa mi ne uspe. Imam Silvovo veliko uro in krmilil bi jo z zaenkrat 16f690, potem pa 16f628a. Zaenkrat poizkušam pač nekaj poslati na vodilo in opazovati z osciloskopom. Pa mi ne uspe. Imam pa CCS prevajalnik. Kje bi lahko videl preveden program v ASM?
Če simuliram program pri i2c_write(); skoči na #use i2c in se tam zacikla. Sploh se nič ne piše na vodilo.

Koda:
#include <16F690.h>

#FUSES XT, NOWDT, NOPUT, MCLR, NOPROTECT, NOBROWNOUT, INTRC_IO, NOIESO, NOFCMEN,
#use delay(clock=4M)

#use i2c(master, sda=PIN_B6, scl=PIN_B5, FORCE_SW)     // Configure Device as Master
 


void main()
{
i2c_start();
i2c_write(200);

   while(1); 
   {
   }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.86
Kraj: Koroška-Mežica

PrispevekObjavljeno: Ned Feb 27, 2011 12:52 am    Naslov sporočila:   Odgovori s citatom

Koda:
while(1);{}

Tukaj ni podpičja.. samo "while(1){}"

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
vitez93
Član
Član



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

PrispevekObjavljeno: Pon Feb 28, 2011 5:52 pm    Naslov sporočila:   Odgovori s citatom

Ja hvala sem popravil. MPLAB mi javi, da se program zacikla in da naj preverim, če imam izklopljen WDT. Imam. Nevem, zakaj se program tam zacikla. Kje bi pa lahko videl prevedeno kodo v zbirniku?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.07

PrispevekObjavljeno: Pon Feb 28, 2011 7:01 pm    Naslov sporočila:   Odgovori s citatom

Preveden program lahko vidiš z "view->disassembly listing". Sicer se pa program "obesi", ker na naslovu 0x1b-0x1c čaka, da se SCL vrne nazaj na "1". Če to simuliraš, potem gre program naprej in se zacikla pri while(1).

btw nimaš pravih pinov nastavljenih za I2C, prav tako imaš hkrati XT in INTRC_IO... odloči se, kaj bi rad Wink

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
vitez93
Član
Član



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

PrispevekObjavljeno: Pon Feb 28, 2011 9:15 pm    Naslov sporočila:   Odgovori s citatom

Hvala za odgovor.
Ko sem našel ASM kodo sem takoj videl za kaj se gre. Najbolj zanimivo je bilo pa to, ko sem rešil program in priklopil je delalo iz prve. Edino en segment ne dela.
Glede tiste nastavitve oscilatorja pa sploh nisem videl in je vseeno delalo.Very Happy
Še koda v C če kdo rabi:
Koda:
#include <16F690.h>

#FUSES , NOWDT, NOPUT, MCLR, NOPROTECT, NOBROWNOUT, INTRC_IO, NOIESO, NOFCMEN, NOWDT,
#use delay(clock=4M)
#use i2c(master, sda=PIN_B6, scl=PIN_B5, FAST=1000)     // Configure Device as Master
int naslov = 0x70;
int desetice = 8;
int enice = 6;
int desetinke = 4;
int stotinke = 7;
int izpis_1;
int izpis_2;
int izpis_3;
int izpis_4;
int control = 0b00010111;
int x;

int pretvori(int x);
void poslji(data);
void main()
{
   
   izpis_1 = pretvori(desetice);
   izpis_2 = pretvori(enice);
   izpis_3 = pretvori(desetinke);
   izpis_4 = pretvori(stotinke);
   bit_set(izpis_4, 0);
   i2c_start();    // Start condition
   i2c_write(naslov);
   i2c_write(0x00);
   i2c_write(control);
   i2c_write(izpis_2);
   i2c_write(izpis_3);
   i2c_write(izpis_4);
   i2c_write(izpis_1);
   i2c_stop();
   
   while(1)  //  Neskonča zanka
   {}
}

int pretvori(int x)
   {
   switch (x)  {
         case 0: return(0b11101110);
               break;
         case 1: return(0b01001000);
               break;
         case 2: return(0b11010110);
               break;
         case 3: return(0b11011010);
               break;
         case 4: return(0b01111000);
               break;
         case 5: return(0b10111010);
               break;
         case 6: return(0b10111110);
               break;
         case 7: return(0b11001000);
               break;
         case 8: return(0b11111110);
               break;
         case 9: return(0b11111010);
               break;
         }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
jajo
Član
Član



Pridružen-a: Tor 01 Dec 2009 21:45
Prispevkov: 103
Aktiv.: 0.57
Kraj: Maribor

PrispevekObjavljeno: Pon Apr 11, 2011 6:23 pm    Naslov sporočila:   Odgovori s citatom

Zdravo

Tukaj sem videl ogromno povezav za knjige iz katerih se lahko učiš c jezik pa me zanima katera bi bila najprimernejša za učenje od začetka. Pravzaprav, da bi bila takšna da bi skozi programiranje pica spoznaval c od začetka?

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



Pridružen-a: Sre 21 Jan 2009 16:30
Prispevkov: 220
Aktiv.: 1.15
Kraj: Maribor

PrispevekObjavljeno: Tor Apr 12, 2011 2:06 pm    Naslov sporočila:   Odgovori s citatom

Priporočam:

Programming 16-Bit PIC Microcontrollers in C: Learning to Fly the PIC 24 (Embedded Technology)

http://www.amazon.com/Programming-16-Bit-PIC-Microcontrollers-Technology/dp/0750682922

LP
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.47

PrispevekObjavljeno: Tor Apr 12, 2011 3:21 pm    Naslov sporočila:   Odgovori s citatom

Mogoče se je najlažje naučiti ob preučevanju primerov. Knjige so mnogokrat preobsežne in ti vzamejo precej časa, volje in energije.
Začneš z lažjimi primeri (Blink LED) in nadaljuješ z težjimi... Mnogo primerov boš našel v gradivu raznih demo plošč.
Moraš vedeti, da znanje programiranja v C-ju ni znaje programiranja mikrokontrolerjev. Vsekakor pomaga poznati osnovne funkcije C knjižnic, se pa da mnogo narediti tudi brez tega, sploh na začetku. Funkcije iz stdio.h in podobno lahko sproti spoznavaš kasneje.
Bolj težavno bo mogoče zbrati na kup vse rutine za razno periferijo - standardne gradnike programa. Ko imaš to enkrat v lasti in jih znaš uporabljati, je programiranje samo še copy-paste iz raznih že obstoječih projektov in vezanje vsega skopiranega v novo smiselno celoto.

No ja, mogoče preveč daleč razlagam. Za enkrat si poišči primere in ne se bat eksperimentirat. S poskusi se boš največ naučil.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jajo
Član
Član



Pridružen-a: Tor 01 Dec 2009 21:45
Prispevkov: 103
Aktiv.: 0.57
Kraj: Maribor

PrispevekObjavljeno: Sre Apr 13, 2011 1:13 pm    Naslov sporočila:   Odgovori s citatom

Pozna mogoče kdo kakšno internetno stran na keteri bi bili kakšni preprosti primeri od utripanja ledic pa do...

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



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.86
Kraj: Koroška-Mežica

PrispevekObjavljeno: Sre Apr 13, 2011 2:56 pm    Naslov sporočila:   Odgovori s citatom

Pa dobro a si delaš norca, ali še res nisi kdaj brskal po internetu?
_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
xsyt
Član
Član



Pridružen-a: Sre 28 Maj 2008 22:19
Prispevkov: 1346
Aktiv.: 6.73
Kraj: Slov.Bistrica

PrispevekObjavljeno: Sre Apr 13, 2011 3:14 pm    Naslov sporočila:   Odgovori s citatom

Klik! Dancing
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.52
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Sob Apr 16, 2011 1:18 pm    Naslov sporočila:   Odgovori s citatom

Lep pozdrav,

malo sem zgubljen okrog teh konfiguracijskih bitov za 16F628 PIC v mikroC, nisem našel kar bi mi povedalo kaj naj bi pomenilo HS, XT pri oscilatorju, kako nastaviti te bite za osnoven zagon, tipka, LCD.

Prosil bi za kakšen vaš primer nastavitev.

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
red_mamba
Član
Član



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

PrispevekObjavljeno: Sob Apr 16, 2011 1:55 pm    Naslov sporočila:   Odgovori s citatom

XT je kristal pod 4Mhz
vse kar je nad tem je HS (high speed)

Imaš pa še HS_PLL način ki ti uro kristala pomnoži s 4 znotraj mikrokontrolerja.
Paziti moraš samo da ne prekoračiš s tem frekvence 40MHz, torej je v tem primeru lahko max kristal 10MHz.

Imaš še opcijo notranjega osilatorja.

Nastavljanje se pa malenkost razlikuje med posameznimi družinami (recimo 16F, 18F, 24H..). Kar je odvisno tudi od prevajalnika, ki ga uporabljaš.

recimo Pic16F1928, HiTec prevajalnik
Koda:

#if WDTSENSOROFF
__CONFIG(FOSC_INTOSC & WDTE_ON & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_ON & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF);
#else
__CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_ON & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF);
#endif
__CONFIG(WRT_OFF & PLLEN_ON & STVREN_OFF & BORV_25 & LVP_OFF);


pic18F4550 (z internim 96Mhz oscilatorjem za USB)
Koda:

/** CONFIGURATION **************************************************/

        #pragma config PLLDIV   = 2         // (8 MHz crystal)
        #pragma config CPUDIV   = OSC1_PLL2   
        #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
        #pragma config FOSC     = HSPLL_HS
        #pragma config FCMEN    = OFF
        #pragma config IESO     = OFF
        #pragma config PWRT     = OFF
        #pragma config BOR      = ON
        #pragma config BORV     = 3
        #pragma config VREGEN   = ON      //USB Voltage Regulator
        #pragma config WDT      = OFF
        #pragma config WDTPS    = 32768
        #pragma config MCLRE    = ON
        #pragma config LPT1OSC  = OFF
        #pragma config PBADEN   = OFF
//      #pragma config CCP2MX   = ON
        #pragma config STVREN   = ON
        #pragma config LVP      = OFF
//      #pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming
        #pragma config XINST    = OFF       // Extended Instruction Set
        #pragma config CP0      = OFF
        #pragma config CP1      = OFF
//      #pragma config CP2      = OFF
//      #pragma config CP3      = OFF
        #pragma config CPB      = OFF
//      #pragma config CPD      = OFF
        #pragma config WRT0     = OFF
        #pragma config WRT1     = OFF
//      #pragma config WRT2     = OFF
//      #pragma config WRT3     = OFF
        #pragma config WRTB     = OFF       // Boot Block Write Protection
        #pragma config WRTC     = OFF
//      #pragma config WRTD     = OFF
        #pragma config EBTR0    = OFF
        #pragma config EBTR1    = OFF
//      #pragma config EBTR2    = OFF
//      #pragma config EBTR3    = OFF
        #pragma config EBTRB    = OFF


Pic18F8722
Koda:

#pragma config OSC = HSPLL //HSPLL                  // Clock > 1MHz
#pragma config FCMEN = OFF            // Fail safe clock monitor
#pragma config IESO = OFF               // Internal - External Oscilator Switch over
#pragma config PWRT = ON //ON               // Power up Timer
#pragma config BOREN = OFF            // Brown out reset      
#pragma config WDT = ON //ON               // Watchdog timer
#pragma config WDTPS = 4096 //2048
#pragma config MODE = MC //EM               // Processor mode selection - Extended Microcontroller mode
#pragma config ADDRBW = ADDR16BIT   // External bus address with - 16 bit
#pragma config DATABW = DATA8BIT   // External bus data with - 8 bit
#pragma config WAIT = OFF               // External bus data wait (ON / OFF)
//#pragma config MCLR = OFF            // MCLR Enable / Disable
#pragma config LPT1OSC = OFF         // T1 oscillator enable
#pragma config STVREN = OFF            // Stack Overflow reset
#pragma config LVP = OFF               // Low voltage programming
#pragma config XINST = OFF            // XINST enable
#pragma config DEBUG = OFF            // Background Debugger enable
//#pragma config STVR = OFF


Pic24HJ64gp204
Koda:

#if defined (__PIC24F__)

_CONFIG2(IESO_OFF & FNOSC_PRIPLL & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_HS)
_CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & ICS_PGx1 & FWDTEN_OFF)   

#elif defined (__PIC24H__)


Aja BTW: v datasheet-ih so tele zadeve z oscilatorji dobro razložene, samo najti je treba potem ukaze od prevajalnika ki jih tudi zimplementira Smile

_________________
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
red_mamba
Član
Član



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

PrispevekObjavljeno: Sob Apr 16, 2011 1:59 pm    Naslov sporočila:   Odgovori s citatom

pozabil dopisati opombo pri 24H družini kjer lahko določaš izhode perifernim enotam.

omenjeni uC ima namreš možnosti ISP programirnja na 3 različnih parih ISP pinov.

in s "ICS_PGx1" določimo da so to PGM1, PGC1 in PGD1, da ne bo kdo Shocked zakaj mu ne zazna mikrokontrollerja Mr. Green

_________________
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
MarkoM
Član
Član



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

PrispevekObjavljeno: Sob Apr 16, 2011 7:09 pm    Naslov sporočila:   Odgovori s citatom

red_mamba je napisal/a:
XT je kristal pod 4Mhz
vse kar je nad tem je HS (high speed)

Imaš pa še HS_PLL način ki ti uro kristala pomnoži s 4 znotraj mikrokontrolerja.
Paziti moraš samo da ne prekoračiš s tem frekvence 40MHz, torej je v tem primeru lahko max kristal 10MHz.


Ravno sedaj delam en "fuš" s pic18f458, ker je pač še stara zaloga (to je moj zadnji fuš s pici, ker imajo IDE v totalnem k...., malo boljši notepad) in sem nastavil pomotoma na 4xfosc z zunanjim 20MHz kristalom. Stvar je delovala normalno, čeprav, naj bi bil ta pic do 40MHz.
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 ... 9, 10, 11, 12, 13  Naslednja
Stran 10 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: 265 dni


Powered by phpBB © 2001, 2005 phpBB Group