Pic16F73 met een Shiftregister 74HC165 en 74HC595

Hallo

Even een voorbeeld schakeling gemaakt.

De pic rechtstreeks aangesloten op de registers
aansluitingen zie programma.

Dit werkt niet

Het geheel werkt wel als ik portb.3(ShiftDataIn) met een weerstand van 220 ohm naar massa plaats.

Zogauw ik deze weerstand verhoog werkt het niet meer

Ik vindt de weerstand van 220 ohm zo laag
blijft dit wel goed gaan.

Device 16F73               ;Gebruik een 16F73 type   Alleen byteportB heeft pullups
XTAL = 4
ALL_DIGITAL = TRUE           
PORTB_PULLUPS On          

PORTA = %11111111        
PORTB = %00000000               
PORTC = %00000000
TRISA = %11111111
TRISB = %00000000
TRISC = %00000000

Symbol ShiftDataIn    = PORTB.3 
Symbol ShiftOpslag    = PORTB.1
Symbol ShiftClk       = PORTB.0
Symbol ShiftDataOut   = PORTB.2
Symbol Reseten        = PORTB.7

Dim Var1    As Byte
Dim Var2    As Byte

 
;programma
Reseten=1

 While 1 = 1

High ShiftOpslag       
SHIn ShiftDataIn, ShiftClk, lsbpre, [Var2, Var1]       'Laden van de 74HC165
Low ShiftOpslag
 
SHOut ShiftDataOut, ShiftClk, lsbfirst,[Var1, Var2]    'Uitlezen van de 74HC595
PulsOut ShiftOpslag,5 
  
Wend

(Volgende keer de PICBasic code tussen code tags a.u.b)

Die 220 Ohm zou niet nodig moeten zijn, bovendien is 220 Ohm veel te gek.
Probeer het eens uit op een poort die geen pull-up heeft.

Overigens altijd de regel PORTB_PULLUPS ON ná de TRIS instellingen plaatsen
Zie onderaan op www.picbasic.nl/info_pull-up.htm

Ook een DELAYMS 100 aan het begin van je code zou niet gek zijn (voor signaal stabilisering bij opstart van je schakeling).

Bedankt Frits

Geprobeerd op port.C een de Delayms er voor gezet en exact de zelfde
werking.
dus goed werkend als de weerstand van 220 ohm tussen DataShiftIn en massa zit.
wat kan dit nu zijn

Uren later

Ik ben er nu achter gekomen dat als het de eerste keer
het programma door loopt wel goed gaat
maar als die voor de tweede keer door het programma loopt gaat het fout
dan worden alle uitgangen op de 74595 allemaal 1
zegt dit iets

Je hebt iets niet fijn zitten.
Ik kan zo op afstand niet zien wat er fout zit, loop alle draden nog eens na (vooral de aansluitingen aan de pinnen van de 74HCxxx chips (heb je bijvoorbeeld de Output Enable (pin 13) van de 74HC595 aan GND verbonden?).
Bij mij thuis werkt het prima: 3 stuks 74HC595 en 2 stuks 74HC165 staan allen in serie en met een gezamelijke kloklijn.
Probeer het eens los van elkaar, dus eerst alleen een 74HC595 met SHOUT aansturen.
En daarna alleen een 74HC165 met SHIN.

http://www.picbasic.nl/images/electro_shiftout1.gif

He mooi schematje cursus 11 is dus in de maak (kan niet wachten)

Ik heb een test printje gemaakt met 2x de 74hc165
met 2x8 schakelaars en pullup weerstanden
print is verbonden via een header van 10 pin met een flat kabel (20 cm)
naar de moederboard pic controller
en zo is er ook een printje voor de 74hc595

het programma werkt als ik while 1=1 en wend vervang voor start: en End

dus als die 1 keer het progr. langs loopt gaat het goed en de tweede keer gaat het fout

de fout zit bij

High ShiftOpslag       
SHIn ShiftDataIn, ShiftClk, lsbpre, [Var2, Var1]       'Laden van de 74HC165
Low ShiftOpslag

heb ze los van elkaar getest
andere deel werkt perfect

Maar als het de eerste programma loop wel goed gaat kan het dan toch nog een hardware probleem zijn

Doe eens:

LOW  ShiftOpslag   ;Ingangen laden
DELAYMS 1          ;Puls 1 mSec aanhouden
HIGH ShiftOpslag   ;Disable de loadpin (pin 1 van de 74HC165)
SHIN ShiftDataIn, ShiftClk, lsbpre, [Var2, Var1]
DELAYMS 1

Die laatste DELAYMS kan mogelijk vervallen (even experimenteren).

De naam ShiftOpslag klopt eigenlijk niet, maak iets van LaadIngangen of LoadInputs, o.i.d.

Nou moe

Frits ik begrijp er niks meer van maar nou werkt het perfect.
Hartelijk dank voor je geduld

Hans