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 

12F675 začetniška težava
Pojdi na stran 1, 2  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
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Čet Okt 09, 2008 10:03 pm    Naslov sporočila:  12F675 začetniška težava Odgovori s citatom

S pici sem šele dobro začel! Prvi program sem v Cju napisal danes in ga počasi nadgrajeval! Stvar je taka, da sem začel s picom 12F675. Napisal sem program utripanja lučk, ki deluje. zadevo sem nadgradil, da se lučke vozijo gor in dol, kjer se pojavi problem, da se lučka na portu GP3 nikakor ne prižge!


void main() {
ANSEL = 0; // Configure AN pins as digital
CMCON = 7; // Turn off the comparators
TRISIO= 0;
// configure pins of GPIO as output
;
do {
GPIO = 0;
Delay_ms(1000);
GPIO = 0xF1;
Delay_ms(1000);
GPIO = 0xF2;
Delay_ms(1000);
GPIO = 0xF4;
Delay_ms(1000);
GPIO = 0xF8; <----- napaka oziroma težava
Delay_ms(1000);
GPIO = 0xF4;
Delay_ms(1000);
GPIO = 0xF2;
Delay_ms(1000);
GPIO = 0xF1;
Delay_ms(1000);
} while(1);
}

Zanima me, kje je napaka, če sploh je in kaj pomeni prvi F oziroma kaj določa? drugo številko razumem!! Hvala za pomoč!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
l-note
Član
Član



Pridružen-a: Sre 07 Jul 2004 12:32
Prispevkov: 100
Aktiv.: 0.42

PrispevekObjavljeno: Čet Okt 09, 2008 10:18 pm    Naslov sporočila:   Odgovori s citatom

Na strani 4 tegale datasheeta boš opazil, da GP3 lahko deluje samo kot vhod, od tod težava.

Število predstavljeno v šestnajstiškem zapisu (npr. 0xF1) predstavlja vrednost 8-bitnega števila. Tako prva cifra, v tem primeru F, predstavlja zgornje/leve štiri bite, desna cifra pa spodnje/desne 4 bite. Za lažje razumevanje odpri kalkulator v Windowsih, pod View nastavi Scientific. Nato lahko izbiraš med razlišnimi zapisi števil (Hex = šestanjstiški zapis, Dec = decimalni/desetiški, Bin = binarni). Poskušaj preklapljati med njimi in opazuj kako se spreminja zapis števila, ki ga vneseš.


Nazadnje urejal/a l-note Čet Okt 09, 2008 10:25 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Čet Okt 09, 2008 10:23 pm    Naslov sporočila:   Odgovori s citatom

se oproščam! Nisem bil pogoren na puščice! Kako pa potem posebaj vklapljam GP5 in GP4? pišem 0x10 oz 0x20? ali je prvi F kaj drugega?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
l-note
Član
Član



Pridružen-a: Sre 07 Jul 2004 12:32
Prispevkov: 100
Aktiv.: 0.42

PrispevekObjavljeno: Čet Okt 09, 2008 10:29 pm    Naslov sporočila:   Odgovori s citatom

Za začetek ti bo mogoče lažje, če namesto šestajstiškega zapisa uporabljaš kar binarnega.
Primer: 0b11110000 -> skrajno desna cifra predstavlja pin 0, leva pa pin 7.
V tem primeru imajo pini od 0-3 vrednost 0, pini od 4-7 pa vrednost 1
Na ta način boš točno videl kateri pin je postavljen na 1, kateri pa na 0.

Pa še tole, PIC 12F675 ima samo 6 uporabnih pinov, torej v zapisu 0b11110000 skrajno levi dve enici nimata nobenega učinka, tako da njuna vrednost ni pomembna (je lahko 0 ali pa 1).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pet Okt 10, 2008 10:44 am    Naslov sporočila:   Odgovori s citatom

Najprej najlepša hvala za vse odgovore! Zanima me še, če obstaja možnost da kje preberem vrednost, koliko časa je preteklo od kar se je prižgal pic, kot je to možno v razvojnem okoljuš-arm, kjer obstaja funkcija clock().
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matijap
Član
Član



Pridružen-a: Sob 05 Jun 2004 23:24
Prispevkov: 230
Aktiv.: 0.97
Kraj: Žirovnica, LJ

PrispevekObjavljeno: Pet Okt 10, 2008 10:57 am    Naslov sporočila:   Odgovori s citatom

