Lm 7001 ansteuern Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
|
|
|
BID = 467582
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
|
Hallo an alle,
Ich hab mal wieder ein Problem, bei einem Projekt und zwar geht es darum mein Bastelradio mit einer PLL auszustatten.
Da mir niemand bei meinem Problem mit dem SAA helfen konnte, will ich es jetzt nochmal mit dem LM7001 probieren.
So wie ich das Datenblatt vestanden hab, werden ja der Teilerwert und die Steuerinformationen zusammen an den Chip übertragen.
Wie kann ich den nun Binär und normale Zahlen zusammen in Bascom an den LM übertragen?
Außerdem ist mir nicht klar was ich mit den letzten paar Bits B0-B2 und R0-R2 machen soll? Wähle ich damit die Tuningschritte?
Ihr merkt schon bin noch relativ frisch in der MC Programmierung.
Es wäre echt klasse wenn die PLL endlich tun würde, ich hänge an dem Problem nun schon seit zig Wochen fest und will endlich, dass
das Ding geht. Hab da wirklich einen unglaublichen Ehrgeiz für entwickelt.
|
|
BID = 468184
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
|
Kann den niemand helfen?
Als Alternative könnt ihr auch nen Pseudocode, oder auch ne C Version einer Beispielsoftware posten, damit ichs mir vielleicht da abschauen kann und dann in Bascom umsetze. Hab zwar noch nicht viel Erfahrung mit C aber werde mich dann da einarbeiten.
Mc ist nen ATmega16, aber das dürfte ja jetzt erstmal egal sein. |
|
BID = 468191
perl Ehrenmitglied
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Wie kann ich den nun Binär und normale Zahlen zusammen in Bascom an den LM übertragen? |
Was immer du unter normalen Zahlen verstehst, warum willst du das tun ?
Der Chip braucht zur Programmierung ein bestimmtes Bitmuster. Wie das auszusehen hat, steht im Datenblatt.
Wenn du nicht weisst, was bei deinem Steuerchip rauskommt, und auch kein geeignetes Messzeug dafür hast, dann nimme ein paar Schieberegister, löte eine handvoll LEDs dran und schau dir an, was du dem Chip schickst. Notfalls kannst du die Bits sogar von Hand einzeln reintakten.
Den Anschluss CE wirst du auch bedienen müssen, denn erst die fallende Flanke dieses Signals wird die Daten aus dem Schieberegister an die PLL übergeben. Im Prinzip funktioniert das wie bei der CD4094.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 468219
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
Hallo danke Perl für deine Antwort,
Mein Problem ist eher nicht, dass ich nicht weiß was den Chip geschickt werden muss, sondern wie ich das jetzt in der Software erledige. Wie nenn Schieberegister funktioniert glaub ich zumindest auch zu wissen.
Zu den "normalen Zahlen", beim SAA werden die Steuerinformationen und der Teilerwert in 2 verschiedenen Bitfolgen übertragen. Die Steuerinfos hab ich bei mir in Bascom manuell also als Binärzahl eingegeben. Und dann den Befehl Shiftout verwendet, der mir, zumindest stands so im Handbuch, die Bitfolge an einem Port ausgibt und die Clockleitung steuert.
Den Teilerwert hab ich jedoch als Numerische Zahl eingegeben. Und dann auch Shiftout benutzt. Jedoch bin ich mir nicht sicher, ob er diese Zahl dann selbst in eine Binärzahl umwandelt oder ich das selber machen muss.
|
BID = 468220
perl Ehrenmitglied
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Wie nenn Schieberegister funktioniert glaub ich zumindest auch zu wissen. |
Hoffentlich.
Ich wollte dir das auch nicht erklären, sondern dich zum Bau solch einer Vorrichtung für ein paar Cent anstiften. Der Logikanalyzer des kleinen Mannes sozusagen.
Das Teil kannst du dann parallel zum PLL-Chip schalten und sehen was du rausschickst, anstatt das nur zu glauben.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 468302
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
Was verlangt denn die Shiftfunktion für Parameter? welche Datentypen?
Es macht mehr Sinn, Binär- als Dezimalkode auszutakten. (1 Byte im Gegensatz zu drei bzw. vier samt Terminatorzeichen)...
Moooent:
Den Teilerwert hab ich jedoch als Numerische Zahl eingegeben.
Soso, dann sollte es kein Problem sein, es sei denn, die Zahl liegt als BCD-Kode im RAM als String vor ('1''2''5' oder so).
Wenn ich einer Variablen a des Datentyps Byte den Wert 153 zuordne, oder 10011001(b) oder &H99 steht immer das Gleiche drin, das ist vollkommen egal!
Erst wenn Nummern in einer Zeichenkette stehen, muss man damit anders umgehen, oder Vorzeichenbehaftet sind (Prinzip gleich, Bits anders interpretieren)
_________________
[ Diese Nachricht wurde geändert von: DonComi am 31 Okt 2007 22:47 ]
|
BID = 468559
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
Also jetzt mal ne blöde Frage, was ist den BCD Code?
Mein Programm soll eine Dezimalzahl z.B. 10150 in eine Binärzahl umwandeln und dann über das Schieberegister an den PLL Ic weitergeben,
brauch ich dafür denn diesen BCD Code?
Die Steuerinfos hab ich bei mir von Hand als eine Binärzahlfolge &B101110100000000 in Bascom eingegeben das soll dann auch in das Schieberegister des SAA übertragen werden.
Wie mach ich den das jetzt, ohne den Shiftoutbefehl zu verwenden bzw. wird Shiftout da überhaupt funktionieren?
Ich hoff immernoch das der SAA funktionieren wird und ich nicht extra die Schaltung mit dem LM aufbauen muss.
Danke weiterhin für alle Antworten.
[ Diese Nachricht wurde geändert von: Bastler1234 am 1 Nov 2007 21:56 ]
|
BID = 468571
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
Hallo.
Es ist vollkommen nebensächlich, wie du einer Variable den Wert zuordnest. Die Zahlen werden nur zu einer anderen Basis angegeben, bei dem Präfix &B eben als Binärzahl (Basis 2), bei keinem Präfix als Dezimalzahl (Basis 10) und bei &H als Hexadezimalzahl (Basis 16).
Im Speicher liegen die alle binär vor, denn ein Rechner im normalen Sinn kann nur Zahlen zur Basis 2 verarbeiten.
Was ich mit BCD meine:
Wenn ich als Benutzer Daten eingebe, zum Beispiel die 2, die 5 und die 1, und ich damit die Zahl 251 meine, dann müssen diese 3 Zeichen erstmal in eine Binärzahl umgerechnet werden. Denn sie liegen im Speicher nur als drei Zeichen, im binären DezimalCode sozusagen. Rein Datentypmäßig wäre das eine Zeichenkette, ein String.
Du nutzt aber numerische Datentypen, insofern kannst du die Bits einfach so austakten.
Da du ja genau weißt, wie so ein Schieberegister funktioniert, kannst du eine kleine Routine schreiben, die 16 Bits an nem Pin rausschiebt: Dazu musst du eine Schleife machen, die 16x durchläuft und jedes mal testest du das letze (oder erste Bit, jenachdem, was zuerst raussoll) und wenn es gesetzt ist, taktest du eine 1, sonst ne 0 raus. Dann schiebst du alle Bits ein bischen weiter nach rechts (bzw. nach links im letzeren Fall) und machst alles wieder von vorn.
Bits testen kennst du ja. Einfach mit einem Wert and-verknüpfen und testen, ob die Aussage wahr (ungleich 0) oder unwahr (gleich 0) ist.
Edit: poste mal deinen Kode, sonst reden wir aneinander vorbei.
Und ob das mit Shiftout klappt, je nachdem. Schau doch mal,m wie schon erwähnt, in der Hilfe nach. Da wird doch stehen, was shiftout als Parameter will. Bei dir wäre es ne 16bit-Zahl, soweit ich weiß in Basic also Integer.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 1 Nov 2007 22:15 ]
|
BID = 468576
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
Und sonst:
Dim i as Byte
'PortB1 Datenausgang
Da alias PORTB1 'oder so
for i = 0 to 15
if (daten and 1) then
da = 1 'Datenpin setzen
else
da = 0 'unbedingt wieder löschen, da er, wenn bit 0 = 0 ist, immer auf alten wert bleiben würde!
end if
'hier einen kurzen Taktimpuls erzeugen, je nachdem, wie der LMx das haben will
daten = daten \ 2 'ganzzahl-division durch 2: die bits eine Stelle nach rechts schieben
next i
_________________
|
BID = 468577
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
Hi, danke für deine Antwort.
Ich stell mal den Code in den SAA Thread rein, damit die anderen Benutzer das auch finden.
|
BID = 468581
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
ich meine die Stelle im Kode mit der Zuweisung. Wenn du &B00101 was weiß ich, nicht einem String sondern ner numerischen Variable (Byte, Word, Integer, wasweißich) zugeordnet hast, kannst du die Bits so raustakten, da muss nix mehr umgerechnet werden.
Sry, ich habe vorhin meine Semesterarbeit beendet und bin daher sehr gut gelaunt, treffe die Tasten kaum...
_________________
[ Diese Nachricht wurde geändert von: DonComi am 1 Nov 2007 22:32 ]
|
BID = 468599
perl Ehrenmitglied
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Wenn du &B00101 was weiß ich, nicht einem String sondern ner numerischen Variable (Byte, Word, Integer, wasweißich) zugeordnet hast, kannst du die Bits so raustakten, da muss nix mehr umgerechnet werden. |
Und woher weisst du, welches Bit zuerst kommt ?
Zitat :
| Im Speicher liegen die alle binär vor, denn ein Rechner im normalen Sinn kann nur Zahlen zur Basis 2 verarbeiten. |
Es gibt aber durchaus Programmiersprachen und auch Basic-Dialekte, die BCD rechnen.
Damit vermeidet man die Rundungsfehler, die bei Gleitkommadarstellung auftreten können und Kaufleute sind da sehr empfindlich.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
[ Diese Nachricht wurde geändert von: perl am 2 Nov 2007 0:57 ]
|
BID = 468600
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
So,
Zitat :
|
Und woher weisst du, welches Bit zuerst kommt ?
|
Danke, aber ich schrieb bereits selber:
Zitat :
|
testest du das letze (oder erste Bit, jenachdem, was zuerst raussoll) und wenn es gesetzt ist, taktest du eine 1, sonst ne 0 raus. Dann schiebst du alle Bits ein bischen weiter nach rechts (bzw. nach links im letzeren Fall)
|
Und
Zitat :
|
Es gibt aber durchaus Programmiersprachen und auch Basic-Dialekte, die BCD rechnen.
|
Stimmt ja auch, nur rechnet der Rechner dennoch mit nur 2 physikalischen Größen und nicht mit 10. BCD hin oder her, binär wird im Endeffekt immer gerechnet. Dass es sicher Ausnahmen gibt, wo auch elektronisch mit mehr als 2 physikalischen Größen für nur 0 und 1 gerechnet wird, bestreite ich nicht.
Wenn ich mit BCD rechne, beispielsweise die Zahlen 123, dann rechne ich intern ja mit den entsprechenden Zeichen, also für die 1 die 49 (ASCII-Zeichensatz) und so weiter. Dennoch wird binär gerechnet, nur dass die Organisation eben anders ist. Wobei es, da stimm ich voll und ganz zu, durchaus Sinn macht, mit BCD zu rechnen. Da hat man eben bestimmte Probleme nicht (begrenzte Registerlängen etc.) da wird dann, z.b. bei nem Überlauf von '9' einfach mehr Arbeitsspeicher besorgt und die Rechnung kann weitergehen. ![](/phpBB/images/smiles/smilie_smile2.gif) Nur kann in einem 8 Bit-Register nur eine Ziffer von 0 bis 9 stehen, die auch gültig ist, wobei sicherlich auch Vorzeichen noch erlaubt sind ![](/phpBB/images/smiles/smilie_smile2.gif) )
Edit: OK, ich merkst selbst, man kann in einem 8bit-Register zwei Ziffern speichern ![](/phpBB/images/smiles/smilie_smile2.gif) . (gibt ja zwei Nibbles...)
Edit2:
Wobei du, perl, natürlich Recht hast, bei BCD ist die Basis einfach 10, egal, wie intern gerechnet wird. Also, lasse ich den Machtkampf mit dir, ich würde kläglich versagen. Mein Wissen, und das gebe ich gerne zu, ist zu gering
_________________
[ Diese Nachricht wurde geändert von: DonComi am 2 Nov 2007 1:26 ]
[ Diese Nachricht wurde geändert von: DonComi am 2 Nov 2007 1:29 ]
|
BID = 479603
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
Hi,
ich bins nochmal, heute hat es mich einfach mal gereizt, die Sache mit der PLL nochmal in den Griff zu bekommen. Also hab ich mal die Schaltung mit dem LM für mein 2tes Bastelradio aufgebaut. So habs dann getestet und juhu ich höre schonmal einen Sender, aber wenn ich die Senderwechseltasten drücke, passiert nichts. Er hat immer den einen Sender, der dann auch später etwas wegdriftet.
Ich nehme mal an das etwas mit der Ansteuerung des ICs noch nicht stimmt, die Schaltung scheint ja an für sich zu tun, sonst würde ich ja garnichts hören.
Woran könnte das denn noch liegen?
Nen billiges Ozilloskop konnte ich mir mittlerweile auch besorgen, was soll ich da messen?
hab schonmal am SYC (Controller Clock) Ausgang gemessen, da lag zumindest schonmal nen Signal an?
Hat vielleicht jemand nen kleines Testprogramm um überhaupt mal zu testen, ob der Lm tut.
Meine Schaltung und dass Programm für den Atmega16 häng ich mal an.
Danke schonmal für eure Hilfe.
|
BID = 479800
Bastler1234 Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 107 Wohnort: Kirchberg an der Murr
|
Sorry für den Doppelpost, hab jetzt noch einen genaueren Schaltplan gezeichnet, hoffe mal den erkennt man auch.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 2 Beiträge verfasst © x sparkkelsputz Besucher : 181983107 Heute : 844 Gestern : 5899 Online : 142 9.9.2024 8:47 6 Besucher in den letzten 60 Sekunden alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.048415184021
|