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: << < .. 21 22 23 24 25 26 27

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milan-markovic

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



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno30.12.2014. u 23:49 - pre 113 meseci
Zas011 Nisam imao vreme da probam ovo sto ste mi napisali kad dodjem do malo slobodnog vremena probacu da ukombinujem ovo .

Ako se ne snadjem eto mene ponovo da gnjavim sa pitanjima stacu tek sam na pocetku sa programiranjem i tesko se snalazim a i trenutno sam u nekoj guzvi.

Pozdrav
 
Odgovor na temu

milan-markovic

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



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno03.01.2015. u 22:42 - pre 113 meseci
Evo da se pohvalim da sam uspeo da napisem program za voltmetar radi odlicno a preciznost je 30mv po koraku.Za ispravljac je ovo zadovoljavajuce Ali me interesuje cisto iz radoznalosti da li je moguce softverski povecati preciznost sa 10bit A/D ili se mora ici na 12bit da bih se dobili 10mv po koraku.

Code:
For i = 1 to 3
     ADCIN 0, AD_Rez
     Rezultat = Rezultat + AD_Rez
    Next i
    Celo = Rezultat / 100
Decimale = Rezultat // 100
Lcdout $fe, $C0        ' Podesi kursor na pocetak drugog reda
   
 Lcdout "   Napon:",DEC2 celo,",", dec2 decimale, " V"


Hvala ZAS011 na ukazanoj pomoci.
 
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.01.2015. u 17:18 - pre 112 meseci
Moze li i za mene jedan mali savet.Koristim 16f88 i treba mi da na displeju ispise broj u desetobitnoj rezoluciji tj na 5V da ispise 1024 a meni ispise 256.Da li u ovom slucaju mora da ispise 256 ili negde gresim ? Kad stavim ovako

ADCIN 0 , BROJ
broj= broj*/1024
lcdout $FE, $80, "DC Volts=",#broj ' sad ispise 1024

onda ispise na displeju 1024 a bez - broj*/1024 - ispisuje 256.Ako neko moze da pomogne sta da prepravim u kodu da mogu da vidim desetobitnu rezoluciju.Probao sam u proteusu.


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

Define ADC_BITS 10
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 50
ANSEL=%11111111
ADCON1=%10000000
ADCON0=%11000101
TRISA = %11111111
BROJ Var WORD

'lcdout $FE, 1
POCETAK:
ADCIN 0 , BROJ

lcdout $FE, $80, "DC Volts=",#broj ' na 5V ispise 256
pause 10
GOTO POCETAK:
END

Nema logike da se ovako ponasa,morlo bi da ispise 1024.Probacu na plocici da vidim a ako neko moze neka napise kako bi po ovom kodu trebalo da bude.

[Ovu poruku je menjao MILANAN dana 10.01.2015. u 19:42 GMT+1]
MILAN ANDRIC
 
Odgovor na temu

milan-markovic

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



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno10.01.2015. u 20:55 - pre 112 meseci
Neznam koliko cu ti biti od pomoci ali probaj ovako:

Code:
lcdout $FE, $80, "DC Volts=",DEC4 broj,


Misli da bih ovako funkcionisalo probaj i javi rezultate.

Pozdrav
 
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.01.2015. u 22:31 - pre 112 meseci
Raseno.Ovaj proteus je s**nje za neke stvari.Po stoti put me izradi na isti nacin.
MILAN ANDRIC
 
Odgovor na temu

electron2008

Član broj: 214405
Poruke: 179
*.dynamic.isp.telekom.rs.



Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno31.01.2015. u 16:43 - pre 112 meseci
Pozdrav svima, u ovaj kod :

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

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


sam ubacio da mi uz prikaz temperature u donjem redu LCD odbrojava neko vreme, u gornjem redu LCD, evo primer deo koda:
Code:
Pauza:
 
 read 9,tmp1
 read 10,tmp2
 I.lowbyte =tmp1
 I.highbyte=tmp2 
 
 
 DOZ=0
 GR=0
 ve=1
 for j=0 to I
 if ST=0  then Blokada
 if j=I then  I=0

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 Pauza                         ' Check again
EndIf

'*****************************************************************************
' Temp reading
'*****************************************************************************

OWOut DQ, 1, [$CC, $44 ]             ' Start temperature conversion

waitloop1: 

   WHILE NOT DQ
   WEND
      
    OWOUT   DQ, 1, [$CC, $BE ]                       ' Skip ROM search & read scratchpad                                           memory
    OWIN    DQ, 2, [Temperature.Lowbyte, Temperature.Highbyte]' Read two bytes / end comms
      
Convert_Temp1:                                       

   IF Temperature.15 THEN
   
       Temperature = ~Temperature + 1
      Twist = 1
      
   ENDIF
                                    
    TempC =  ( Temperature & $7FF ) >> 4               ' Partie Entiere '4
                  
    Float = ((Temperature.Lowbyte & $0F ) * 25 )>> 2    ' Partie décimale 100emes
    
    Temperature = TempC*100 + Float                  'Préparation 1/100 degrés
    
