Hi an alle, da ich noch bei www.sly.de recht günstig an den SAA1057 gekommen bin (7.2MHZ Quarze gibts da auch noch, falls jemand den LM7001 verwenden will), würde ich nun gerne die bisherige Pwm Abstimmung meines Bastelradios durch eine Pll ersetzen. Da das aber mein erstes I2C Projekt ist, habe ich noch ein paar Fragen. MC ist ein Amega16 1. Wie funktioniert den genau das Beladen des Latches A mit dem Frequenzwert? Ich sende eine I2C Startbedingung an den Chip und dann sende ich an die Datenleitung den Bitwert 0, um ihm zu sagen, dass er in den Latch A schreiben soll, was kommt aber dann ? 2. Wofür ist die DLEN Leitung? Und was muss ich auf der ausgeben, um Senden und lesen zu können. Kann ich denn die in Bascom integrierten I2C Routinen zum steuern verwenden? 3. Welche I2C Adresse hat den der Saa1057?
Kann mir keiner weiterhelfen? Wenn das noch niemand in Bascom gemacht hat, kann er mir vielleicht bitte Pseudocode bzw. allgemeine Antworten geben. Wie ich Latch B beschreiben muss, hab ich bereits dem Datenblatt entnommen, aber mit den Angaben für Latch A konnte ich nichts anfangen.
So nachdem ich nochmal gründlich ins Internet und Datenblatt geschaut habe, denke ich jetzt zu wissen wie das funktioniert. Kann mir vielleicht jemand sagen ob meine Annahmen richtig sind? Also in Latch A muss der Teilerwert von 512 bis 32... in Binärform geschrieben werden, multipliziert mit den gewählten Tuningschritten ergibt er die Frequenz. DLEN sagt einem Slave ob er angesprochen wird, deshalb muss er solange wie man in einen Latch schreibt/liest high sein, ist die Datenübertragung beendet muss er wieder Low werden. Deshalb entfällt dann auch die I2C Adresse, die integrierten Bascom I2C Routinen werde ich denke ich mal benutzen können. Eine Frage hätte ich aber noch, wie ändere ich den die Frequenz in der Software, kann ich einfach vom Teilerwert eins abziehen, und er tunt dann runter oder wie muss ich das machen? Schonmal danke für eure Antworten.
Hallo, I2C nutzt Dir nichts, der SAA1057 und auch die anderen alten PLLs machen kein I2C. Das ist einfach ein serielles Schieberegister. Ruhezustand: CLB auf L Data auf L DLEN auf L Zum rüberschieben jetzt: DLEN auf H. mit L -> H -> L auf CLB übernimmt der SAA jetzt das Bit an Data. Das ist die führende 0, weil Data ja auf L liegt. dann: Nächstes Bit an Data. CLB L -> H -> L Nächstes Bit an Data CLB L -> H -> L usw. bis Bit 16 Dann DLEN auf L CLB auf L Data auf L dann bist Du durch. Mit I2C hat das nichts zu tun. Man könnte es vielleicht mit SPI machen, ist aber vermutlich selbst mit grötem Vorteiler zu schnell. Beachte die Zeiten auf Seite 8 und das Diagramm auf Seite 5. Das geht alles im Bereich mehrerer µs, also recht langsam für einen AVR. Viel Erfolg. Gruß aus Berlin Michael
Danke für deine Antwort Michael Hi ich bin gerade dabei das Programm zu schreiben Kann mir vielleicht jemand helfen ich hab noch ein Problem: Wie muss ich den im Allgemeinen das rauf und runtertunen an den Saa1057 übertragen, ich habe gerade leider keine Idee wie ich das in Software realisieren muss? @Bascom Benutzter gibt es den einen Befehl oder irgendeibe einfache möglichkeit Dezimalzahlen als Binärzahlen auf einem Port auszugeben? Er soll je nach entsprechender Binärzahlenfolge den Port im Wechsel High und Low schalten. Freundliche Grüße an alle
wenn du die zeit für deine forenergüsse in das bascom handbuch investieren würdest, dann wärst du schon längst fertig ............. traurig
@ ??? Danke für deine Antwort @ Nerv zuerstmal hab ich ins Handbuch geschaut und bin bei Shiftout fündig geworden, leider kann ich das nicht benutzen, da nach jedem übertragenen Bit ein Wechsel auf der CLB Leitung von Low zu High und wider Low erfolgen muss, damit er das Bit übernimmt, somit funktioniert die Idee von ??? leider auch nicht bzw muss erweitert werden . Und zweitens wäre es vielleicht besser wenn du bitte keine nutzlosen Kommentare schreibst, sondern wenn du weißt wies geht, die Lösung hier im Forum postest. Für weitere Lösungen wäre ich sehr dankbar Mfg Fabian
dann musst du deine Fragen auch richtig stellen. Du das gefragt : Dezimalzahlen als Binärzahlen auf einem Port auszugeben wiederhole --> Port du meinst jetzt aber anscheinend : eine Binärzahlen auf einem „Pin“ seriell ausgeben oder was ?
Und warum geht da Shiftout nicht ? Pin ist deine Datenleitung und Pclock ist dein CLB Leitung und wenn das wirklich nicht geht dann mach das ganze von hand wie es Michael U. oben schon geschrieben hat
1 | Dim Daten As Byte |
2 | Config Pinc.2 = Output 'CLB |
3 | Config Pinc.3 = Output 'Data |
4 | Reset Portc.2 |
5 | |
6 | Daten = 10 |
7 | |
8 | Portc.3 = Daten.0 |
9 | Set Portc.2 |
10 | Reset Portc.2 |
11 | Portc.3 = Daten.1 |
12 | Set Portc.2 |
13 | Reset Portc.2 |
14 | Portc.3 = Daten.2 |
15 | Set Portc.2 |
16 | Reset Portc.2 |
17 | Portc.3 = Daten.3 |
18 | Set Portc.2 |
19 | Reset Portc.2 |
20 | Portc.3 = Daten.4 |
21 | Set Portc.2 |
22 | Reset Portc.2 |
23 | Portc.3 = Daten.5 |
24 | Set Portc.2 |
25 | Reset Portc.2 |
26 | Portc.3 = Daten.6 |
27 | Set Portc.2 |
28 | Reset Portc.2 |
29 | Portc.3 = Daten.7 |
30 | Set Portc.2 |
31 | Reset Portc.2 |
32 | |
33 | End |
34 | |
35 | oder anstelle von Set / Reset Pulseout Portc , 2 , 1000 |
Hallo, ??? hat ja jetzt schon den Ansatz in BasCom geliefert. Ich habe wenig Lust, mich mit den Feinheiten von BasCom auseinanderzusetzen. Du wirst obige Routine nochmal auf das Doppelte aufbohren müssen, das 16Bit-Kommando für die PLL vorher zusammenbasteln, den High-Teil z.B. nach DatenH und den Low-Teil nach DatenH, dann eben hintereinander rausschieben. Portc.3 = 9 führende 0 zum Start Set Portc.2 Reset Portc.2 Portc.3 = 0 0 für Teiler, 1 für Controlwort Set Portc.2 Reset Portc.2 Portc.3 = DatenH.5 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.4 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.3 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.2 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.1 Set Portc.2 Reset Portc.2 Portc.3 = DatenH.0 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.7 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.6 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.5 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.4 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.3 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.2 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.1 Set Portc.2 Reset Portc.2 Portc.3 = DatenL.0 Set Portc.2 Reset Portc.2 Denk an die Zeiten, Clock Low > 5µS, Clock High > 5µS usw. Gruß aus Berlin Michael
Hi danke für eure Mühen ich stell mal den Quellcode rein. Hoff mal das ich das Proggi genügend gut kommentiert habe.
Hallo, so auf den ersten Blick sollte es gehen. 2 Fragen dabei: Du bist sicher, daß Du die Übertragung für Latch B einach früher abbrechen kannst? Im Datenblatt habe ich auf die Schnelle nichts dazu gefunden. Es würde mich etwas wundern, wenn es so wäre. Normalerweise ist in der PLL ein Schieberegister, wenn Du nur 8 statt 16 Bits reinschiebst, landen die eigentlich an falschen Positionen. Der Hinweis, daß SB2 die letzten 8Bit intern auf 0 setzte, heißt für mich, daß es egal ist, was man da rausschiebt. Das Diagramm spricht immer von allen 16Bit. 2. Du hast die ZF von 10,7MHz berücksichtigt? 94,7MHz ist die Oszillatorfrequenz, empfangen wird dann ein Sender auf 94,7 - 10,7 = 84 MHz, da sendet aber niemand... Ansonsten: wenn Du was kürzeres als waitms in BasCom hast, 10µs würden überall reichen und wäre 100x schneller... ;) Gruß aus Berlin Michael
faulen menschen hilft man nicht damit, indem man ihnen alles vorkaut. das problem begrenzt sich darauf wie man portpins an und abschaltet(bascom) und wie man es in der richtigen reihenfolge tut (handbuch SAA105).
Hallo, @nerv: naja, ob faul will ich mal dahingestellt lassen... Ich habe eher den Eindruck von "ich habe von nichts eine Ahnung, will aber jedes Fahrrad erstmal selbst erfinden. Inzwischen weiß ich schon, daß eckige Räder nicht so das Wahre sind. Etwas sträube ich mich aber noch, runde Räder zu nehmen, ich probiere erstmal dreieckige, rund bekomme ich nicht auf die Reihe." Ich denke, sich Kenntnisse über Überlagerungs-Empfänger, UKW-Tuner, elektronische Abstimmung, Aufbau von HF-Schaltungen, Progammierung im Allgemeinen, AVR-Programmierung im Speziellen, BasCom usw. gleichzeitig aneignen zu wollen, fordert einen sehr gesunden Optimismus. Andererseits habe ich gaaaanz früher in meiner Jugend auch unbedingt alls selber probieren müssen und manchmal ging dann sogar was von den Sachen. Es ist heute manches auch "zu einfach" geworden, man findet genug "Baukästen", die man gut nutzen kann. Wenn ich an einen Tunerbaustein mit ZF und Demodulator eine Abstimmspannung hängen kann und es kommt hinten Musik raus, habe ich ein Radio gebaut. Nein, ich habe ein fast fertiges Radio in Betrieb genommen, nicht soviel mehr, als wenn ich den Stecker in die Steckdose stecken kann... Ich will ihn damit auch garnicht vergraulen, er ist mit dieser herangehensweise ja garnicht so alleine. Gruß aus Berlin Michael
Ok danke für die Posts. Ich werde dann mal demnächst die Bauteile bestellen und das Ding aufbauen. @Nerv Portpin an und abschalten, dass kann ich ja wohl, sonst hätte ich das Programm ja nicht schreiben können. Nebenbei würde mich mal interessieren was du schon so gebaut hast . @ Michael immerhin finde ich es besser mal selber mit nem Tunermodul nen Radio aufzubauen als sich son billig Radio (Geiz ist geil) selber zu kaufen und sich dann drüber wundern das man seinen Lieblingssender nicht reinbekommt. Ein anderes Ding wären die vielen "Hobbybastler" die ihre Geräte an der Netzspannung betreiben und sich um elektronische Sicherheit keine Gedanken machen. Aber genug gestritten. Außerdem ist son Forum ja da um Fragen zu stellen oder etwa nicht?
>Ansonsten: wenn Du was kürzeres als waitms in BasCom hast, 10µs würden >überall reichen und wäre 100x schneller... ;) das währe dann : Waitus 10 Ich habe mit dem SAA 1057 nichts am Hut aber alle 16 Bit auf einmal zu schreiben scheint mir auch sinnvoller. um 16 Word aufzuteilen : Low() High() und auch entweder von Hand Set /Reset oder mit Shiftout einmal so und einmal so, ist nicht so Übersichtlich und auch das Timing schwankt .
Hi ich bins wieder, ich hab geradeben alles aufgebaut und getestet, leider scheint es nicht zu funktionieren, ich hör zwar Sender, aber leider total verrauscht. Das einzige was ich an der Schaltung des Datenblatts geändert habe ist der Kondi, der den Quarz zum schwingen anregt, ich hab anstatt 27pf 22 genommen, aber das wird wohl egal sein. Kann vielleicht bitte jemand nochmal den Quellcode durchschauen, oder falls er schonmal den SAA1057 angesteuert hat mir vielleicht seinen Quellcode zum testen geben. Ich hab für die Versorgungsspannung 5V genommen und für die Ladungspumpe 10V. Oben ist der Quellcode.
Hallo, wenn Du Sender einstellen kannst, muß ja die PLL irgendwie laufen und eine Abstimmspannung erzeugen... Verrauscht würde nur gehen, wenn Du auf die Spiegelfrequenz abstimmst, also statt Fosc = Feing + Fzf auf Fosc = Feing - Fzf abstimmst, dann sind die Vorkreise logischerweise faksch abgestimmt. Das sollte aber nicht sein, wenn Du einen festen bekannten Sender programmierst. Die andere Möglichkeit wäre nur, der PLL-Kram stört duch seinen Aufbau usw. den Tuner oder die ZF direkt. Gruß aus Berlin Michael
Hi hat den noch niemand den SAA (egal in welcher Sprache) angesteuert, im Internet hab ich leider nur Beispiele mit einem Pic aber nicht mit einem Atmega gefunden. Kann mir vielleicht jemand bitte nen Link geben, wo ich mir ein Programm (um den SAA per Mega anzusteuern) zum testen runterladen kann? Danke schonmal für eure Antworten.
Lustig immer wenn ich nen Taster drücke dann leuchtet die Stereo Decoder Led, aber ich höre nur rauschen woran kann das den liegen?
Hi ich bins wieder, da Bascom wohl doch nicht so verbreitet ist, hab ich im Internet das angehängte Programm in C gefunden und habe es dann meine Config angepasst. Bei mir ist die Clock Leitung Portc.7, die Dataleitung Porta.6 und die Dlen Leitung Porta7. Leider hab ich gerade beim probieren wieder nur Rauschen gehört und ganz schwach nen Sender. Als Mc hab ich den Atmega16 bei 1MHZ internen Takt genommen. Kann jemand vielleicht mal bitte einen Blick auf das Programm werfen und mir sagen, ob das Programm funktionieren müsste? Ich bin gerade ein bisschen am verzweifeln, hab es schon etliche Male mit Bascom und dann auch C probiert aber es hat nicht geklappt. Danke schonmal für alle Antworten im Voraus. Den SAA1057 müsste ich doch direkt an meinen Ozillatorausgang anschliessen können und brauch nicht nochmal extra Wandlerschaltungen oder? Als Schaltung hab ich die von Pira.cz genommen im Ausgang hat der einen 10µF Tantal Kondensator genommen, ich aber nen normalen 10µF Elko, trotzdem dürfte ich doch wenigstens etwas hören.
Hallo, hab mal was rangehangen. kannst ja mal ein Übersetzungsprogramm bemühen für die Kommentare... Gruß aus Berlin Michael
:D ja das wäre angebracht, aber entweder war ich zu doof um was auf Englisch oder Deutsch zu finden, oder es gab wirklich nichts. Der Schaltplan bleibt aber zum Glück immer noch lesbar.
gib zu du bist doch auch zum lesen des schaltbildes zu dusselig. jetzt hast du sogar schon ein komplettes program und bekommst immer noch nichts auf die reihe. tipp: kauf dir ein radio...
Hi ich bins nochmal, ich hab die ganze Schaltung gerade an nem Labornetzteil angeschlossen, jetzt kann ich per Betriebsspannungspoti am Labornetzteil den Sender einstellen, Stereo funktioniert auch, also scheint das Ding irgendwie eine Abstimmspannung zu erzeugen. Normal müsste er sich doch, wenn ich die Spannung geringfügig ändere wieder auf den Anfangs per Frequenzword eingestellten Sender einregeln oder? Ich hab irgendwie den Verdacht das irgendwas mit dem Ozillatorausgang des Tunermoduls nicht stimmt. Woran könnte das den vielleicht liegen Als Programm hab ich das von mir oben gepostete verwendet. Das Labornetzeil hat nen seperaten 5V Ausgang da hab ich den Mc und die Betriebsspannung des SAA angeschlossen. Die Abstimmspannung für die PLL und die Betriebsspannung für das Tunermodul hab ich an den variablen Ausgang rangehängt.
Hallo dass sich der Sender ändert, wenn du die Spannung hochdrehst erdscheint mir logisch, da du damit ja uch die Verstärkerspannung des PLL und so die AUsgangsspannung erhöhst. Kannst du den sender auf knopfdruck ändern, oder bekommst du immer den gleichen verrauschten sender?
Hallo dear friends, I can't uderstand German but I feel your discussion should be very helpfull for me. I have some SAA1057 but I am not able to configure its. What I need is the sequence of istruction to set the PLL (using a PIC). I realized the PLL by Freddo's page and really work well. What I want is to program my PIC to drive thi PLL chip using my own software. Reading around (data sheet included)I understand is necessary to start whit at least 10 clock impulses. But in same application this is not present. Could be very interesting to get your experiences but, again, I don't understand German language. Could you sommarize a sequence of istruction in English? (I am Italian but I can read English). Thanks and Happy New Year Giacomo
Hallo! Ich bin auch dabei einen SAA1057 mit einem AVR anzusprechen. Nur leider funktioniert rein garnichts. Hat von Euch schon jemand den SAA1057 über einen AVR zum laufen bekommen? Wäre schön mal einen Code als Beispiel zu bekommen. Michael
Hallo Michael, zwar ein recht alter Originalbeitrag - aber vielleicht hilft Dir das weiter: Arnoldt, Michael Computergesteuerte Empfänger Schaltungen, Software, Selbstbau Elektor-Verlag GmbH, 1991 Dort findest Du Applikationen, genaue Bechreibungen des SAA1057 und Programmbeispiele in Assembler und Basic für Z80 und 8255-PIO. Das Buch wird nicht mehr aufgelegt, Du findet es aber in Uni-Bibliotheken und z.B. hier: http://www.antiquariat-buecher.de/Buecher_32911.htm Gruß Nils
Hallo Nils, vielen Dank für deine Antwort. Das Buch klingt sehr interessant. Allerdings ist mein Problem eher die Programmierung des AVR`s als die Schaltung des Radios. Mein Testaufbau mit dem SAA1057 funktioniert in Verbindung mit einem PC-Programm problemlos. Nur ich möchte nicht diesen großen PC an das kleine Radio knüpfen ;-) Bei mir hapert es an dem Programmcode, um die richtigen Daten vom AVR in den SAA1057 zu befördern.
Hallo Michael, ich kenne nur das Buch von Arnoldt, weil ich es gelesen habe - habe aber nichts mit der SAA1057 gemacht. Wie gesagt, es sind Codebeispiele enthalten, aus denen das Prinzip hervorgeht. > Bei mir hapert es an dem Programmcode, um die richtigen Daten vom AVR in > den SAA1057 zu befördern. Wenn es das ist, hilft 'googeln': 'SAA1057 bascom', bzw. 'SAA1057 AVR' Das bringt unter anderem zu Tage: http://www.mieciu.pl/www/pll/SAA1057_PLL_Driver.pdf Das Dokument ist zwar polnisch - beinhaltet aber ein komplettes BASCOM-Listing für AVR. Gruß & viel Erfolg, Nils
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.