Forum: Mikrocontroller und Digitale Elektronik Total ratloser Neuling. Hilfe !!!


von Peter Breit (Gast)


Lesenswert?

Hallo,

bin neu hier, habe ein bißchen Ahnung von Elektronik, jedoch eher im
Bereich Elektroinstallation, und bin jetzt total ratlos und brauch
mal ne kleine "Einweisung".

Ich surf jetzt schon eine Ewigkeit durch die Gegend um wenigstens ein
bißchen Durchblick zu bekommen, aber es wird von Seite zu Seite
schlimmer.
Alles was ich wollte war einlesen, speichern und dann auslesen...

Meine Problemstellung ist eigentlich "nur", daß ich ein Signal (TTL)
bekomme und auf einer zweiten "Leitung" einen dazugehörigen Takt.
Und
das ganze bekomme ich dreimal, also 3 mal Takt und 3 mal Daten. Diese
wollte ich als Bitwerte speichern und mir dann als Bitfolge anzeigen
lassen, evtl noch interpretieren( im Endeffekt aber nicht unbedingt
notwendig ).
Erst dachte ich an Schieberegister und dann mußte ich
feststellen ,daß es wohl zuviele IC´s werden um sicher korrekte Werte
zu bekommen. FIFO´s und FIFO-Controller werden auch zu massig. Also
dachte ich jetzt an Mikrocontroller. Prompt lande ich bei der C-
Control und nach 15(!) Stunden Kampf mit Anleitungen, Schaltungen
etc. les ich jetzt was von zu zeitkritisch, schau mal lieber nach
Amtel...usw.

Wer hat Lust und vorallem die Nerven, mir mal kurz auseinanderzusetzen
was jetzt für was taugt und wo ich die richtigen Seiten finde um das
dann Programmtechnisch nicht gegen die Wand zu fahren ( Basic und
Pascal hat ich mal vor 10Jahren, aber danach hört´s auf).

Vielen Dank!

von Peter D. (peda)


Lesenswert?

Ehe Du überhaupt irgendeine Lösung erwägen kannst, mußt Du erstmal
spezifizieren, was für Signale das sind, also das genaue Timing
(Minimal-, Maximalwerte usw.).

Vorher ist es müßig sich auch nur ein Pfitzelchen Gedanken darüber zu
machen.


Peter

von Peter Breit (Gast)


Lesenswert?

Lieber Peter,

es ist mir natürlich klar, dass ich schon noch auf ein paar
Kleinigkeiten achten muss, aber ich war keinstenfalls so vermessen zu
erwarten, dass mir irgendeiner ne Komplettlösung in 17,5 Minuten
schickt.
Meine Ratlosigkeit war eher allgemeiner Natur und es ging mir einzig
und allein darum, dass mir klar wird was ich womit machen kann.
Ich habe nur geringes Wissen, trotz Ausbildung zum Elektroniker, über
den Bereich DSP, habe nun dieses Problem zu lösen und da hat mich die
C-Contol angelächelt. Da ich mich aber gerne vorher darüber informieren
wofür ich mein Geld ausgebe, bin ich von Pontius bis Pilatus gesurft und
bin im Endeffekt nicht viel weiter als 100 Stunden vorher. Eher im
Gegenteil, jetzt weiß ich gar nichts mehr...

Mein Problem istr einfach folgendes:

Ich bekomme auf einer Datenleitung 1 und 0 Signale
auf einer zweiten Leitung kommt der dazugehörige Takt, dieser ist nicht
stetig sondern fluktuiert entsprechend dem Meßwertaufnehmer
die Geschwindigkeit ist etwa 9600 Baud

die Menge der anfallenden Daten sind ca. 8 kByte

die Pegel sind die Standart-TTL-Werte

Mein erster Lösungsansatz waren wie gesagt Schieberegister, jedoch habe
ich diesen fallen gelassen.
Also dachte ich jetzt lediglich programmtechnisch an eine Verknüpfung
für den Bitwert 1  und an eine weiter für 0. Diese Werte sollten
gespeichert werden und auf Anfrage wieder an den PC ausgegeben werden (
über eine serielle Schnittstelle)
Die Platine soll als stand-alone laufen.