IF Twist THEN
   
  V= 10000 - Temperature                ' 25 C=12500  0 C=10000  -10 C=9000
  Twist = 0 
else
  V= 10000 + Temperature
EndIf
'----------------------- Upravljanje relejima ----------------------------------
Read 0, B1                              ' Read TargetTemp MSB
Read 1, B2                              ' Read TargetTemp LSB
TargetTemp=B1*256+B2                    ' Calculate TargetTemp value (Default=20.0 C.)

If V > TargetTemp + Hyst then Mainloop2          ' Above Target temperature + Hysteresis
'-------------------------------------------------------------------------------
GoSub SelectSign                       ' +/blank/- Sign 
GoSub DisplayTemp                      ' Temperature to LCD
LCDOUT $FE,$80, "Pauza   :   "   ,dec3 j
pause 1000
next j
goto Pauza

Problem je sto temperaturu osvezava svake sekunde prilikom odbrojavanja brojaca, kako to resiti drugacije?
 
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 jasno31.01.2015. u 18:36 - pre 112 meseci
A da li treba da ti za vreme odbrojavanja iščitava senzor?

Ne vidi se u kodu gde ti je:

FOR j = od TO do

da bi imao:
Code:
LCDOUT $FE,$80, "Pauza   :   "   ,dec3 j
pause 1000
next j  <= ovo ovde
goto Pauza

--
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

electron2008

Član broj: 214405
Poruke: 179
*.dynamic.isp.telekom.rs.



Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno01.02.2015. u 12:38 - pre 112 meseci
Da treba da za vreme iscitavanja senzora i odbrojava, ili za vreme odbrojavanja i iscitava senzor
 
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 jasno04.02.2015. u 15:12 - pre 111 meseci
I dalje nisi odgovorio gde ti počinje For petlja pošto imaš:

next j <= ovo ovde
--
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

electron2008

Član broj: 214405
Poruke: 179
77.46.252.*



Profil

icon DATA 46, 224, 20 ' Temp MSB, TEMP LSB, Hysteresis DIV 1017.05.2015. u 17:16 - pre 108 meseci
Interesuje me sta konkretno znaci "data" u picbasicu, u termostatu iz elektora pise ovako
Code:
    DATA 46, 224, 20                        ' Temp MSB, TEMP LSB, Hysteresis DIV 10


skontao da su defaultne vrednosti za temperaturu i histerezu, pocetne, za temperaturu 20,00C a za histerezu 2,00C, Ja sam dodao jos jedno podesavanje za temperaturu, sta da upisem da i ona bude tih 20,00C

link

Edit: Skontao sam :)

[Ovu poruku je menjao electron2008 dana 17.05.2015. u 19:21 GMT+1]
 
Odgovor na temu

lm741
VOJVODINA

Član broj: 167617
Poruke: 672
*.mynsn.net.



+67 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno21.05.2015. u 00:06 - pre 108 meseci
instrukcijom DATA, smesta se vrednost konstanti u interni EEPROM...na zeljene adrese...
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
 
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 jasno21.05.2015. u 09:59 - pre 108 meseci
Laloš???
--
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

electron2008

Član broj: 214405
Poruke: 179
*.dynamic.isp.telekom.rs.



Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno24.01.2016. u 19:25 - pre 100 meseci
Citat:
Sepa011:
Code:
DATA 46, 224, 20                        ' Temp MSB, TEMP LSB, Hysteresis DIV 10


46*256+224=12000

Ovde autor programa namerno dodaje 10000 vrednost iscitanu sa DS senzora da bi mu citava matematika bila sa celim i pozitivnim brojevima.

sto se vidi iz podprograma
Code:
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


10000 = 0 stepeni.

Lukavo, nema sta.

A "ono" sto si pitao (DATA 46, 224, 20), svaka READ naredba cita podatak, koji je prilikom kompajliranja programa smesten u programski deo memorije i stoga nepromenljiv (da ne zalazim u kontrolere koji mogu da zvrljaju po svom FLASH-u), prema parametru koji joj je prosledjen tako da

posle
Code:
Read 0, B1                              ' Read TargetTemp MSB

B1 ima vrednost 46,... (0 -> prvi element u DATA listi)
posle
Code:
Read 1, B2                              ' Read TargetTemp LSB

B2 ima vrednost 224,...(1 -> drugi element u DATA listi)
i tako redom.

ako se koriste podesavanja za dve temperature menja se i data?

[Ovu poruku je menjao electron2008 dana 24.01.2016. u 21:14 GMT+1]
 
Odgovor na temu

Darko_zed
Aleksinac

Član broj: 137277
Poruke: 2312
*.dynamic.isp.telekom.rs.

Sajt: www.proelektro018.com


+98 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.01.2019. u 17:30 - pre 64 meseci
Pozdrav drugari, odavno me nije bilo.....
Zapelo pa me eto ovde ponovo .

U svojim aplikacijama skori i ne koristim inetrrupt , mada i kada zatreba koristim samo na rb0 pinu.... Pored ostalih koje imamo od rb4-rb7 skoro da nisam koristio, uglavnom su bili definisani kao izlazni portovi..
E sada pitanje je kojom tacnom naredbom mogu razdvojiti da svaki interupt od rb4 do rb7 ima svoj zasebni podprogram za obradu.
 
