Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Picbasic pitanja za sve sto mi nije jasno

[es] :: Elektronika :: Mikrokontroleri :: Picbasic pitanja za sve sto mi nije jasno

Strane: << < .. 20 21 22 23 24 25 26 27

[ Pregleda: 109467 | Odgovora: 530 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.10.2013. u 13:11 - pre 128 meseci
rsinisa

Pisao sam i tako i problem je sto meni nije jasno zasto pocinje da broji dok jos nije pritisnut taster.
IF PORTA.0=0 THEN
BROJ=BROJ+1
ENDIF
Znaci brojenje bi trebalo da pocne kad porta bude log0 a meni brojenje pocinje odmah dok je porta log1 i to ispisuje na displeju pocevsi od 1 pa nadalje.A bio sam siguran da ce da mi proradi iz prve, j....a zeznuo sam se.
MILAN ANDRIC
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno09.01.2014. u 14:25 - pre 125 meseci
Pozdrav svima.Ima li neko neki primer (gotov kod ili adresu gde se moze naci) kako u picbasic-u napisati program za 16f887 koji daje pwm za most ili polumost i pritom da tu bude odredjeno dead time vreme.NIje mi problem za jedan pwm ali ne znam kako sve to napisati gde idu dva pwm (na pr polumost) i pritom dt vreme.Ako nema nista od primera zmolio bih bar za neko kratko objasnjenje.
MILAN ANDRIC
 
Odgovor na temu

rasoboy
szr kovac

Član broj: 191714
Poruke: 3
*.teol.net.



Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.02.2014. u 12:39 - pre 124 meseci
[quote]Sepa011:
Ako malo bolje analiziras ceo program
Code:
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'* Universal thermostat -25/+75 C.  by R.T.G. van Steenis                  *
'* Compiler : PicBasic Pro 2.45                                            *
'* B0 = Mode switch in (In)            A0 = LCD Enable    (Out)            *
'* B1 = + switch in    (In)            A1 = LCD RS        (Out)            *
'* B2 = - switch in    (In)            A2 = "Warm" Output (Out)            *
'* B3 = Not connected  (Out)           A3 = "Cold" Output (Out)            *
'* B4 = LCD Bit 4      (Out)           A4 = DQ DS1820     (In)             *
'* B5 = LCD Bit 5      (Out)                                               *
'* B6 = LCD Bit 6      (Out)                                               *
'* B7 = LCD Bit 7      (Out            PIC16F628 Code size = 1124 Words    *
'*                                                                         * 
'* Oscillator XP (4 MHz.) - Power up timer enabled - MCR enable            *
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

TRISA= %11110000                        ' RA0..3=Outputs RA4=Input
TRISB= %00000111             ' RB0..RB2=Inputs, RB3..RB7=Outputs
CMCON=7                                 ' Disable comparators

DEFINE LCD_DREG PORTB                   ' LCD on port B
DEFINE LCD_DBIT 4                       ' Data bits B4..B7
DEFINE LCD_RSREG PORTA                  ' RS on PORTA
DEFINE LCD_RSBIT 1                      ' RS on A1 
DEFINE LCD_EREG PORTA                   ' E on PORTA
DEFINE LCD_EBIT 0                       ' E on A0
DEFINE LCD_BITS 4                       ' LCD 4 bit mode
DEFINE LCD_LINES 2                      ' 2 line LCD display

Temperature     Var    Word        ' Temperature storage
TargetTemp    Var    Word        ' Desired Temperature
Hyst        Var    Word        ' Hystereris
V        Var    Word        ' Var. for display
B1              Var     Byte            ' Byte for TargetTemp calculation 
B2              Var     Byte            ' Byte for TargetTemp calculation
Count_Remain     Var     Byte        ' Count remaining
Count_Per_C     Var    Byte        ' Count per degree C
Sign        Var    Byte        ' +/- sign
Mode         Var    Byte        ' 0=Temp. display, 1=Set Temp, 2=Set Hysteresis
DQ        Var    PORTA.4        ' One-wire data pin

DATA 46, 224, 20                        ' Temp MSB, TEMP LSB, Hysteresis DIV 10

PORTA.2=0                               ' Warm Output Low
PORTA.3=0                               ' Cold Output Low
Mode=0                                  ' Temperature display mode  

LCDOUT $FE, 1, $FE, $0C                 ' Clear display, cursor off

Read 0, B1                              ' Read TargetTemp MSB
Read 1, B2                              ' Read TargetTemp LSB
TargetTemp=B1*256+B2                    ' Calculate TargetTemp value (Default=20.0 C.)
Read 2, B1                              ' Read Hysteresis 
Hyst=10*B1                              ' Calculate Hysteresis value (Default= 2.0 C.)  

MainLoop: 
 If PORTB.0=0 then                      ' Mode switch pressed
  Pause 50                              ' Debounce 
  LcdOut $FE, $8F, "*"                  ' Show that command is accepted 
  If PORTB.0=0 then MainLoop            ' Wait until button is released  
  Mode=Mode+1                           ' Increment mode
  If Mode=2 then                        ' Save Target Temperature (Mode1 -> Mode2)
   Write 0, TargetTemp / 256        ' TargetTemp MSB
   Write 1, TargetTemp MOD 256          ' TargetTemp LSB
  EndIf
  If Mode > 2 Then                      ' Save Hysteresis (Mode 2 -> Mode 0) 
   Mode=0                       ' Only 0, 1, 2 are valid
   Write 2, Hyst / 10                   ' Divide Hyst value to fit in Byte
  EndIf
 EndIf

 If Mode =1 then                        ' Set Target Temperature
  LcdOut $FE, $80, "SET TEMPERATURE "   ' Show function
  V=TargetTemp                          ' TargetTemp in V  
  Gosub SelectSign                      ' Select +/blank/- 
  Gosub DisplayTemp                     ' Display Target Temperature
  If (PORTB.1=0) Or (PORTB.2=0) then    ' Up or Down button pushed
   If PORTB.2=0 then                    ' Down button 
    If TargetTemp > 7500 then           ' Not lower than -25 C. (10000-MinTemp * 100)
     TargetTemp=TargetTemp-25           ' Decrease temperuture with 0.25 C.
    EndIf
   EndIf
   If PORTB.1=0 then                    ' Up button
    If TargetTemp < 17500 then          ' Not higher than 75 C. (10000+MaxTemp * 100)
     TargetTemp=TargetTemp+25           ' Increase temperature with 0.25 C.
    EndIf
   EndIf
   GoSub SetTargetTemp                  ' Display TargetTemp and delay 0.25 Sec.
  EndIf
 EndIf 

 If Mode=2 then                         ' Set Hysteresis    
  LcdOut $FE, $80, "HYSTERESIS      "   ' Show function
  Sign=" "                              ' No sign  
  V= 10000+Hyst                         ' Set value for V  
  Gosub DisplayTemp                     ' Display Hysteresis
  If (PORTB.1=0) Or (PORTB.2=0) then    ' Up or down button pushed  
   Sign=" "                             ' No sign for Hysteresis
   If PORTB.2=0 then                    ' Down button
    If Hyst > 10 then Hyst=Hyst-10      ' Not less than 0.1 C.
   EndIf
   If PORTB.1=0 then                    ' Up button
    If Hyst < 1000 then Hyst=Hyst+10    ' Not more than 10.0 C.
   EndIf 
   V= 10000+Hyst                        ' Set value for V
   Gosub DisplayTemp                    ' Display Hysteresis 
   Pause 250                            ' Delay 0.25 Sec.
  EndIf
 EndIf 

 If Mode > 0 then Mainloop              ' Setting TargetTemperature or Hysteresis

 LcdOut $FE, $80, "TEMPERATURE     "    ' Show function

 Output DQ                         ' Make Pin Output
 DQ=0                    ' OneWire line Low
 PauseUs 480                            ' Keep down for 480 µS  
 Input DQ                               ' Make Pin Input
 PauseUs 70                             ' Wait 70 µS
 If DQ=1 then                           ' No presence pulse from DS1820   
  LcdOut $FE, $1, "** No sensor! **"    ' Show message
  Pause 500                             ' Wait 0.5 Sec. 
  Goto MainLoop                         ' Check again
 EndIf

 OWOut DQ, 1, [$CC, $44]               ' Start temperature conversion
WaitLoop: OWIn DQ, 4, [Count_Remain]    ' Check for still busy converting
 If Count_Remain = 0 Then WaitLoop      ' Busy 
 OWOut DQ, 1, [$CC, $BE]        ' Read the temperature
 OWIn DQ, 0, [Temperature.LowByte, Temperature.HighByte, Skip 4, Count_Remain, Count_Per_C]
 Temperature = (((Temperature >> 1) * 100) - 25) + (((Count_Per_C - Count_Remain) * 100) / Count_Per_C)
 if Temperature > 32767 then
  Temperature= ~Temperature
  V= 10000 - Temperature                ' 25 C=12500  0 C=10000  -10 C=9000 
 else
  V= 10000 + Temperature
 EndIf

 If V < TargetTemp - Hyst then          ' Below Target temperature - Hysteresis
  PORTA.2=1                             ' Activate   Warm Output
  PORTA.3=0                             ' Deactivate Cold Output
 EndIf

 If V > TargetTemp + Hyst then          ' Above Target temperature + Hysteresis
  PORTA.2=0                             ' Deactivate Warm output
  PORTA.3=1                             ' Activate   Cold Output
 EndIf

 GoSub SelectSign                       ' +/blank/- Sign 
 GoSub DisplayTemp                      ' Temperature to LCD

Goto MainLoop                ' Do it forever

' SUBROUTINES:
'----------------------------------------
SelectSign:
 If v = 10000 then                      ' Temperature = 0 C.
  Sign=" "                 ' No sign
 Else 
  If v < 10000 then                  ' <> 0
   Sign="-"                ' Temperature below 0 C.     
  Else
   Sign="+"                ' Temperature above 0 C.
  EndIf
 EndIf
Return

'----------------------------------------
DisplayTemp:
 If V >= 10000 then                     ' Above 0 C.      
  Temperature=V-10000                   
 Else                                   
  Temperature=10000-V                   ' Below 0 C. 
 EndIf
 LcdOut $FE, $C0, Sign, DEC (Temperature / 100), ".", DEC2 Temperature, " ",223,"C "
Return

'-----------------------------------------
SetTargetTemp:
 V=TargetTemp
 Gosub SelectSign
 Gosub DisplayTemp 
 Pause 250
Return

'-----------------------------------------


Pozdrav svima.
Interesuje me kako iz gore navedenog koda mogu dobiti temperaturu za prikaz na 7 segmentnom displeju.
npr. var1=dig 1 temperatura
odnosno da razdvojim cifre za prikaz na 7seg displeju
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.02.2014. u 12:50 - pre 124 meseci
Zavisi kako povezuješ 7-segmentne. Da li u multipleksu ili preko 74HC595
Ako je u multipleksu, prvo dobro prouči tajmerske interapte, trebaće ti.
Inače, ovo što si citirao nije moj program (Sepa011 = ZAS011 ), ja ne koristim PBP već Proton+, al' to je jako slično.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

rasoboy
szr kovac

Član broj: 191714
Poruke: 3
*.teol.net.



Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.02.2014. u 12:59 - pre 124 meseci
Slao bi na 74hc595,samo cijeli broj.Decimala mi nije bitna.Pokusavao sam i u Protonu slicno je to sve
 
Odgovor na temu

rasoboy
szr kovac

Član broj: 191714
Poruke: 3
*.teol.net.



Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno08.02.2014. u 15:02 - pre 124 meseci
Sve je ok,isis simulator mi je brljao
digit1=(Temperature / 100) dig 0
digit2=(Temperature / 100) dig 1
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno10.05.2014. u 20:02 - pre 121 meseci
Pozdrav.Hteo bih u ovom kodu da ubacim da se na porta.1 neprestano pojavljuju 100Hz a ostalo-mernje frekvencije da radi nezavisno od toga.Ako to moze kako i gde da ubacim u ovom kodu ?



TRISB = %00000010
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 3
DEFINE LCD_LINES 2
pause 100
BROJ VAR WORD
pause 500
lcdout $FE, 1
POCETAK:
COUNT PORTB.1,1000,BROJ '
lcdout $FE, $80, "COUNT=", dec broj ;
pause 10
GOTO POCETAK:
MILAN ANDRIC
 
Odgovor na temu

weldinger
Maksimovic Dusan
Beograd

Član broj: 174328
Poruke: 58
46.151.130.*



+1 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno17.08.2014. u 22:00 - pre 117 meseci
Ako mogu da pitam u ovoj temi, radim uspesno sa LCD displejom 2x16 ili 4x16 ali mi je sad potrebno da upotrebim graficki displej.Da li PIC Basic podrzava rad sa grafickim modulima, da li je neko radio slicno?
 
Odgovor na temu

Pioneer cdj 200
Rovinj

Član broj: 150380
Poruke: 1279
*.adsl.net.t-com.hr.

Sajt: www.crotehnika.com


+18 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno11.09.2014. u 16:07 - pre 116 meseci
Nadam se da nisam pogriješio temu: programiram PIC18F4680 u Basicu i koristim Proton. U njegovom helpu sam našao ERead i EWrite za čitanje/pisanje po EEPROM-u (internom). Međutim ni jedan ni drugi ne rade. Probao sam u Pickitu izmjeniti neke lokacije u EEPROMU i onda pisati i to se uspiješno upiše međutim ni to ne mogu pročitati u kodu. Kako da koristim EEPROM?
...njemu i kućno zvonce zvoni u A klasi... hh
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno11.09.2014. u 16:45 - pre 116 meseci
Kako ti izgleda deo koda iz koga ne možeš da pročitaš sadržaj EEPROM-a?

Code:

Device 18F4680
Xtal ...

Podešavanje konfiguracionih bitova



Dim Promenljiva As Byte
.
.
.
.
Promenljiva = ERead adresa
.
.
.
.
End

--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

Pioneer cdj 200
Rovinj

Član broj: 150380
Poruke: 1279
*.adsl.net.t-com.hr.

Sajt: www.crotehnika.com


+18 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno11.09.2014. u 19:16 - pre 116 meseci
Code:
Bass=ERead 0
Mid=ERead 1
Treble=ERead 2
BassBoost=ERead 3
InputCH=ERead 4


Sve varijable su BYTE, osim BassBoost koja je BIT jer samo označava OFF ili ON. U pitanju je audio pojačalo sa digitalnim upravljanjem bojom zvuka, pri svakoj promjeni neke vrijednosti (ulaz, equalizer, volume) trebam pospremiti vrijednosti u EEPROM tako da kad se uređaj isključi i ponovno isključi da zadrži sve. I onda prilikom paljenja, kod inicijalizacije imam ovaj gore kod dakle vadim sve iz memorije u varijable i šaljem to audio procesoru. Probao sam u PicKitu modificirati EEPROM, stavit neku vrijednost u prvih 8 bita koja odgovara nekoj jačini basa, i kad okinem Write i onda Read, PicKit pokaže da se taj podatak nalazi u EEPROM-u ali program ga ne učita, odnosno varijabla Bass i dalje ima staru vrijednost.

Za spremanje sam napravio ovako:

Code:

StoreData:
     EWrite 0 , [ Bass , Treble, BassBoost, InputCH ]
Return


I taj se potprogram poziva kod svake promjene neke vrijednosti (recimo kad okrenem rotary encoder za volume), nakon što se promjenila vrijednost. U helpu stoji ovako:

Code:

Example

 DEVICE 16F628   ' A PICmicro with on-board eeprom 
 DIM VAR1 as BYTE 
 DIM WRD1 as WORD 
 DIM Address as BYTE 
 VAR1 = 200 
 WRD1= 2456 
 Address = 0    ' Point to address 0 within the eeprom 
 EWRITE Address , [ WRD , VAR1 ] ' Write a 16-bit then an 8-bit value 
 


EDIT: Čudo je proradilo Valjda je bilo pogrešno što sam više varijabla odjednom spremao i valjda je bila greška u zarezu odnosno razmaku oko zareza.

[Ovu poruku je menjao Pioneer cdj 200 dana 11.09.2014. u 23:03 GMT+1]
...njemu i kućno zvonce zvoni u A klasi... hh
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno11.09.2014. u 22:19 - pre 116 meseci
Posle svakog upisa u EEPROM, dodaj malu pauzu od 10ms i proveri konfiguracione bitove tog kontrolera, kako si ih postavio.

Code:
; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been
; superseded by the CONFIG directive.  The following settings
; are available for this device.
; Oscillator Selection bits:
OSC=LP        ; LP oscillator
OSC=XT        ; XT oscillator
OSC=HS        ; HS oscillator
OSC=RC        ; External RC oscillator, CLKO function on RA6
OSC=EC        ; EC oscillator, CLKO function on RA6
OSC=ECIO        ; EC oscillator, port function on RA6
OSC=HSPLL        ; HS oscillator, PLL enabled (Clock Frequency=4 x FOSC1)
OSC=RCIO        ; External RC oscillator, port function on RA6
OSC=IRCIO67        ; Internal oscillator block, port function on RA6 and RA7
OSC=IRCIO7        ; Internal oscillator block, CLKO function on RA6, port function on RA7
; Fail-Safe Clock Monitor Enable bit:
FCMEN=OFF        ; Fail-Safe Clock Monitor disabled
FCMEN=ON        ; Fail-Safe Clock Monitor enabled
; Internal/External Oscillator Switchover bit:
IESO=OFF        ; Oscillator Switchover mode disabled
IESO=ON        ; Oscillator Switchover mode enabled
; Power-up Timer Enable bit:
PWRT=ON        ; PWRT enabled
PWRT=OFF        ; PWRT disabled
; Brown-out Reset Enable bits:
BOREN=OFF        ; Brown-out Reset disabled in hardware and software
BOREN=SBORENCTRL        ; Brown-out Reset enabled and controlled by software (SBOREN is enabled)
BOREN=BOACTIVE        ; Brown-out Reset enabled in hardware only and disabled in Sleep mode (SBOREN is disabled)
BOREN=BOHW        ; Brown-out Reset enabled in hardware only (SBOREN is disabled)
; Brown-out Reset Voltage bits:
BORV=0        ; Maximum Setting
BORV=1        ;
BORV=2        ;
BORV=3        ; Minimum Setting
; Watchdog Timer Enable bit:
WDT=OFF        ; HW Disabled - SW Controlled
WDT=ON        ; HW Enabled - SW Disabled
; Watchdog Timer Postscale Select bits:
WDTPS=1        ; 1:1
WDTPS=2        ; 1:2
WDTPS=4        ; 1:4
WDTPS=8        ; 1:8
WDTPS=16        ; 1:16
WDTPS=32        ; 1:32
WDTPS=64        ; 1:64
WDTPS=128        ; 1:128
WDTPS=256        ; 1:256
WDTPS=512        ; 1:512
WDTPS=1024        ; 1:1024
WDTPS=2048        ; 1:2048
WDTPS=4096        ; 1:4096
WDTPS=8192        ; 1:8192
WDTPS=16384        ; 1:16384
WDTPS=32768        ; 1:32768
; MCLR Pin Enable bit:
MCLRE=OFF        ; RE3 input pin enabled; MCLR disabled
MCLRE=ON        ; MCLR pin enabled; RE3 input pin disabled
; Low-Power Timer 1 Oscillator Enable bit:
LPT1OSC=OFF        ; Timer1 configured for higher power operation
LPT1OSC=ON        ; Timer1 configured for low-power operation
; PORTB Pins Configured for A/D:
PBADEN=OFF        ; PORTB<4> and PORTB<1:0> Configured as Digital I/O Pins on Reset
PBADEN=ON        ; PORTB<4> and PORTB<1:0> Configured as Analog Pins on Reset
; Background Debugger Enable bit:
DEBUG=ON        ; Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug
DEBUG=OFF        ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
; Extended Instruction Set Enable bit:
XINST=OFF        ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
XINST=ON        ; Instruction set extension and Indexed Addressing mode enabled
; Boot Block Size:
BBSIZ=1024        ; 1K words (2K bytes) Boot Block
BBSIZ=2048        ; 2K words (4K bytes) Boot Block
BBSIZ=4096        ; 4K words (8K bytes) Boot Block
; Single-Supply ICSP Enable bit:
LVP=OFF        ; Single-Supply ICSP disabled
LVP=ON        ; Single-Supply ICSP enabled
; Stack Full/Underflow Reset Enable bit:
STVREN=OFF        ; Stack full/underflow will not cause Reset
STVREN=ON        ; Stack full/underflow will cause Reset
; Code Protection Block 0:
CP0=ON        ; Block 0 (000800-003FFFh) code-protected
CP0=OFF        ; Block 0 (000800-003FFFh) not code-protected
; Code Protection Block 1:
CP1=ON        ; Block 1 (004000-007FFFh) code-protected
CP1=OFF        ; Block 1 (004000-007FFFh) not code-protected
; Code Protection Block 2:
CP2=ON        ; Block 2 (008000-00BFFFh) code-protected
CP2=OFF        ; Block 2 (008000-00BFFFh) not code-protected
; Code Protection Block 3:
CP3=ON        ; Block 3 (00C000-00FFFFh) code-protected
CP3=OFF        ; Block 3 (00C000-00FFFFh) not code-protected
; Boot Block Code Protection:
CPB=ON        ; Boot block (000000-0007FFh) code-protected
CPB=OFF        ; Boot block (000000-0007FFh) not code-protected
; Data EEPROM Code Protection:
CPD=ON        ; Data EEPROM code-protected
CPD=OFF        ; Data EEPROM not code-protected
; Write Protection Block 0:
WRT0=ON        ; Block 0 (000800-003FFFh) write-protected
WRT0=OFF        ; Block 0 (000800-003FFFh) not write-protected
; Write Protection Block 1:
WRT1=ON        ; Block 1 (004000-007FFFh) write-protected
WRT1=OFF        ; Block 1 (004000-007FFFh) not write-protected
; Write Protection Block 2:
WRT2=ON        ; Block 2 (008000-00BFFFh) write-protected
WRT2=OFF        ; Block 2 (008000-00BFFFh) not write-protected
; Write Protection Block 3:
WRT3=ON        ; Block 3 (00C000-00FFFFh) write-protected
WRT3=OFF        ; Block 3 (00C000-00FFFFh) not write-protected
; Boot Block Write Protection:
WRTB=ON        ; Boot block (000000-0007FFh)  write-protected
WRTB=OFF        ; Boot block (000000-0007FFh) not write-protected
; Configuration Register Write Protection:
WRTC=ON        ; Configuration registers (300000-3000FFh) write-protected
WRTC=OFF        ; Configuration registers (300000-3000FFh) not write-protected
; Data EEPROM Write Protection:
WRTD=ON        ; Data EEPROM write-protected
WRTD=OFF        ; Data EEPROM not write-protected
; Table Read Protection Block 0:
EBTR0=ON        ; Block 0 (000800-003FFFh) protected from table reads executed in other blocks
EBTR0=OFF        ; Block 0 (000800-003FFFh) not protected from table reads executed in other blocks
; Table Read Protection Block 1:
EBTR1=ON        ; Block 1 (004000-007FFFh) protected from table reads executed in other blocks
EBTR1=OFF        ; Block 1 (004000-007FFFh) not protected from table reads executed in other blocks
; Table Read Protection Block 2:
EBTR2=ON        ; Block 2 (008000-00BFFFh) protected from table reads executed in other blocks
EBTR2=OFF        ; Block 2 (008000-00BFFFh) not protected from table reads executed in other blocks
; Table Read Protection Block 3:
EBTR3=ON        ; Block 3 (00C000-00FFFFh) protected from table reads executed in other blocks
EBTR3=OFF        ; Block 3 (00C000-00FFFFh) not protected from table reads executed in other blocks
; Boot Block Table Read Protection:
EBTRB=ON        ; Boot block (000000-0007FFh) protected from table reads executed in other blocks
EBTRB=OFF        ; Boot block (000000-0007FFh) not protected from table reads executed in other blocks


Edit: Dok sam pročeprkao, ti si se snašao
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

milan-markovic

Član broj: 314087
Poruke: 317
*.ninet.rs.



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno23.12.2014. u 20:19 - pre 113 meseci
Zdravo drugari poceo sam da ucim PicBasic imam Sinisin razvoni sistem koji koristi Pic16F1827.
Dosao sam do AD convertora proucio sam kako radi i napisao sam program u MicroCode Studio da merim napon od 0 do 5 volti i da prikaze rezultat na lcd displeju i to radi.E sada ja hocu da merim napon od 0 do 30 volti ali ne znam sta treba da se doda u programu.Znam da treba da napravim razdelnik napona tako da pri naponu od 30 volti imam napon na ulazu AD jednak referentnom.

Code:
'****************************************************************
'*  Name    : LCD Voltmetar                                     *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 22/12/2014                                        *
'*  Version : 1.0                                               *
'*  Notes   : PIC16F1827                                        *
'*          :                                                   *
'****************************************************************
 #CONFIG
 __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF 
 __config _CONFIG2, _WRT_ALL & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF 
#ENDCONFIG


define OSC 4
define LCD_DREG PORTB  'LCD data port
define LCD_DBIT 4      'LCD pocetni bit podatka o ili 4     

define LCD_RSREG PORTA  'LCD registar select port
define LCD_RSBIT 1      'LCD registar select bit
define LCD_EREG PORTA   'LCD enable port
define LCD_EBIT 3       'LCD enable bit
Define    ADC_BITS    10    ' Broj bita
Define    ADC_CLOCK    3    ' Klok (1=Oscilator /8)
DEFINE LCD_LINES 2      ' Broj linije displeja
 inic:
    OSCCON=%01101000   ' Interni oscilator 4MHz
    ansela=%00000001   ' Port A je digitalni osim RA0
    adcon0=%00000001   ' Omogucen AN0 kanal
    adcon1=%10110000   ' 0 i 5 volti su referentni naponi a rezultat je desno formatiran
    TRISA=%11110101   ' Port A je ulazni osim RA1 i RA3
    TRISB=%00000000   ' Port B je izlazni
    
    AD_Rez var    word    ' Rezultat AD konverzije             
    Napon  var    word    ' Promenljiva za dobijanje napona 
    Dummy  var word     ' Promenljiva za 32 bitno delenje i mnozenje
 
        Pause 500           ' Pauza 0.5 sec
        Lcdout $fe, 1        ' Izbrisi ceo LCD displej
        Lcdout $fe, 2       ' Pozicioniraj se na prvi red prvi karakter
        Lcdout "     PRIMER    "  ' Ispisi "PRIMER" u prvom redu
        Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
          Lcdout " A/D KONVERTORA" ' Ispisi dati tekst u drugom redu 
        Pause 5000           ' Pauza 5 sec
       
Pocetak:    

            '   Procitaj 1 kanal na RA0 i prikazi
      
        Lcdout $fe, 1        ' Izbrisi ceo LCD displej
        Lcdout $fe, 2        ' Pozicioniraj se na prvi red prvi karakter
        Lcdout " A/D kanal br.1" ' Ispisi “A/D kanal br.1 u prvom redu

        ADCIN 0, AD_Rez       ' Izvrsi konverziju na RA0 i 10 bita rezultata smesti u AD_Rez.
        Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
        Dummy = AD_Rez * 5 * 100  
        Napon = Div32 1024
        Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
          Lcdout "   Napon:",DEC napon DIG 2 ,",",dec2 napon," V"  ' Ispisi vrednost na displeju 
        
        Pause 500            ' Pauza 0.5 sec
        
        Goto Pocetak        ' Kreni ponovo na merenje

        End                    ' Kraj programa



Zamolio bih nekog da mi objasni sta trebam dodati ovom programu da mi umesto 5.00v ispise 30.00v.



[Ovu poruku je menjao milan-markovic dana 23.12.2014. u 21:32 GMT+1]
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno24.12.2014. u 17:54 - pre 113 meseci
1023*3=3069 To ti je dobitna kombinacija

Razdelnik treba da ti pri 30.69V obori na 5V

AD konvertor iščitavaš 3 puta uzastopno, sabirajući vrednosti i .....

Nadam se da si shvatio
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

milan-markovic

Član broj: 314087
Poruke: 317
*.ninet.rs.



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno24.12.2014. u 18:26 - pre 113 meseci
ZAS 011 Hvala na odgovoru Ali ne znam kako da 3 puta iscitam AD i da saberem ja probao ovako ali ne ide:

Code:
Pocetak:    

            '   Procitaj 1 kanal na RA0 i prikazi
      
        Lcdout $fe, 1        ' Izbrisi ceo LCD displej
        Lcdout $fe, 2        ' Pozicioniraj se na prvi red prvi karakter
        Lcdout " A/D kanal br.1" ' Ispisi “A/D kanal br.1 u prvom redu

        ADCIN 0, AD_Rez        ' Izvrsi konverziju na RA0 i 10 bita rezultata smesti u AD_Rez.
        ADCIN 0, AD_Rez 
        ADCIN 0, AD_Rez 
        Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
        AD_rez = (AD_rez + AD_rez + AD_rez)
        Dummy = AD_rez * 5 * 100  
        Napon = Div32 1024
        Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
          Lcdout "   Napon:",DEC napon DIG 2 ,",",dec2 napon," V"  ' Ispisi vrednost na displeju 
        
        Pause 500            ' Pauza 0.5 sec
        
        Goto Pocetak        ' Kreni ponovo na merenje

        End                    ' Kraj programa


Krene da ispisuje od 0 do9.99 i ponovo pocne od 0

Vise bih mi pomogao neki primer jer sam pocetnik i tesko se snalazim.

Pozdrav

 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno24.12.2014. u 19:42 - pre 113 meseci
Code:
        ADCIN 0, AD_Rez        ' Izvrsi konverziju na RA0 i 10 bita rezultata smesti u AD_Rez.
        ADCIN 0, AD_Rez 
        ADCIN 0, AD_Rez 

Ovo gore ti ne pije vodu, imaš rezultat samo jednog merenja, poslednjeg. A ovo

Code:
AD_rez = (AD_rez + AD_rez + AD_rez)

ti je isto kao da si napisao nešto u stilu:
Code:
Rezultat = AD_Rez * 3


Ajde 'vako (mada ja koristim Proton, ali biće ti jasno, predpostavljam):

Code:
Rezultat = 0

For i = 1 to 3
     ADCIN 0, AD_Rez
     Rezultat = Rezultat + AD_Rez
Next i


Promenljiva Rezultat će imati vrednost u rasponu od 0 do 3069.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

milan-markovic

Član broj: 314087
Poruke: 317
*.ninet.rs.



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno24.12.2014. u 21:51 - pre 113 meseci
Hvala na primeru koji ste mi postavili sutra cu da probam to da iskoristim.

Pozdrav

 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno28.12.2014. u 15:26 - pre 113 meseci
Jesi li uradio štogod?
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

milan-markovic

Član broj: 314087
Poruke: 317
*.ninet.rs.



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno28.12.2014. u 22:22 - pre 113 meseci
Jesam uspeo sam da iscitam 3 puta AD i rezultat da ispisem na LCD ali kako da ubacim zarez izmedju dve decimale.

Code:
Pocetak:    

   Lcdout $fe, 1        ' Izbrisi ceo LCD displej
   Lcdout $fe, 2        ' Pozicioniraj se na prvi red prvi karakter
   Lcdout " A/D kanal br.1" ' Ispisi “A/D kanal br.1 u prvom redu
   
   Rezultat = 0
                                                   
For i = 1 to 3
     ADCIN 0, AD_Rez
     Rezultat = Rezultat + AD_Rez
Next i
   
  
Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
   
 Lcdout "   Napon:", dec4 rezultat, "v"
  
       
 
 Pause 500
 
 goto pocetak 


Pozdrav
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno29.12.2014. u 18:23 - pre 113 meseci
Rezultat podeliš sa 100 i to ti je celobrojna vrednost, a modulom dobiješ decimalnu

Code:
Celo = Rezultat / 100
Decimale = Rezultat // 100

--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Picbasic pitanja za sve sto mi nije jasno

Strane: << < .. 20 21 22 23 24 25 26 27

[ Pregleda: 109467 | Odgovora: 530 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.