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 

Kako definirti potenciometer v c programu (pickit2)

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



Pridružen-a: Tor 21 Maj 2013 11:51
Prispevkov: 41
Aktiv.: 0.28
Kraj: Maribor

PrispevekObjavljeno: Pon Jun 03, 2013 11:09 am    Naslov sporočila:  Kako definirti potenciometer v c programu (pickit2) Odgovori s citatom

Zdravo
Obračam se na vas s prošnjo, ali mi lahko kdo pomaga pri tem programu.

Rad bi z nastavitvijo potenciometra prižigal led luč, kjer bo prej nastavljena neka prednost in pri tisti vrednosti se bo prižgala.
NPR: imam 5V napajanje in ko naprimer od 0-5V presežem 2 V se mi prižge LED lučka.
Nevem kako definirat analogno branje, ali imam to sploh prav kaj sem naredil?

Koda:
#define S1 RB6
#define S2 RB5
#define S3 RB4
#define LED1   RC0
#define LED2   RC1
#define LED3   RC2
#define ADC RA2


// KLICANJE FUNKCIJ
#include <htc.h>
#include "potentimeter_lucka.h"

// INICIALIZACIJA VHODNO IZHODNIH ENOT
void init_io(void)
{
TRISB6=1;
TRISB5=1;
TRISB4=1;
TRISC0=0;
TRISC1=0;
TRISC2=0;
ANSEL=0b00000100;
ANSELH=0;
}

void main()
{
   init_io();  // klic inicializacije
   

do{
adc(4);
   
      if(adc<=100)
       {
      LED1=1;
      }
while(1)
}
}

_________________
LP Mico
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.: 12.37
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pon Jun 03, 2013 11:46 am    Naslov sporočila:   Odgovori s citatom

Kaj pa imaš v funkciji adc(4)?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mico22
Član
Član



Pridružen-a: Tor 21 Maj 2013 11:51
Prispevkov: 41
Aktiv.: 0.28
Kraj: Maribor

PrispevekObjavljeno: Pon Jun 03, 2013 12:33 pm    Naslov sporočila:   Odgovori s citatom

to je napaka, ne vem kak naj definiram pa sem nekaj sam poizkusa po nekem programu
_________________
LP Mico
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
b0ha
Član
Član



Pridružen-a: Sre 14 Nov 2012 23:44
Prispevkov: 33
Aktiv.: 0.22
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jun 03, 2013 2:11 pm    Naslov sporočila:   Odgovori s citatom

Najbolje da poiščeš kak primer na internetu.

adc vrednosti zgleda, da nimaš definirane v vrstici:
adc<=100

Prav tako ne vidim kje imaš adc() funkcijo.

Kaj pa je v datoteki "potentimeter_lucka.h" ?
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.42

PrispevekObjavljeno: Pon Jun 03, 2013 2:41 pm    Naslov sporočila:   Odgovori s citatom

b0ha je napisal/a:
Najbolje da poiščeš kak primer na internetu.

NE. Najbolje bo, da vzameš datasheet mikrokrmilnika v roke in naštudiraš delovanje. Iz primera boš mogoče dobil delujoč program, ampak še vedno ne boš imel pojma, kaj se dejansko dogaja.

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



Pridružen-a: Sre 14 Nov 2012 23:44
Prispevkov: 33
Aktiv.: 0.22
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jun 03, 2013 2:52 pm    Naslov sporočila:   Odgovori s citatom

V mislih sem imel bolj primer z razlago oz. vodič (tutorial) za začetnike.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mico22
Član
Član



Pridružen-a: Tor 21 Maj 2013 11:51
Prispevkov: 41
Aktiv.: 0.28
Kraj: Maribor

PrispevekObjavljeno: Pon Jun 03, 2013 2:53 pm    Naslov sporočila:   Odgovori s citatom

Enostavno je rečti, če se pa postaviš v mojo kožo in boš videl da mi ang jezik ne leži, potem je pa težko brati datasheet. Poskusim se trudit, sam žal dostikrat omembne informacije prevajalniki prevedejo narobe.

Spodaj sem priloža vse kaj sem storil, je iz enega primera vzeto, sam zgleda ne definiram pravilno, tak pise kolko razumem Smile

Hvala za pomoč



potentimeter_lucka.h
 Opis:

Download
 Ime datoteke:  potentimeter_lucka.h
 Velikost datoteke:  153 Bytov
 Downloadano:  7 krat


