Ik wil graag een SAA1057 aansturen met PicBasic.
In de datasheet van de SAA zie ik dat er een 3-draads bus gebruikt wordt, die niet echt benoemd wordt. De lijnen hebben de namen DATA, DLEN en CLB.
Heeft deze bus een specifieke naam zodat ik er wat meer over kan zoeken?
Of misschien; welk commando in PicBasic past bij dit protocol?
In figuur 1 zie je dat die 3 pinnen naar een 16bits schuifregister gaan. Dus je moet het zo aansturen als bij een schuifregister. Dat is te zien in figuur 2.
DLEN maak je hoog.
Zet een bitje klaar op DATA
Maak klok hoog en dan weer laag.
Volgens mij is dat HSEROUT in picbasic, maar dat weet ik niet zeker. Het is iig software matige synchroon data versturen.
In de tabel staat onder het kopje bus input timings staan de minimum tijden die je aan moet houden.
Initialize procedure
Either a train of at least 10 clock pulses should be applied to the clock input (CLB) or word B should be transmitted, to
achieve proper initialization of the device.
For the complete initialization (defining all control bits) a transmission of word B should follow. This means that the IC is
ready to accept word A.
Om op te starten stuur je dus 10 klokpulsjes of je stuurt word B door. Dan wordt word B terug gestuurd naar jou, dat betekend dat jij word A kan gaan sturen.
Hoe je word B moet instellen staat allemaal op pagina 4 v/d datasheet.
Word A moet je zelf kiezen natuurlijk.
Dat commando HSEROUT heb ik wel eens gebruikt in combinatie met een 74HC595.
Dat wordt idd gebruikt om data te versturen.
Nu heb ik de datasheet van de HC595 er eens langs gelegd en zie dat de betreffende ingangen SERIAL DATA INPUT, SHIFT CLOCK en LATCH CLOCK heten.
Zijn dit gewoon verschillende benamingen voor dezelfde manier van aansturen?
Ik vind het nl. erg moeilijk om het BUS-format uit fig.2 te doorgronden.
Daar komt het wel op neer, simpel data inclocken.
Kan met SHOUT, maar je kan ook wat poortjes togglen.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Jochem
If you want to succeed, double your failure rate.
Ik heb het een en ander geprobeerd, maar helaas geen resultaat. Is de volgende denkwijze juist?
Hier is het gedeelte waar ik data probeer te sturen:
Symbol DTA = PORTA.4
Symbol CLK = PORTA.1
Symbol DLEN = PORTA.0
DLEN = 1
DelayMS 1
SHOut DTA, CLK, msbfirst, [%0000011000010101] ; Output Word A
DelayMS 1
SHOut DTA, CLK, msbfirst, [%1000010000000000] ; Output Word B
DelayMS 1
DLEN = 0
Het is beter om even je hele code neer te zetten.
Initialize procedure
Either a train of at least 10 clock pulses should be applied to the clock input (CLB) or word B should be transmitted, to
achieve proper initialization of the device.
For the complete initialization (defining all control bits) a transmission of word B should follow. This means that the IC is
ready to accept word A.
Heb je je daar aan gehouden?
Heb je je aan figuur 2 in de datasheet gehouden?
Mijn programma is niet veel meer dan dat:
Device 16F628A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
Declare LCD_DTPIN PORTB.0 ;LCD datalijnen op b0 t/m B3
Declare LCD_ENPIN PORTA.3 ;LCD Enable op A.3
Declare LCD_RSPIN PORTA.2 ;LCD RS op B.4
Declare LCD_INTERFACE 4 ;4 draads interface
Symbol DTA = PORTA.4
Symbol CLK = PORTA.1
Symbol DLEN = PORTA.0
Dim DELER As Word
Dim STAP As Byte
' *** MAIN PROGRAM***
DelayMS 500
DLEN = 1
DelayMS 1
SHOut DTA, CLK, msbfirst, [%0000011000010101] ;Output Word A
SHOut DTA, CLK, msbfirst, [%1000010000000000] ; Output Word B
DelayMS 1
DLEN = 0
End
Volgens de bescrijving die jij geeft; begrijp ik het dan goed dat je eerst Word b moet zenden en dan word A?
Volgens fig.s begint Word A altijd met een "0" en WORD B met een "1"?
Ik bedoel figuur 2 bus format.
Het is verstandig om altijd eerst even je poorten in te stellen. Het tris en port register.
Je moet eerst B of 10 klokpulsen sturen. Dan wordt B terug gestuurd en dan kan je pas A sturen. Dus
PortA = 0 ;alle pinnen laag
TRISA = 0 ;alles uitgang
DLEN = 1
DelayUS 5
SHOUT B
SHIN Bbuffer
SHOUT A
Delay
In figuur 2 staat dat de eerste klokpuls pas verzonden mag worden nadat DLEN voor T = CLBlag1 hoog is geweest. In de tabel staat de CLBlag1 minimaal 5us moet zijn.
DLEN moet ook nog een tijdje hoog zijn na de laatste klok puls. Die moet je ook nog even opzoeken.
OK, bedankt!
Ik was niet echt in staat om fig.2 op de juiste manier te lezen. Maar het is me nu al een stuk duidelijker geworden.
Nu weer even wat stoeien met deze nieuwe info
Nou, ik heb weer flink lopen te stoeien maar nog geen enkel resultaat!
Voor tDlenHold heb ik 2us gekozen, dat is de tijd die DLEN nog hoog moet blijven na de laatste klokpuls.
Wat ik eigenlijk nog steeds niet begrijp is waarom die SAA1057 zonodig Word B terug wil sturen vlak nadat ik die er naar toegezonden heb?!
Initialize procedure
Either a train of at least 10 clock pulses should be applied to the clock input (CLB) or word B should be transmitted, to
achieve proper initialization of the device.
For the complete initialization (defining all control bits) a transmission of word B should follow. This means that the IC is
ready to accept word A.
Ik lees dit stukje eigenlijk als volgt: Of je wilt Word B niet sturen maar geeft gewoon tien klokpulsen of je stuurt WordB. Maar voor complete initialisatie stuur je eerst WordB en dan is het IC klaar om WordA te accepteren.
Wat betekent het gearceerde deel eigenlijk uit fig.2? Is dat een status uit een vorige cyclus die niet belangrijk is voor dit plaatje?
Of is het om aan te geven dat de status niet belangrijk is omdat de SAA1057 er toch (nog) niet of niet meer naar kijkt?
Ik weet dat t een oud topic is, maar ben hier nu ook mee bezig en probeer te
begrijpen wat ze in de datasheet bedoelen met:
load mode of latch A; ‘1’ = synchronous, ‘0’ = asynchronous
Hoe kan ik een 16 bit binary waarde asynchroon toevoeren over 1 datalijn?
Dat kan toch alleen synchroon met klok?
Ze bedoelen vast iets anders ..... en dat is de interne verwerking van die waarde.
Ok .... niks gezegd hier 
In de prehistorie heb ik wel eens eens een serieele bus aangestuurd van een frequentie synthesiser.Ik heb met de datasheet erbij opgeschreven wat dat ding moest ontvangen voor data.Alle bitjes op een rij opgeschreven.Toen alles in een program gefrot, met iedere keer 1 instructie tegelijk.Dat ging toendertijd in een 8255 interface ic, welke de zender aanstuurde. Het werkte in 1 keer goed, maar was wel even werk om het uit te dokteren..
Ik ben hier met een panorama ontvanger bezig en aanvankelijk begon ik moeilijk met diverse Xtal oscillatoren te mengen om de juiste frequenties te krijgen. Op zoek naar kristallen kwam ik t bakje tegen met de
SAA1057 voorraad.... ja ... uiteindelijk wordt t dan zoveel beter allemaaal als ik dit oude IC inzet.
Weet eigenlijk niet eens of er modernere varianten zijn die nog leuker zijn om te gebruiken ....
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
hardbass
PE2BAS
Kan je C lezen? Dan heb je hier een voorbeeld:
https://github.com/junon10/saa1057/blob/master/SAA1057.cpp
Ik denk trouwens als je dit met AI omzet naar picbasic, dat je er al een heel eind bent.
Dat is inderdaad een inspirerende github library, kan ik zeker wat mee!
Zijn er ook nog andere low cost PLL IC's - bij voorkeur met IIC - die handig zijn
in de range 500Khz - 200 Mhz?
Ben nog aan het nadenken over hoe ik een loslopende VFO op iedere frequentie
stabiel zou kunnen krijgen. Een schakeling waarbij de fase offset in tact houdt?
Op dinsdag 6 januari 2026 11:25:49 schreef EgbertG
Ben nog aan het nadenken over hoe ik een loslopende VFO op iedere frequentie
stabiel zou kunnen krijgen. Een schakeling waarbij de fase offset in tact houdt?
Denk eens aan en huff en puff schakeling..
Die kreet huff en puff zal ik eens googlen ....
GEDAAN: ja ... goed idee! Eigenlijk een PLL schakeling, maar dan met een klein raster zodat ie altijd in
de buurt kan locken.
Ondertussen wel een TSA5512 als alternatief gezien, maar die heeft een onbruikbaar raster 
[Bericht gewijzigd door EgbertG op (31%)]
Hubie
Golden Member
S U M M E R T I M E https://youtu.be/zdIqME_JLaU?list=RDzdIqME_JLaU Brainbox:https://youtu.be/s_8AoIpeH_o?list=RDs_8AoIpeH_o
Er is een oud (Elektuur)boek over de SAA1057 en andere ontvanger chips.Inclusief programmas in Basic,picbasic bestond nog niet.
Hubie
Golden Member
S U M M E R T I M E https://youtu.be/zdIqME_JLaU?list=RDzdIqME_JLaU Brainbox:https://youtu.be/s_8AoIpeH_o?list=RDs_8AoIpeH_o

Nog goed verkrijgbaar ook en een prijsje van 2 x nix.