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:
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
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Knoop de SER-ingang van de onderste '595 eens aan Vcc. Dan ben je er zeker van dat je enkel "enen" inklokt.
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
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.
plano
Webshop voor Electronic Prototype | http://eProto.nl/
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.
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
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...
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
plano
Webshop voor Electronic Prototype | http://eProto.nl/
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
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?
Tinus016
www.tinuselectronics.nl Because DIY Electronics Matters!!!!
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
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
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:
Datablok 2:
Alle 4 de blokken:
plano
Webshop voor Electronic Prototype | http://eProto.nl/
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 foreverIk 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] 