potentimeter_lucka.h
 Opis:

Download
 Ime datoteke:  potentimeter_lucka.h
 Velikost datoteke:  153 Bytov
 Downloadano:  5 krat


_________________
LP Mico
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mico22
Član
Član



Pridružen-a: Tor 21 Maj 2013 11:51
Prispevkov: 41
Aktiv.: 0.28
Kraj: Maribor

PrispevekObjavljeno: Pon Jun 03, 2013 3:13 pm    Naslov sporočila:   Odgovori s citatom

Kot sem opaza ta program nebo deloval ker je napisani za pica 18
Tak da program ni vredu.
lp

_________________
LP Mico
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.: 12.37
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pon Jun 03, 2013 4:02 pm    Naslov sporočila:   Odgovori s citatom

Na začetku smo vsi imeli težave z razumevanjem. Tudi, če si znal nekaj angleško, še vseeno nisi razumel podatkovnega lista. Z urami gledanja in eksperimentiranja pa zadeva steče.
Nazaj k problemu:
Tista adc(4); funkcija, ki jo kličeš verjetno v tvojem programu ni definirana (mislim, da ne obstaja v tvojem projektu še kakšna datoteka adc.c?) Torej spisat moraš funkcijo, ki bo zagnala ADC pretvorbo in vrnila vrednost le te. Enako kot imaš funkcijo za inicializacijo IO, moraš napisati še funkcijo za adc.
Kako jo napisati? Poglej v podatkovni list tvojega krmilika in najdi AD konverter, tam boš verjetno našel primer v kateri register kaj vpisati in iz katerega kaj brati. Mogoče ne bo v C-ju, bo pa zagotovo v ASM-ju (saj kolkor se spomnim je microchip vedno imel poleg primere).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Pon Jun 03, 2013 4:08 pm    Naslov sporočila:   Odgovori s citatom

Mico22 je napisal/a:
to je napaka, ne vem kak naj definiram pa sem nekaj sam poizkusa po nekem programu
Mico22 je napisal/a:
Enostavno je rečti, če se pa postaviš v mojo kožo in boš videl da mi ang jezik ne leži, potem je pa težko brati datasheet. Poskusim se trudit , sam žal dostikrat omembne informacije prevajalniki prevedejo narobe. Spodaj sem priloža vse kaj sem storil, je iz enega primera vzeto, sam zgleda ne definiram pravilno, tak pise ...
Mico22 je napisal/a:
Kot sem opaza ta program nebo deloval ker je napisani za pica 18
Tak da program ni vredu.
Ali ti tudi programiraš v narečju? d'oh! Shame on you
Tvoji prispevki na forumu so program. Program ne deluje. Trikrat lahko ugibaš, zakaj.

V datasheetu imaš zaporedje ukazov v Zbirniku za nastavitev in branje ADC. V C je možno vstaviti .asm dele kode.

Ne morem se postaviti v tvojo kožo, saj razumem angleško. Če bolje "šprehaš nemšk", si ADC primere poglej na www.sprut.de , primeri so v .asm in C. Jaz pišem programe v .asm.

Potrebuješ primer popolno delujočega programa z ADC, da vidiš sintakso in pravila. Potem ga prirediš za svoj čip in se igraš s spreminjanjem in dodajanjem posameznih vrstic.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jirzy
Neznanec
Neznanec



Pridružen-a: Pet 28 Dec 2012 16:55
Prispevkov: 7
Aktiv.: 0.05
Kraj: LJ

PrispevekObjavljeno: Tor Jun 04, 2013 5:25 pm    Naslov sporočila:   Odgovori s citatom

Kateri compiler in PIC sploh imaš?

Rešeni primeri na internetu so OK, če se potem poglobiš v vsako vrstico in ugotoviš, zakaj je tam in zakaj je taka kot je.

Prej ali slej se boš mogel naučiti brat datasheete, če imaš kakšen resen namen z PICi programirat.

Copy-Paste iz datasheeta za PIC16F887:

1. Configure Port:
 Disable pin output driver (See TRIS register)
 Configure pin as analog
2. Configure the ADC module:
 Select ADC conversion clock
 Configure voltage reference
 Select ADC input channel
 Select result format
 Turn on ADC module
3. Configure ADC interrupt (optional):
 Clear ADC interrupt flag
 Enable ADC interrupt
 Enable peripheral interrupt
 Enable global interrupt(1)
