[ alarmi ns @ 09.11.2014. 22:21 ] @
Molio bi za malu pomoc treba da napravim uredjaj koi ce zamenjivati sesmaist tasterta u simlaciji moja ideja radi super al na uredjaju nece moja zamisao je da pic 12f683 gura u dva shift registra 74hc595 i nakon toga da ide na draiver,kad uredjaju dam napon ledice vezane za izlazne pinove samo blicnu,program kucam u pbp evo koda molim vas nek mi neko kaze gde gresim
Code:
#CONFIG 
     __CONFIG  _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF  & _BOD_OFF & _CP_OFF & _PWRTE_ON
    #ENDCONFIG
    DEFINE OSC 4
  Include "modedefs.bas"  ' Pozivanje moda sift registra

'-------------------------- PDESAVANJA -------------------------------
    
    ANSEL = $30
    WPU = $37
    
    CMCON0 = 7                ' Analog comparators off

    TRISIO = %111000          '5-ULAZ
 
 '---------------------- definicije sift recistra-----------------------  
      
 gore var GPIO.4
 dole var GPIO.5 
 stanje var GPIO.3
 INPUT stanje
   'DEFINICIJA PINOVA ZA SIFT REGISTER
'***************************************************   
DataPin var     GPIO.0         ' Shift data pin 0  *
ClkPin  var     GPIO.1         ' Shift clock pin 1 *
Strobe  var     GPIO.2   'PUSTA BBOJ KROZ REGISTAR *
'***************************************************

Strobe = 0

x var word
y var word
x1  var word
y1 var word

x1=0
y1=0
x = 0  'GORE 
y = 0  'DOLE
I VAR BYTE

PAUSE 500
pocetak:
'**************PODIZE**************************

if stanje=0 then podize
if stanje=1 then spusta

podize:
y=0
DO while gore = 1 
loop



do while gore = 0 
loop

x=1
CALL IZLAZ
for i = 1 to 7
x=x*2
call izlaz 
next i
'*************SPUSTA***************
spusta:

x=0
do while dole = 1 
loop


do while gore = 0
loop
y=1
call izlaz


for i = 1 to 7
y=y*2
call izlaz
next i
goto podize
'*********************************************





izlaz:
x1=x
y1=y

Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
pause 500
'*****************STAVLJA GA NA NULU*******************

X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
pause 500


return        
End 
   
      


[Ovu poruku je menjao alarmi ns dana 09.11.2014. u 23:35 GMT+1]

[Ovu poruku je menjao alarmi ns dana 10.11.2014. u 00:59 GMT+1]
[ alarmi ns @ 09.11.2014. 22:26 ] @
Probao sam cak i sa osiliskopon da gledam na data pinu nema nikakvih impulsa
[ alarmi ns @ 10.11.2014. 10:28 ] @
Sad sam napisao program koji ce paliti dve ledice preko shift registra ni ovo na masini neradi,u simulatoru radi moze li mi neko reci gde gresim
Code:
#CONFIG 
     __CONFIG  _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF  & _BOD_OFF & _CP_OFF & _PWRTE_ON
    #ENDCONFIG
    DEFINE OSC 4
  Include "modedefs.bas"  ' Pozivanje moda sift registra
 'DEFINE SHIFT_PAUSEUS 1000
'-------------------------- PDESAVANJA -------------------------------
    
    ANSEL = $30
    WPU = $37
    
    CMCON0 = 7                ' Analog comparators off

    TRISIO = %111000          '5-ULAZ
 
 '---------------------- definicije sift recistra-----------------------  
      
 gore var GPIO.4
 dole var GPIO.5 
 stanje var GPIO.3
 INPUT stanje
   'DEFINICIJA PINOVA ZA SIFT REGISTER
'***************************************************   
DataPin var     GPIO.0         ' Shift data pin 0  *
ClkPin  var     GPIO.1         ' Shift clock pin 1 *
Strobe  var     GPIO.2   'PUSTA BBOJ KROZ REGISTAR *
'***************************************************

Strobe = 0

x var byte
y var byte
x1  var byte
y1 var byte

x1=0
y1=0
x = 0  'GORE 
y = 0  'DOLE
I VAR BYTE

'PAUSE 500

 izlaz:
do
x1=1
y1=1


Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
pause 500
'*****************STAVLJA GA NA NULU*******************

X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
pause 500

  loop