von Michael (ein anderer) (Gast)


Lesenswert?

Grobe Skizze einer Lösung:

Du brauchst einen Controller mit mindestens 8 Kilobyte RAM (für 64.000
Bits).

An den Controller wird das Datensignal und das Taktsignal
angeschlossen.

Der Controller wartet auf ein Taktsignal (steigend oder fallende
Flanke, je nach Deiner Anwendung). Unmittelbar nach jedem Taksignal
frägt der Controller die Datenleitung ab und speichert das Bit in einem
Register, und rotiert das Register danach.

Wenn der Controller acht mal so ein Bit eingelsen hat, hat er ein
komplette Byte eingelesen und schreibt diese Byte an die nächste, frei
RAM-Adresse.

Naja, die letzten zwei Schritte macht der Controller so lange, bis eine
Taste gedrückt wurde. Wurde die Taste gedrückt, gibt es die bis jetzt im
RAM stehenden Bytes einfach nacheinander über die serielle Schnittstelle
aus.

Danach wird der Zeiger für das nächste freie Byte im RAM wieder auf den
Startadresse des RAMs zurückgesetzt.

So ungefähr sollte das gehen...

von Heinz (Gast)


Lesenswert?

mmmhh deine Beschreibung des Signals hört sich so ein bischen nach dem
Philips I2C Bus an. Woher kommt dein Signal denn ? Falls es irgendwie
so ein I2C-Sensor ist, dann braucht du das Rad nicht neu zu erfinden...

von Thomas O. (Gast)


Lesenswert?

Hallo,

ich vermute mas du einen ADC mit serieller Ausgabe hast. Und dieser
schiebt bei jedem Taktsignal ein Bit über die Datenleitung.

Falls das so ist würde ich die Taktgenerierung mit dem AVR oder
C-Controll machen. Also 8 Takte hingeben, dadruch landen 8 Bits im
Schieberegister, den du dann über einen Port einliest, am 2ten Port
gibst du das ganze über LEDs aus, wenn du jetzt eine Taste drückst gibt
der Controller wieder 8 Takte an den ADC.

Das wäre auch ziemlich leicht zu programmieren. Dann brauchste dich als
Anfänger auch nicht mit der Adressierung des RAMS rumärgern.

Willst du nur sehen was über die Leitung rutscht oder benötigst du
diese Abspeicherung der Werte.

von Peter D. (peda)


Lesenswert?

"die Geschwindigkeit ist etwa 9600 Baud"

Mit "etwa" kann hier keiner was anfangen.

Ein MC braucht immer eine bestimmet Zeit um etwas zu machen.

Für die generelle Machbarkeit muß man also die ganz konkreten worst
case Zeiten kennen, d.h. wie lang sind die minimalen High- und
Low-Zeiten des Taktes, wie lange sind die Daten minimal und nach
welcher Taktflanke gültig usw.
Wie lang sind die Datenpakete, welche minimalen Pausen sind dazwischen,
senden alle gleichzeitig usw.


Es geht noch lange nicht um die Lösung, sondern erstmal, welcher MC und
ob überhaupt ein MC oder ein CPLD.

Man kann nicht einfach so loswursteln, ohne zu wissen, was da
eigentlich reinkommt oder man landet ganz unsanft auf der Nase.

Immer einen Schritt nach dem nächsten.


Peter

von Peter D. (peda)


Lesenswert?

Wenn es sich um ADCs handelt, kann man die in der Regel auch extern
takten.
Dann ist nämlich die Sache ganz ganz einfach, man nimmt das SPI + 3
Chip select und fragt sie nacheinander ab.


Peter

von Stefan Kleinwort (Gast)


Lesenswert?

Lass mich raten: Du willst einen Magnetkartenleser ansteuern?

Problem dabei: alle 3 Datenströme kommen gleichzeitig, Du musst also
alle 3 Funtionen ineinander verschachteln.
Ist aber nicht so ganz ein Einsteigerprojekt ...

Stefan

von Peter D. (peda)


Lesenswert?

Schon 5 Rate-Antworten und nur, weil man Dir alles aus der Nase ziehen
muß.

Geht Dir das nicht selber auf den Keks ?


Peter

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
Noch kein Account? Hier anmelden.