4. Wait the required acquisition time(2)
.
5. Start conversion by setting the GO/DONE bit.
6. Wait for ADC conversion to complete by one of
the following:
 Polling the GO/DONE bit
 Waiting for the ADC interrupt (interrupts
enabled)
7. Read ADC Result
8. Clear the ADC interrupt flag (required if interrupt
is enabled).

Povej česa tu ne razumeš?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Mico22
Član
Član



Pridružen-a: Tor 21 Maj 2013 11:51
Prispevkov: 41
Aktiv.: 0.28
Kraj: Maribor

PrispevekObjavljeno: Sre Jun 05, 2013 8:09 am    Naslov sporočila:   Odgovori s citatom

Hej
Imam pic16f690, upam da je postopek isti.
Bom poskusil s tem postopkom, malo pa še zraven uporabil prevajalnik.

Če bom imel v katerem koraku problem, se oglasim Smile

Hvala

_________________
LP Mico
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mico22
Član
Član



Pridružen-a: Tor 21 Maj 2013 11:51
Prispevkov: 41
Aktiv.: 0.28
Kraj: Maribor

PrispevekObjavljeno: Sre Jun 05, 2013 9:34 am    Naslov sporočila:   Odgovori s citatom

Zdravo

Od tukaj naprej več ne vem :/

Select ADC input channel
 Select result format
 Turn on ADC module

Program ni dobro napisan, ker to je nekaj kaj sem preizkuša.
Zanima me kako se nastava registre do zdaj? Je kaj pravilno?

header file:
#define S1 RB6
#define S2 RB5
#define S3 RB4
#define LED1 RC0
#define LED2 RC1
#define LED3 RC2
#define POTENCIOMETER RA2
// #define ADC

do zdaj imam v programu napisano to:

Koda:

// KLICANJE FUNKCIJ
#include <htc.h>
#include "potentimeter_lucka.h"

// INICIALIZACIJA VHODNO IZHODNIH ENOT
void init_io(void)
{
TRISB6=1; //S1 tipka
TRISB5=1; //S2 tipka
TRISB4=1; //S3 tipka
TRISC0=0; //Led 1
TRISC1=0; //Led 2
TRISC2=0; //Led 3

TRISA2=1; //Vhod za potenciometer A2

ANSELH=0;
ANSEL=0b00000100; // Nastavimo analogni vhod pod A2

ADCON0=0b1000101; // 1 right justified/0 Vdd/ 0010=AN2/1 GO/DONB  conversion cycle/ 1=ADC enabled
ADCON1=0b0010000 // fosc/32 (zakaj 32?)

   
}

void main()
{
   init_io();  // klic inicializacije
    unsigned long RN;
   unsigned int Rez;
   
   while(1)
   {
   LED2=1;
   ADGO=1;
   while (ADGO==1);
    LED2=0;
   Rez = ADRESEL|(ADRESH<<8);
   asm("test nop");
   }

}




hvala že v naprej

_________________
LP Mico
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.: 12.37
Kraj: Lovrenc na P.

PrispevekObjavljeno: Sre Jun 05, 2013 12:24 pm    Naslov sporočila:   Odgovori s citatom

Koda:
;This code block configures the ADC
;for polling, Vdd reference, Frc clock
;and AN0 input.
;
;Conversion start & polling for completion
; are included.
;
BANKSEL ADCON1 ;
MOVLW B’01110000’ ;ADC Frc clock
MOVWF ADCON1 ;
BANKSEL TRISA ;
BSF TRISA,0 ;Set RA0 to input
BANKSEL ANSEL ;
BSF ANSEL,0 ;Set RA0 to analog
BANKSEL ADCON0 ;
MOVLW B’10000001’ ;Right justify,
MOVWF ADCON0 ; Vdd Vref, AN0, On
CALL SampleTime ;Acquisiton delay
BSF ADCON0,GO ;Start conversion
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
BANKSEL ADRESH ;
MOVF ADRESH,W ;Read upper 2 bits
MOVWF RESULTHI ;store in GPR space
BANKSEL ADRESL ;
MOVF ADRESL,W ;Read lower 8 bits
MOVWF RESULTLO ;Store in GPR space

To prepiši v C jezik. Skopiral sem iz http://ww1.microchip.com/downloads/en/DeviceDoc/41262c.pdf
V istem dokumentu imaš opisan instruction set za assembler. Torej kaj pomeni katera inštrukcija v zgornji kodi. To imaš na strani 214.
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group