Kaj takšnega si boš moral kar sam napisati, uporabi en timer in prekinitve.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pet Okt 10, 2008 1:21 pm    Naslov sporočila:   Odgovori s citatom

Ne razumem ravno Confused Po datasheetu sem listal in če sem prav razumel moram v OPTION_REG pobrisat bit 5 naprej pa neznam! Uporabljam interni oscilator ki teče na 4Mhz kar po predvidevanjih pomeni, da en cikel opravi v 1/4000000
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



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

PrispevekObjavljeno: Pet Okt 10, 2008 4:24 pm    Naslov sporočila:   Odgovori s citatom

Malo bolj pozorno preglej datasheet... med drugim piše, da interni clock znaša fosc/4, torej je en cikel dolg ravno 1us pri 4MHz.

Sicer bi ti za začetek priporočal kaj večjega, recimo 16F628A ali 16F876A.

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



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pet Okt 10, 2008 8:05 pm    Naslov sporočila:   Odgovori s citatom

@gumby na žalost mi ne uspe usposobit 16F628A!
void main()
{TRISA=0b11111111;

do{

PORTA=0b11111111;
Delay_ms(1000);
PORTA=0b00000000;}
while(1);

}

S to kodo se nič ne zgodi, samo ledica rahlo sveti!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
l-note
Član
Član



Pridružen-a: Sre 07 Jul 2004 12:32
Prispevkov: 100
Aktiv.: 0.42

PrispevekObjavljeno: Sob Okt 11, 2008 12:23 am    Naslov sporočila:   Odgovori s citatom

Citiram:
TRISA=0b11111111;

Tale vrstica nastavi pine na vhod.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Sob Okt 11, 2008 2:08 am    Naslov sporočila:   Odgovori s citatom

Hvala! sedaj deluje. Delam tako banalne napake Sad
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Čet Okt 16, 2008 10:11 pm    Naslov sporočila:   Odgovori s citatom

Ponovno imam težavo! Stvar je taka, da imam spisan program in ko bi pritisniv gumb bi se del programa še izvajal del pa ne! napisal sem if stavek if((GPIO&&0b00010000)==0) in v tem primeru je gumb pritisnjen in naj bi se del kode izvajal! Zgodi pa se nič! V čem bi lahko bil problem?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



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

PrispevekObjavljeno: Pet Okt 17, 2008 6:14 pm    Naslov sporočila:   Odgovori s citatom

Saj ločiš operatorja && in & ane? Wink
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Pet Okt 17, 2008 7:31 pm    Naslov sporočila:   Odgovori s citatom

REs je:S sem malo površen!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jabcek
Član
Član



Pridružen-a: Pet 14 Nov 2008 20:26
Prispevkov: 40
Aktiv.: 0.20
Kraj: Liboje

PrispevekObjavljeno: Ned Jun 07, 2009 9:26 am    Naslov sporočila:   Odgovori s citatom

Zdravo,

bi mi mogoče lahko kdo povedal, kaj delam narobe v spodnjem programu, namreč ko v stimulusu nastavim GP4 in GP5 na toggle, ter jih pritisnem mi ne gre v if stavek. Uporabljam PIC 12F675.

Pravtako pa imam problem pri real pic simulator-ju, ko loadam .hex file mi takoj na začetku napiše out of code.

Ko sem probal s PIC 12F683 mi je delalo pravilno.

#include <pic.h>

#define SenzorL GPIO4 //Levi senzor
#define SenzorD GPIO5 //Desni senzor

void inicializacija(void)
{
//CMCON0
CM0=1;
CM1=1;
CM2=1;

//ANSEL
ANS0=0;
ANS1=0;
ANS2=0;
ANS3=0;

//ADCON0
ADON=0;

//SCS = 1;
//TMR1CS=0;

GPIO = 0b00000000; // Na vse izhode postavimo 0

TRISIO=0b00111000; // Vsi prikljueki kot izhodi
}

int main()
{
inicializacija(); //inicializirajmo potrebno periferijo
while (1)
{
if(SenzorL && SenzorD) //gremo naprej
{
GPIO0=1;
GPIO1=1;
}
else //stop
{
GPIO0=0;
GPIO1=0;
}
}

}

Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
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 1, 2  Naslednja
Stran 1 od 2

 
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: 497 dni


Powered by phpBB © 2001, 2005 phpBB Group