Ik ben bezig met een schakeling waarin ik een PLL moet aansturen via SPI (De PLL is een ADF-4118 van Analog).
Ik heb wat code geschreven voor de Arduino (Uno). Als ik de Arduino aan de schakeling hang met daarin de PLL kan ik prima de frekwentie van de VCO regelen.
Omdat ik de schakeling niet met een Arduino wil blijven bedienen heb ik een losse print gemaakt waar een LCD display + rotary encoder op zitten en een ATMEGA328P (Dezelfde chip als op de Arduino).
Ik gebruik een TQFP-32 variant van de ATMEGA328P ipv de DIP versie zoals op de UNO. Ik heb grofweg de relevante delen van de Arduino Uno nagetekend en hier een print van laten maken.
Pin-layout is ook hetzelfde gebleven als op de Arduino, dus de code kan een-op-een overgezet worden (daar ga ik tenminste vanuit).
De code uit de Arduino heb ik in de processor op de LCD print geladen en deze print vervolgens aan de schakeling met de PLL geknoopt. Wat schetst mijn verbazing: Het LCD en een rotary encoder doen het prima, maar de VCO komt niet op frequentie.
Om uit te sluiten dat er iets met de SPI pin-bezetting niet klopt heb ik een simpele sketch in de Arduino geladen die de pootjes van de SPI interface hoog/laag schakelt met een periode van 2 seconden. De code daarna ook in de LCD print geladen en ook op deze print meet ik keurig netjes op de verschillende pootjes van de processor een spanning die met een periode van 2 seconden HOOG/LAAG schakelt.
Zowel processor als PLL draaien op 5V, dus een probleem met level-conversie zou niet mogen spelen.
Om een lang verhaal kort te maken: Aansturing SPI via de Arduino werkt prima, maar via de eigen besturingsprint dus niet. En de vraag is, waar ligt dat aan?
Wat ik tot nu toe gedaan heb:
- Testprogramme geladen om de pinbezetting te checken
- Fusebits van de processor op de LCD print gelijk gehouden aan de Arduino. Ik heb wat ge-experimenteerd met de fusebits, maar zonder resultaat.
- Op de LCD print de serieweerstanden van 330R in de MOSI/SCLK lijn vervangen door 0R.
- Soldeerverbindingen nagekeken.
Iemand een idee waar ik het verder zou moeten zoeken?