Ik probeer 4 74HC595's aan te sturen van een 16F628A.maar ik krijg Q3,Q4 en Q5 niet hoog, als ik alle outputs hoog maak dan worden deze een paar millivolt hoger terwijl de rest mooi naar 5v gaat. Dit is bij alle 4 de 74HC595 het zelfde. Als ik ze verwissel met andere 74HC595 dan hebben die het zelfde probleem.

schema:
http://i50.tinypic.com/2h4era1.png


Device 16F628A             
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
Xtal 4
All_Digital True                                            
              
Symbol  klok        = PORTA.2
Symbol  latch_pin   = PORTA.3
Symbol  Data_Pin    = PORTB.0
                
Symbol Knop1        = PORTA.1 : TRISA.1 = 1
Symbol Knop2        = PORTA.0 : TRISA.0 = 1

Symbol UIT         = 0         
Symbol AAN         = 1        

Main:   


    If Knop2 = AAN  Then
        ;                                76543210  76543210  76543210  76543210  
        SHOut Data_Pin, klok, MsbFirst, [11111111, 11111111, 11111111, 11111111]  
        GoSub latch
        DelayMS 500
    EndIf

    If Knop1 = AAN  Then
        ;                                76543210  76543210  76543210  76543210  
        SHOut Data_Pin, klok, MsbFirst, [00000000, 00000000, 00000000, 00000000] 
        GoSub latch
        DelayMS 500            
    EndIf

GoTo Main

latch:

Low latch_pin
DelayMS 2
High latch_pin
Return

Knoop de SER-ingang van de onderste '595 eens aan Vcc. Dan ben je er zeker van dat je enkel "enen" inklokt.

Welke pinnen noem jij Q3, Q4 en Q5? In je schema staan ze niet. Heb je alle 595's ook met 100 nF ontkoppeld?

Het kan zijn dat er teveel parasitaire capaciteit op de data of klok lijn zit en de bits niet goed ingeklokt worden.

Ik gebruik de '595 vaak voor sturing van een dubbel 2-segm LED display aan bjv een PIC12Fxx. Ik heb daarbij Pin 12 ook nog met een 10K aan massa zitten. Als je mijn schema wilt als referentie dan hoor ik het wel. Het is wel met 1x een '595 maar dat is eenvoudig uit te bouwen.

@pros
Als ik de SER ingang aan de vcc hang dan werkt het ma zodra ik deze er weer afhaal gaan Q3, Q4 en Q5 weer terug na 0

@Fuzzbass
QD, QE en QF

@plano
Pin 12 aan de massa heb ik nog niet geprobeerd maar als jij je schema wilt delen dan graag.

Als ik de SER ingang aan de vcc hang dan werkt het

Dan doen de schuifregisters wat ze moeten doen. Het probleem zit dus ergens bij de PIC...

Ben je niet vergeten PORTA.2 en PORTA.3 als uitgang te definieren, of doet PICbasic dat zelf?

Ik heb je het schema op de mail gezet. Ik hoor het wel als je ook mijn stukje code erbij wilt.

En weer hebben we een TS die de "sturende vragen" naast zich neerlegt en doet alsof die niet gesteld zijn.

Op 9 februari 2013 14:36:27 schreef Fuzzbass:
Heb je alle 595's ook met 100 nF ontkoppeld?

De 595's hebben allemaal een 100nF bij de vcc zitten.

En ik heb weer wat dingen geprobeerd.

  • pin 12 aan de massa via 10k
  • PORTA.2 en PORTA.3 als uitgang defineren
  • een andere 628A

@plano
Graag in welke taal is het geschreven?

PORTA.2 en PORTA.3 als uitgang defineren

Je code zegt enkel wat anders, namelijk:


Symbol  klok        = PORTA.2
Symbol  latch_pin   = PORTA.3
Symbol  Data_Pin    = PORTB.0

Probeer eens,


Symbol  klok        = PORTA.2 : TRISA.2 = 0
Symbol  latch_pin   = PORTA.3 : TRISA.3 = 0
Symbol  Data_Pin    = PORTB.0 : TRISB.0 = 0

Ik had het toegevoegd maar de code op de hier niet bijgewerkt. Dit is de code die ik nu gebruik. Ik het de latch aangepast kwam dit tegen op internet maar het zelfde resultaat.

Is het normaal dat het stroom verbruik van 0.031A naar 0.194A gaat als ik de output hoog maakt van de 595's ?


Device 16F628A             
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
Xtal 4
All_Digital True                                            
 
Symbol  klok        = PORTA.2 : TRISA.2 = 0
Symbol  latch_pin   = PORTA.3 : TRISA.3 = 0
Symbol  Data_Pin    = PORTB.0 : TRISB.0 = 0

TRISA.2 = 0
TRISA.3 = 0
 
Symbol Knop1        = PORTA.1 : TRISA.1 = 1
Symbol Knop2        = PORTA.0 : TRISA.0 = 1
 
Symbol UIT         = 0         
Symbol AAN         = 1        
 
