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 

Nastavljanje posameznega bita

 
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
MEK
Član
Član



Pridružen-a: Pon 29 Nov 2004 16:58
Prispevkov: 84
Aktiv.: 0.35
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 07, 2009 3:42 pm    Naslov sporočila:  Nastavljanje posameznega bita Odgovori s citatom

Zdravo!

Že cel dan se ukvarjam s tem problemom in počasi zgubljam živce. Sem namreč bolj kot ne začetnik programiranja v C-ju, medtem ko sem z asemblerjem že seznanjen.

Problem je sledeč:
Rad bi nastavil oz. zbrisal točno določen bit na PORT-u B. Ali pa "prebral" vrednost določenega bita PORT-a A, ki bi ga uporabljal kot vhod.

Poskusil sem:
PORTAbits.RA1
PORTA.1
RA1
...noben od teh ukazov mi ne prime. Napaka: ... undefined identifier "PORTAbits"

Ne vem kje delam napako...
Uporabljam MPLAB IDE v. 8.36.00.00 in HI-TECH C PRO for the PIC10-12-16 MCU Family V9.65PL1
Programiram PIC16F628A.

Prosim za pomoč...

_________________
lp, MEK
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Okt 07, 2009 4:54 pm    Naslov sporočila:   Odgovori s citatom

output:
z masko:
Koda:

// Izhodi
#define      c_Dir      0b00000001

void MOTOR_FWD (void)
   {
   PORTC |= c_Dir;
   }

void MOTOR_REV (void)
   {
   PORTC &= ~c_Dir;
   }


ali pa s shiftanjem:
Koda:
   PORTD |= (1<<PinNumber);

Podobno je za input.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
MEK
Član
Član



Pridružen-a: Pon 29 Nov 2004 16:58
Prispevkov: 84
Aktiv.: 0.35
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 07, 2009 6:53 pm    Naslov sporočila:   Odgovori s citatom

??? Prepričan sem da obstaja bolj enostaven način, ker navedeni način je bolj zakompliciran kot v asemblerju.

Na C sem preskočil ravno zaradi enostavnejšega programiranja Smile

Kaj pa je z ukazi, ki sem jih omenil zgoraj? Zakaj to ne funkcionira, ker tak način upravljanja z biti sem opazil že v večih primerih kod... Mogoče drug compailer?

_________________
lp, MEK
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.04
Kraj: Novo mesto

PrispevekObjavljeno: Sre Okt 07, 2009 6:56 pm    Naslov sporočila:   Odgovori s citatom

Program se, žal, ne bo napisal sam. Pray

Preštudiraj Alyjeva primera.
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: Sre Okt 07, 2009 7:02 pm    Naslov sporočila:   Odgovori s citatom

Preberi si malo te zapiske, kjer je razloženo postavljanje, brisanje bita link
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
janiP
Član
Član



Pridružen-a: Čet 23 Okt 2008 23:00
Prispevkov: 145
Aktiv.: 0.72
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 07, 2009 9:07 pm    Naslov sporočila:   Odgovori s citatom

Na Microchipovem compilerju lepo deluje npr. PORTAbits.RA1, samo vključen mora biti header za ustrezen procesor. (To sicer velja za PIC serijo 18 in naprej, za serijo 16 predvidevam, da je isto.)

Ne vem, kako je na HI-TECH-ovem compilerju, samo gotovo mora biti kaj podobnega. Malo poglej v header, ali pa v kakšna navodila.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.32

PrispevekObjavljeno: Sre Okt 07, 2009 9:19 pm    Naslov sporočila:   Odgovori s citatom

Fantje, kar držite se mask in shiftov. Si boste prihranili marsikatero težavo zaradi "muh" prevajalnikov.
_________________
Answers: $1, Short: $5, Correct: $25, dumb looks are still free.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.04
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Sre Okt 07, 2009 10:07 pm    Naslov sporočila:   Odgovori s citatom

