Best Co'ers,

Ik heb hier een pic 16f648A die een schuifregister aanstuurt. Hierbij moeten de eerste vier lampjes knipperen.


DEVICE 16F648A                ;We gebruiken een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
XTAL 4
TRISA = 0
       
    WHILE 1 = 1
    SHOUT PORTA.1, PORTA.0, MSBFIRST, [ 0 ]
    DELAYMS 200
    
    SHOUT PORTA.1, PORTA.0, MSBFIRST, [ 15 ]
    DELAYMS 200
       
    WEND
END

De eerste vier lampjes knipperen en de andere vier blijven uit.
Maar wat er met het ritme gebeurt is dit:

aan 200ms
uit 200ms
aan 200ms
uit veel langer, wel een seconde
en dan weer opnieuw

Wat is hier aan de hand? Als ik shout vervang door gewoon een poort direct hoog of laag knippert het lampje wel goed. Ik heb alle ontkoppeling etc goed gedaan.

Typisch :o
Zelfs de gegenereerde assembler ziet er goed uit.
Is dit de minimale code waar het fout mee gaat?
Niet toevallig nog wat extra instructies in je programma staan die je hier hebt weggelaten?
Hoeveel en wel schuifregister gebruik je?

Nee maar, een CCR fan uit 1994; Sweet Hitchhiker ;)

Meestal hebben die dingen ook een latch of Output Enable ingang, waarmee de de ingeklokte data werkelijk naar de uitgang zet.

Wat heb je daarmee gedaan?

ik kon in de datsheet van 74hct164 niks vinden over latch. Ik dacht eerst dat het een telfoutje was maar het is nog vreemder. Het knipper zo:


  _   _      _   _      _   _   _
_| |_| |____| |_| |____| |_| |_| |_____ enz

vooral de regelmatigheid is vreemd. Er zijn twee ingangen voor data. de 1e heb ik aan de + gehangen en de andere aan de data output van de pic.

[Bericht gewijzigd door pientertje op (16%)]

heeft iemand een idee? Ik ben nu bezig met zelf wat in ASM in te kloppen.

Als je de CLEAR v/d 74164 aan GND hebt geknoopt, zoals het hoort, kan het weinig anders zijn dan een software-probleem.

Volgens mij (maar weet het niet zeker bij de HC164, want gebruik zelf altijd 74HC595 schuifregisters), stuur je de latch niet aan.

Heb nog nooit geen problemen met de instructie SHOUT gehad.

@pros ????

A LOW level on the master reset (MR) input overrides all other inputs and clears the
register asynchronously, forcing all outputs LOW.

Hij blijft ook leeg als ik hem aan gnd hang. En volgens de datsheet heeft de 164 geen latch.

edit: een nieuwe help ook niet.

Oeps! Die CLEAR moet aan Vcc, zoals je schrijft. (Bloos, bloos)
En de 74164 heeft idd. geen latch oid. omdat hij geen uitgangsbuffers heeft. De flipflop-uitgangen zijn rechtstreeks naar buiten gevoerd.

Nog vreemder! Als ik de klok laat zweven werkt het geval wel.

Dan moet het Magie zijn! :-)

Misschien toch maar eens alle verbindingen (ook Vcc en GND) met de nodige argwaan controleren?

vcc is keurig 4,95 wat ook op mijn labvoeding staat. Ik meet dan direct op de pinnen van het ic. Ik heb hier geen LA, maar als ik meet op de multimeter meet ik op de uitgangen 4 volt met belasting(één led) Het werkt ook als de ander ingang laat zweven. Ze zijn intern ge-and. Volgens de datasheet moet ik een ongebruikte ingang hoog trekken. Het werkt zo wel maar het is wel smerig. Als ik een (gewoon) ledje mee laat knipperen blijkt dat als hij het niet doet ook veel te langzaam werkt. Er gaat dus iets goed fout.

Kan iemand hier niet even tot de CO goden bidden? ;)

[Bericht gewijzigd door pientertje op (13%)]

't Zal weer iets onnozel zijn, zoals wel vaker gebeurt.

Als de uitgangen laag zijn, terwijl je verwacht dat ze hoog zijn, geldt dat dan voor alle uitgangen? Dat kan je beter bestuderen door de delay (nu 200mS) wat langer te maken; 1000mS bv.

Als ik een (gewoon) ledje mee laat knipperen blijkt dat als hij het niet doet ook veel te langzaam werkt. Er gaat dus iets goed fout.

Een LED op de DATA-ingang? Die zou de helft van de tijd moeten oplichten, me dunkt. Je stuurt immers "MSBFIRST", zodat het laatste bit afwisselt tussen hoog en laag.

Nee, als ik een togle op een andere poort zet voordat ik de shift instructie geef. En de andere uitgangen flikkeren als de boel uitgeschoven wordt.

[Bericht gewijzigd door pientertje op (28%)]

Raakt je pic'je niet in de knoop nadat je eerst zijn interne klok configureert(INTRC_OSC_NOCLKOUT) en daarna een externe (xtal 4)?
Als je klok niet lekker klokt loopt je serieel ook slecht.

Ik heb die xtal er ook al uitgegooid, dat hiel ook niks.

Voeding stabiel? Alle IC's ontkoppeld net 100 nF?