[ ZAS011 @ 10.11.2014. 17:29 ] @
A gde ti je Output Enable?
[ alarmi ns @ 10.11.2014. 18:21 ] @
Hvala zaso mozes mi molim te reci tacno kako to da dodam codu
[ goran_68 @ 11.11.2014. 07:37 ] @
Treba prvo da proveriš da li tvoj PIC uopšte nešto radi sa postavkama u konfiguraciji koju si odabrao. Predlažem ti da napišeš najobičniji program koji će ti u petlji, podizati na jedan i spuštati na nulu naponski nivo na data pinu. Pošto imaš osciloskop videćeš da li PIC radi bar nešto. Nakon toga možeš dalje.
[ alarmi ns @ 11.11.2014. 08:59 ] @
radi sa ovim postavkama pali gasi led,cita stanje tastera sve radi sem shift registra a ploca je dobra napisao mi je drugar tesst cod u protonu koji radi,znaci greska je u mom kodu
[ alarmi ns @ 11.11.2014. 23:56 ] @
Zahvaljujem se svima na pomoci resio sam svoj problem
[ ZAS011 @ 12.11.2014. 17:21 ] @
Bio bi red da napišeš i gde si pogrešio, barem da drugi početnici ne naprave istu grešku.
[ alarmi ns @ 12.11.2014. 23:45 ] @
Izvinjavan se u konfiguraciji je bio problem evo koda koji radi:
Code:
#CONFIG 
     __CONFIG  _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF  & _BOD_OFF & _CP_OFF & _PWRTE_ON
 #ENDCONFIG
 DEFINE OSC 8
' Include "modedefs.bas"            ' Pozivanje moda sift registra
' Shiftout Modes
Symbol LSBFIRST = 0     ' LSB first
Symbol MSBFIRST = 1     ' MSB first
DEFINE SHIFT_PAUSEUS 100
'-------------------------- PDESAVANJA --------------
        ANSEL = 0        ' Set all digital
        CMCON0 = 7       ' Analog comparators off
        WPU = 0 '??????????
     TRISIO     = %00111000  ' TRISIO     = %111000     '012-Izlaz 345 Ulaz
        OPTION_REG = %11000000
'        ANSEL      = %00000000     ' select all digital
        OSCCON     = %01110101     ' 8Mhz
'        CMCON0     = %00000111     ' disable comparator
      
 
 
 
 
 
 gore var GPIO.4
 dole var GPIO.5 
 stanje var GPIO.3
 INPUT stanje
   'DEFINICIJA PINOVA ZA SIFT REGISTER
'***************************************************   
DataPin var     GPIO.0         ' Shift data pin 0  *
ClkPin  var     GPIO.1         ' Shift clock pin 1 *
Strobe  var     GPIO.2   'PUSTA BBOJ KROZ REGISTAR *
'***************************************************

Strobe = 0

x var byte
y var byte
x1  var byte
y1 var byte

x1=0
y1=0
x = 0  'GORE 
y = 0  'DOLE
I VAR BYTE

Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10

;PAUSE 500
pocetak:
'**************PODIZE**************************

if stanje=0 then goto podize
if stanje=1 then goto spusta

podize:
y=0
DO while gore = 1 

'*****************STAVLJA GA NA NULU*******************
X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
'************************************************************
loop



do while gore = 0 
'*****************STAVLJA GA NA NULU*******************
X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
'************************************************************

loop

x=1
gosub IZLAZ
for i = 1 to 7
x=x*2
gosub izlaz 
next i
'*************SPUSTA***************
spusta:

x=0
do while dole = 1 
'*****************STAVLJA GA NA NULU*******************
X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
'************************************************************

loop


do while gore = 0
'*****************STAVLJA GA NA NULU*******************
X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
'************************************************************
loop
y=1
gosub izlaz


for i = 1 to 7
y=y*2
gosub izlaz
next i
goto podize
'*********************************************





izlaz:
x1=x
y1=y

Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
'pause 500
'***************PODESAVANJE PAUZA************************
'X1-GORNJI RED
'Y DONJI RED
IF X1 = 1 THEN PAUSE 1000 'pin J8
if x1 = 2 then pause 1000  'PIN J7
IF X1 = 4 THEN PAUSE 2000  'PIN J6
if x1 = 8 then pause 4000   'PIN J5
if x1 = 16 then pause 2000   'PIN J4
if x1 = 32 then pause 2000   'PIN J3
if x1 = 64 then pause 2000    'PIN J2
if x1 = 128 then pause 2000   'PIN J1



if y1 = 1 then pause 2000     'PIN J16
IF Y1 = 2 THEN pause 2000      'PIN 15
if y1 = 4 then pause 2000      'PIN 14
if y1 = 8 then pause 2000      'PIN 13
if y1 = 16 then pause 2000     'PIN 12
if y1 = 32 then pause 2000     'PIN 11
IF Y1 = 64 then pause 2000     'PIN 10
if y1 = 128 then pause 1000    'PIN 9




'*****************STAVLJA GA NA NULU*******************
X1=0
Y1=0 
Shiftout DataPin, ClkPin, MSBFIRST,[Y1,X1]'PRVI BROJ JE ZADNJI SHIFT REGISTAR 
Pulsout Strobe,10
'************************************************************
pause 500


return        
End