Glitch je napisal/a:
Fantje, kar držite se mask in shiftov. Si boste prihranili marsikatero težavo zaradi "muh" prevajalnikov.

Res je !
Take in drugačne dobrote posameznega prevajalnika se sicer lahko uporablja, a je potrebno vedeti, da je to le alternativa, ne pa osnovni C. Ob prehodu na drug prevajalnik zna namreč to človeku krepko izpiti živce. Preizkušeno !
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
MEK
Član
Član



Pridružen-a: Pon 29 Nov 2004 16:58
Prispevkov: 84
Aktiv.: 0.35
Kraj: Ljubljana

PrispevekObjavljeno: Čet Okt 08, 2009 12:41 am    Naslov sporočila:   Odgovori s citatom

Delno rešeno...

Problem je bil, da nisem imel vključenih vseh očitno potrebnih knjižnic. Ko sem dodal le-te, je začel delovat "ukaz" RA0 (kar je pin0 na portu A). PORTAbits.RA0 ne deluje.

Drug problem pa je bil, da je bil očitno portA definiran kot komparator in ne kot digital I/O (po defaultu je očitno vklopljen). Tako da, ko sem disableal komparator je stvar funkcionirala.

Še vedno pa ne vem zakaj mi TRISA postavi na vrednost 000110111, kljub temu da jo jaz postavim na 000010111... vsaj tako je razvidno pri debagiranju.


Sicer pa verjamem, da so maske in šiftanje bolj neoporečni.... vendar to kasneje.

_________________
lp, MEK
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 15.99

PrispevekObjavljeno: Čet Okt 08, 2009 6:55 am    Naslov sporočila:   Odgovori s citatom

Za postavljanje in brisanje bitov sem si sestavil tekst v priponki. Vse variante sem tudi sam preizkusil.

Sicer imam to za AVR, ampak osnove so pa enake tudi pri PIC



Postavljanje in brisanje bitov v C.pdf
 Opis:

Download
 Ime datoteke:  Postavljanje in brisanje bitov v C.pdf
 Velikost datoteke:  23.88 KB
 Downloadano:  32 krat

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



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3361
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Okt 08, 2009 11:08 am    Naslov sporočila:  Za hec, kako je to v bascomu: Odgovori s citatom

Za hec, kako je to v bascomu:

Postavljanje bita 4 v portu C

Koda:
Portc.4 = 1


Brisanje pa

Koda:
Portc.4 = 0


številka pina je lahko tudi v spremenljivki recimo

Koda:
Portc.i = 0

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Majster
Član
Član



Pridružen-a: Sob 14 Nov 2009 1:05
Prispevkov: 344
Aktiv.: 1.81
Kraj: Majšperk

PrispevekObjavljeno: Tor Apr 13, 2010 9:31 pm    Naslov sporočila:   Odgovori s citatom

Nevem če sem te pravilno razumel, vednar za output nekega pina uporabiš samo ukaz: "output_high(PIN_A0); ali output_float(PIN_A0); ali output_low(PIN_A0);"
Port A ima pa tudi možnost analognega merjenja, tako da povej natančneje kako želiš izmeriti pin.

_________________
Smith & Wesson — the original point and click interface.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dha
Član
Član



Pridružen-a: Sre 03 Feb 2010 10:59
Prispevkov: 27
Aktiv.: 0.14
Kraj: Lendava

PrispevekObjavljeno: Sre Apr 14, 2010 7:30 am    Naslov sporočila:   Odgovori s citatom

pri Hi-TECH cju je dovolj da vključiš htc.h, v mapi od hi-techa preletiš kjnižnico za tvoj pic in notri najdeš vse pini definirane. pri mojem primeru sem uporabil samo RA0 ali recimo TRISB3 Idea
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
Stran 1 od 1

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


Powered by phpBB © 2001, 2005 phpBB Group