Weer het zoveelste topic over de 74HC595 hoor ik al denken maar ik kom er helaas niet meer uit. Ik ben een paar week nu bezig met PiC's en gebruik PICbasic + Proton IDE als taal en programmer.
Ik gebruik het volgende schema:
http://i4.photobucket.com/albums/y149/skimmerbas/schema.jpg
Verder geen extra dingen toegevoegd behalve een 100n ontstoorcondensator voor de PIC.
Datasheet van het register (de ST):
http://www.datasheetcatalog.com/datasheets_pdf/7/4/H/C/74HC595.shtml
Eerst probeer ik het schuifregister linksboven aan te sturen met de volgende datalijnen:
SYMBOL DataPin = PORTB.0 ;Pin 18
SYMBOL ClockPin = PORTB.1 ;Pin 17
SYMBOL latch = PORTA.2 ;pin 1
SYMBOL ON = 1 ;AAN
SYMBOL OFF = 0 ;UIT
Het programma daarvoor is als volgt:
DEVICE 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF
ALL_DIGITAL TRUE
CLEAR
SYMBOL DataPin = PORTB.0 ;Pin 18
SYMBOL ClockPin = PORTB.1 ;Pin 17
SYMBOL latch = PORTA.2 ;pin 1
SYMBOL ON = 1 ;AAN
SYMBOL OFF = 0 ;UIT
DELAYMS 1000
;Dpin, Cpin, Mode, [MijnData] 12345678
SHOUT DataPin, ClockPin, LSBFIRST, [%11111111]
latch = ON
DELAYMS 5
latch = OFF
END
Iemand enig idee wat ik fout doe?
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Je vergat te vermelden wat er fout gaat... 
Verder: MR (aan Vcc) en OE (aan GND) goed aangesloten?
En misschien een "latch = OFF" voor je SHOUT aan het werk zet? Wellicht overkill, maar zeker is zeker.
Wat er fout gaat: De IC reageert volgens mij niet goed met het register. Als ik een LCD aansluit en wat tussenstappen inprogrammeer, dan komt ie daar niet. Dus hij loopt het programma niet goed door.
Maar dat is op een breadbordje. Het hele schema heb ik ook opgebouwd op een europrintje en daar werkte het half. Sommige LED's gingen wel aan en andere niet. Maar dat lag eerder aan het programma weer aangezien ie het de ene keer wel deed en de andere keer niet.
Het is een beetje vaag maar daarom vraag ik jullie. De pinnen/hardware zit verder wel goed volgens mij.
Heeft iemand een stukje software met mijn pinnen waarvan zeker is dat het werkt? Dan kan ik daarmee verder klooien.
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Even uit m'n hoofd: volgens mij zijn de PORTA pinnen default als input ingesteld.
Dus:
latch = ON
DELAYMS 5
latch = OFF
... doet volgens mij niet zo heel veel als je niet ook eerst...
TRISA = %11111011
... doet (PORTA.2 als output configureren).
En oh ja, gebruik je nu een 16F628a of een 16F648a?
[Bericht gewijzigd door picsels op (11%)]
Dat klinkt heel logisch maar helaas heeft het nog niet het gewenste effect. Hij loopt het programma gewoon niet goed door?
Het is een 64A overigens maar voor het proggen maakt dat niks uit heb ik gelezen.
Bedankt voor de snelle reacties overigens.
~Galaxy
In the beginning there was nothing.... and even that exploded...
De sim draait overuren vanavond...
Je tris settings waren niet goed.
Draait nu als een zonnetje..
Device 16F628A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF
ALL_DIGITAL TRUE
Clear
TRISA=0
TRISB=0
Symbol DataPin = PORTB.0 ;Pin 18
Symbol ClockPin = PORTB.1 ;Pin 17
Symbol latch = PORTA.2 ;pin 1
Symbol On = 1 ;AAN
Symbol OFF = 0 ;UIT
DelayMS 1000 ;Dpin, Cpin, Mode, [MijnData] 12345678
SHOut DataPin, ClockPin, lsbfirst, [%11111111]
latch = On
DelayMS 5
latch = OFF
EndSuper! Voor zover ik kan zien werkt het nu
Als je er zolang naar kijkt, zie je simpele dingen over het hoofd.
Bedankt!
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Op 28 december 2007 21:59:53 schreef picsels:
Mijn post hierboven ook over het hoofd gezien??Maar in elk geval mooi dat het werkt!
Ik had hem wel gezien maar gewoon blindelings gekopieërd en het werkte niet direct. Aangezien ik er gister aardig zat van was heb ik er toen verder niet meer naar gekeken.
Het was wel de oplossing idd. dus bedankt
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
No worries 
Kun je trouwens niet nog een aantal pinnen besparen door de clock en data-lijnen gemeenschappelijk aan te sluiten, en alleen de latches individueel?
Klopt, je kan em ook nog in serie zetten. Maar dan moet er wel eerst 1 werken..
Want het lukt me nog steeds niet
Ze gaan wel aan, maar daarna kan ik ze niet weer uit doen. Of in een patroontje knipperen oid. gaat ook niet. Wat doe ik dan fout? Ik gebruik de code zoals `Galaxy heeft laten zien.
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Device 16F628A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF
ALL_DIGITAL TRUE
Symbol DataPin = PORTB.0 ;Pin 18
Symbol ClockPin = PORTB.1 ;Pin 17
Symbol latch = PORTA.2 ;pin 1
Symbol On = 1 ;AAN
Symbol OFF = 0 ;UIT
Clear
TRISA=0
TRISB=0
; continue aan- en uitknipperen
while 1=1
; Alles aan
DelayMS 1000
; Dpin, Cpin, Mode, [MijnData] 12345678
SHOut DataPin, ClockPin, lsbfirst, [%11111111]
latch = On
DelayMS 5
latch = OFF
; Alles uit
DelayMS 1000
SHOut DataPin, ClockPin, lsbfirst, [%00000000]
latch = On
DelayMS 5
latch = OFF
Wend
EndZoiets zou dan toch moeten werken?
Simpel alles aan- en uitzetten.
(Even uit m'n hoofd, niet gecheckt...)
Als ik dat programma er direct in zet dan gaat het goed. Pas ik ook maar 1 ding aan, bijvoorbeeld led 1 uit i.p.v. aan dan werkt het niet meer?
Hij ging eerst idd. mooi knipperen maar als ik iets verander of stroom eraf en er weer erop doe, dan werkt het niet meer. Ligt het dan toch aan de hardware? Moeten er ergens nog ontstoorcondensators oid over voedingspinnen van het register?
Ik gebruik als voeding een 5V 0.5A voeding.
Edit: Als ik hem een minuutje uit heb, en dan weer aan werkt het ook weer goed.
Edit2: Schijnbaar ligt het toch aan de voeding. Net heb ik wat aangepast in het programma en in de PIC geladen. Vervolgens deed ie uiteraard niks. Een minuutje gewacht en nu voert ie dat programma uit 
Edit3: Na wat experimenteren met verschillende programma's werkt het allemaal goed op het breadbordje. Zolang ik maar even wacht met de voeding erop te zetten (Lees: Uit doen en na een tijde weer aan) dan gaat het goed. Nu moet het nog werken op het printje maar dat komt wel goed.
Heel erg bedankt
[Bericht gewijzigd door TEAMIKKE op (18%)]
~Galaxy
In the beginning there was nothing.... and even that exploded...
Lijkt inderdaad een voedingsprobleempje.
Met de scope in AC stand even checken hoeveel noise er op de voedingslijn staat.
Wat je verder nog kan doen is onder ALL_digital een delay van 50 ms zetten. Dat is om de pic te laten stabiliseren.
Eventueel in je config nog MCLRE_OFF
Verder kan je code nog iets compacter door
latch = On
DelayMS 5
latch = OFF
te vervangen door :
pulsout latch, 500
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
In de praktijk is een wachttijd tussen het hoog maken v/d latch en het terug laag maken totaal overbodig. De 74HC595 reageert enkel op de stijgende flank. Hetzelfde geldt trouwens ook voor de seriële CLK.
Enkel als de schuifregisters aangestuurd worden via lange (> 1m) draden, is een minieme wachttijd aan te raden.