 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Pon Jun 03, 2013 11:09 am Naslov sporočila: Kako definirti potenciometer v c programu (pickit2) |
|
|
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 |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.37 Kraj: Lovrenc na P.
|
Objavljeno: Pon Jun 03, 2013 11:46 am Naslov sporočila: |
|
|
Kaj pa imaš v funkciji adc(4)?
|
|
Nazaj na vrh |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Pon Jun 03, 2013 12:33 pm Naslov sporočila: |
|
|
to je napaka, ne vem kak naj definiram pa sem nekaj sam poizkusa po nekem programu
_________________ LP Mico |
|
Nazaj na vrh |
|
 |
b0ha Član

Pridružen-a: Sre 14 Nov 2012 23:44 Prispevkov: 33 Aktiv.: 0.22 Kraj: Ljubljana
|
Objavljeno: Pon Jun 03, 2013 2:11 pm Naslov sporočila: |
|
|
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 |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.42
|
Objavljeno: Pon Jun 03, 2013 2:41 pm Naslov sporočila: |
|
|
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 |
|
 |
b0ha Član

Pridružen-a: Sre 14 Nov 2012 23:44 Prispevkov: 33 Aktiv.: 0.22 Kraj: Ljubljana
|
Objavljeno: Pon Jun 03, 2013 2:52 pm Naslov sporočila: |
|
|
V mislih sem imel bolj primer z razlago oz. vodič (tutorial) za začetnike.
|
|
Nazaj na vrh |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Pon Jun 03, 2013 2:53 pm Naslov sporočila: |
|
|
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
Hvala za pomoč
Opis: |
|
 Download |
Ime datoteke: |
potentimeter_lucka.h |
Velikost datoteke: |
153 Bytov |
Downloadano: |
7 krat |
Opis: |
|
 Download |
Ime datoteke: |
potentimeter_lucka.h |
Velikost datoteke: |
153 Bytov |
Downloadano: |
5 krat |
_________________ LP Mico |
|
Nazaj na vrh |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Pon Jun 03, 2013 3:13 pm Naslov sporočila: |
|
|
Kot sem opaza ta program nebo deloval ker je napisani za pica 18
Tak da program ni vredu.
lp
_________________ LP Mico |
|
Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.37 Kraj: Lovrenc na P.
|
Objavljeno: Pon Jun 03, 2013 4:02 pm Naslov sporočila: |
|
|
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 |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pon Jun 03, 2013 4:08 pm Naslov sporočila: |
|
|
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?
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 |
|
 |
Jirzy Neznanec

Pridružen-a: Pet 28 Dec 2012 16:55 Prispevkov: 7 Aktiv.: 0.05 Kraj: LJ
|
Objavljeno: Tor Jun 04, 2013 5:25 pm Naslov sporočila: |
|
|
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 |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Sre Jun 05, 2013 8:09 am Naslov sporočila: |
|
|
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
Hvala
_________________ LP Mico |
|
Nazaj na vrh |
|
 |
Mico22 Član

Pridružen-a: Tor 21 Maj 2013 11:51 Prispevkov: 41 Aktiv.: 0.28 Kraj: Maribor
|
Objavljeno: Sre Jun 05, 2013 9:34 am Naslov sporočila: |
|
|
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 |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.37 Kraj: Lovrenc na P.
|
Objavljeno: Sre Jun 05, 2013 12:24 pm Naslov sporočila: |
|
|
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 |
|
 |
|
|
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
|