Main:   
 

    If Knop2 = AAN  Then
        ;                                76543210  76543210  76543210  76543210  
        SHOut Data_Pin, klok, MsbFirst, [11111111, 11111111, 11111111, 11111111]  
        GoSub latch
        DelayMS 500
    EndIf
 
    If Knop1 = AAN  Then
        ;                                76543210  76543210  76543210  76543210  
        SHOut Data_Pin, klok, MsbFirst, [00000000, 00000000, 00000000, 00000000] 
        GoSub latch
        DelayMS 500            
    EndIf
 
GoTo Main
 
latch:

High latch_pin 
DelayUS 20 
Low latch_pin 
Return


Is het normaal dat het stroom verbruik van 0.031A naar 0.194A gaat als ik de output hoog maakt van de 595's ?

Nee. Dat duidt misschien op kortgesloten uitgangen van de 595's.

Carnaval is weer voorbij dus heb ik weer tijd wat te hobbyen

@Fuzzbass het was inderdaad in kortgesloten uitgang. Maar dit lost mijn eerste probleem niet op.

Wel heb ik de signalen gemeten met mijn scope en ben ik er achter dat het probleem bij de pic zit.

De code die ik op dit moment er in heb zitten:

Device 16F628A             
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
Xtal 4
All_Digital True                                            
 
Symbol  klok        = PORTA.2 : TRISA.2 = 0
Symbol  latch_pin   = PORTA.3 : TRISA.3 = 0
Symbol  Data_Pin    = PORTB.0 : TRISB.0 = 0

TRISA.2 = 0
TRISA.3 = 0
 
Symbol Knop1        = PORTA.1 : TRISA.1 = 1
Symbol Knop2        = PORTA.0 : TRISA.0 = 1
 
Symbol UIT         = 0         
Symbol AAN         = 1        
 
Main:   
                                                               

;LsbFirst
;LsbFirst_L 
;MsbFirst
;MsbFirst_L
;LsbFirst_H
;MsbFirst_H
 
    If Knop2 = AAN  Then
        ;                                76543210  76543210  76543210  76543210  
        SHOut Data_Pin, klok, MsbFirst, [10101010, 11111111, 11111111, 11111111]  
        GoSub latch
        DelayMS 500
    EndIf
 
    If Knop1 = AAN  Then
        ;                                76543210  76543210  76543210  76543210  
        SHOut Data_Pin, klok, MsbFirst, [00000000, 00000000, 00000000, 00000000] 
        GoSub latch
        DelayMS 500            
    EndIf
 
GoTo Main
 
latch:

PulseOut latch_pin, 200, High
Return

Datablok 1:
http://i47.tinypic.com/2j2g4mf.jpg

Datablok 2:
http://i45.tinypic.com/6p57wy.jpg

Alle 4 de blokken:
http://i48.tinypic.com/2lxblmr.jpg

Zet ook even de PORTB PULLUPS op OFF ...

Het was al wel bekend dat het in de software zat. Ik neem aan dat je met Proton Basic werkt ?

In de handleiding van Proton staat het volgende sample voor het schrijven van een byte:

' Interface a 74HC595 serial to parallel shift register
'
    $define SR74_LAT PORTC.0                    ' Choose a pin for the 74HC595 Latch line

    Include "74HC595.inc"                       ' Load the 74HC595 macros into the program
'
' Create a variable to work with
'
    Dim bPattern As Byte                        ' The byte to output via the shift register
'-------------------------------------------------------------------------------------------
' The main demo loop starts here
'
Main:

    bPattern = %00000001                        ' Initialise the byte to send
    While 1 = 1                                 ' Create an infinite loop
        '
        ' Cycle the outputs from Q0 to Q7
        '
        While 1 = 1                             ' Create a loop
            SR_WriteByte(bPattern)              ' Shift out the byte to the 74HC595
            bPattern = bPattern << 1            ' Move the pattern one bit to the left
            If bPattern = %10000000 Then Break  ' Exit the loop when we reach the last bit
            DelayMS 100                         ' Delay so we can see what's going on
        Wend
        DelayMS 100
        '
        ' Cycle the outputs from Q7 to Q0
        '
        While 1 = 1
            SR_WriteByte(bPattern)              ' Shift out the byte to the 74HC595
            bPattern = bPattern >> 1            ' Move the pattern one bit to the right
            If bPattern = %00000001 Then Break  ' Exit the loop when we reach the fist bit
            DelayMS 100                         ' Delay so we can see what's going on
        Wend
        DelayMS 100
    Wend                                        ' Do it forever

Ik heb de fout gevonden en het is echt een stomme fout.

voor de bit reeksen moet een % zodat picbasic weet dat het om bits gaat en niet om een getal

dit had ik eerst:

SHOut Data_Pin, klok, MSBFIRST, [10101010, 11111111, 11111111, 11111111]  

moet zijn:

SHOut Data_Pin, klok, LsbFirst, [%10101010, %11111111, %11111111, %11111111]