Odgovor na temu

milan-markovic

Član broj: 314087
Poruke: 317
176.104.104.*



+11 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.01.2019. u 19:32 - pre 64 meseci
Moja ideja je kada se desi interapt na nekom od RB4 - RB7 pinova kontroler skoci na podprogram i u tom podprogramu se izvrsi skeniranje RB4 - RB7 pinova.

Na osnovu skeniranja se utvrdi na kom pinu je doslo do promenje stanja i tada se dalje ide na sledeci podprogram koji je vezan za taj pin.

Pozdrav Milan
 
Odgovor na temu

Darko_zed
Aleksinac

Član broj: 137277
Poruke: 2312
..178.212.adsl.dyn.beotel.net.

Sajt: www.proelektro018.com


+98 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno07.01.2019. u 20:42 - pre 64 meseci
moze ,ali pratio bi stanje svih portova ,po meni bespotrebna petlja ....
mislim da se moze odabrati samo po jedan ili vise, svaki posebno ,a da ostali budi izlazni recimo ..
Potrebno je postaviti To jest naredbom definisati Flag na pinu Rb5 i Rb6 navodim primer , ali kako to izvesti ?
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3871
31.223.133.200



+334 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno08.01.2019. u 10:28 - pre 64 meseci
Davno sam radio, ali mi se cini da postoji samo jedna interupt rutina.
Onda, kad se desi ti fini ispitas sta se desilo.
Inace interupt na vise pinova zna biti gadan, jer kad se desi prvi interapt u rutini se onemoguce buduci interapti.
Tek po izvrsenju prekidne rutine treba omoguciti prekide.
E sta se desi izmedju je pitanje. Kod ultra brzih procesa svasta se moze desiti.
Takodje kod visenivojskih interupta moze nastati problem kad se desi dva ili vise prekida istovremeno.
S tim sto pojam istovremenosti kod digitalnih i analognih sistema nije bas identican.Kod digitile sve sto se desi u toku jednog kloka je istovremeno.
 
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 jasno08.01.2019. u 12:24 - pre 64 meseci
Za PIConje koji imaju samo jedan nivo interapta, interapt rutina treba samo da setuje fleg da se desio interapt i da iščita stanje pinova i odmah napolje.
U glavnom programu, ako ti je setovan interapt fleg, pogledaš kakvo je bilo stanje pinova u trenutku interapta i na osnovu toga odrađuješ šta ti je potrebno.
Znači:

-desio se interapt

-ulazak u interapr rutinu
-isključi interapte
-iščitaj stanje pinova da bi kasnije obradio događaj
-setuj neki svoj interapt fleg
-očisti PIConjin interapt fleg
-uključi interapte
-izađi iz interapt rutine
-nastavak tvog programa

--
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

Darko_zed
Aleksinac

Član broj: 137277
Poruke: 2312
..178.212.adsl.dyn.beotel.net.

Sajt: www.proelektro018.com


+98 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno08.01.2019. u 16:59 - pre 64 meseci
Hvala puno,
Jovane razumeo sam u potpunosti sta hoces reci , i posto su rb4 i rb5 na istom nivou bilo bi problema...
Zorane to je U sustini je ono sto je Milan rekao.... Taj princip rada , i ne odgovara mi to...

Sledeci primer onoga sto bih trebao je :

PIC 16f887 (16F877)
Da li je moguce sledece bez komplikacija

-Rb0 je standard (prekid 1)
-INTERRUPT na pinovima od rb4 do rb7 postaviti samo rb4 (prekid 2) kao port interrupta dok ostalih 3 porta budi izlazni.... Jer sam jako u skripcu sa izlaznim portovima

- Program

-Prekid 2 (rb4)
-podprogram
Ceka prekid 1
- Prekid 1 (rb0)
Podrpogram prekida 1
- povratak iz podprograma prekida 1
-ceka se promena stanja na rb4
-Povratak iz podprograma prekida 2
-nastavak programa




[Ovu poruku je menjao Darko_zed dana 08.01.2019. u 18:14 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 jasno08.01.2019. u 17:11 - pre 64 meseci
Zašto bi čekqao npotrebno na prekide?
Zato i služi interapt rutina.

Primer jedne interapt rutine:

Code:
Int:
    Context Save
    Bres = Bres + 256
    If Bres >= 1000000 Then
        Bres = Bres - 1000000
        SecFlag = 1
        Inc Sekunde
    EndIf
    T0IF = 0
Context Restore


SecFlag je promenljiva za indikaciju da nešto treba da se uradi kasnije u glavnom programu, i izvršava se samo ako je SecFlag=1.
Ako je =1, prvo postaviš SecFlag na 0, odradiš šta treba i to je to.

Ova interapt rutina je za dobijanje tačne sekunde na PIConji koji radi na 4MHz
--
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: << < .. 21 22 23 24 25 26 27

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

Postavi temu Odgovori

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