So, nachdem ich eigentlich nur eine url einfügen wollte und diese Windoof im gleichen Fenster wie meinen Beitrag öffnete, sind einmal wieder 2 Std schreibarb und meine Neven im A.... (tschuldigung für den Ausdruck).

@ Ozzy

Danke für den Link, werd ihn mir mal genauer anschauen, nur find ich das ganze mal wieder total Beunruhigend, das sowas ähnliches, was wir versuchen zu lösen ein Uni-Projekt ist und das ganze noch mit FPGA's, wo nicht einmal richtig µC-Programmierung beherrschen.

Hallo Vaijk!

Danke erst mal für deine ausführliche Antwort.
So wie ich das seh, bin ich ja bei Dir an einen richtigen Professionisten geraten und das sogar in der Fachrichtung, was ich (wir) benötigen!

> also seid ihr ganz normale Studenten

Jein.
Der HTL-Ingenieur (HTL= Höhere technische Lehranstalt) in Österreich ist ein etwas abgespekter Ingenieur. Du hast 4 bzw 5 Jahre Schullaufbahn. Abschluß mittels Abitur (in AUT namentlich Matura). Nur hast du neben den allgemeinbildenden Fächern auch die Technischen. Abitur besteht einerseits aus allgemeinbildenden Teil und andererseits aus dem technischen Teil, welcher aus einem technischen-, einem Komplementärfach und aus der Diplomarbeit besteht, welche während der Schullaufbahn (meist im letzten Jahr) mit deinem Lehrer, welcher auch als Projektleiter agiert, ausgearbeitet.
Diese Art von Ingenieur ist dann beruflich eher nur für die Konstruktion oder Service gedacht.
Wenn du anschließend zur Uni oder FH Studieren gehst und du dies auch abschließt, dann bist du Dipl.Ing. oder FH-Dipl-Ing. Denn nur an der Uni lernst du dann die richtigen Hintergründe kennen und bist auch für eine Entwicklung und Forschung geeignet und dem HTL-Ing (wissensmäßig) überlegen.

> Nun, als Student lernt man Probleme zu lösen .. lernt zu Wissen wo die
> wichtigen Informationen stehen .. die Fächer sind alle nur Schein (in
> doppeltem Sinn)

Haben uns unsere Lehrer auch gesagt, aber:
Abendschule, d.h Zeitproblem, Unter der Woche 40 Std arbeiten oder manchmal auch mehr, am Abend in die Schule und Zeit zum lernen bleibt selber nur am WE. (Privatleben? Was ist das!!!). Deswegen wend ich mich ja auch an euch (ans Forum)!

> Solange Du nicht Asm aufm uC machst, ist C die bessere
> Wahl, weil Du richtig schöne Fehler machen kannst, die
> Dir Basic verwehrt

Meinst du Basic am µC???
Ich kenn nur Bascom am AVR (vom hören).
ASM kann ich nicht, ich habs nur zum debuggen genommen, also ich schreib einen C-Code, funktioniert nicht und kontrolliere dann im
Assembler, wieso. Das zu lernen, war zwar nicht einfach, aber es zahlt sich aus, z.B. bei Laufzeitfehlern.

> aber einmal kapiert, nie wieder Basic !

Ich gebs ja zu, wenn ich's könnte oder mich auskennen würde, würd ich Windoof von meinem PC verdammen, Linux drauf und nur in C, C++ oder Java programmieren!

Unser Informatiklehrer hat ja selber gesagt, das gerade VB insbesondere bei laufzeitkritischen Anwendungen seine Schwächen hat. Es ist halt DAU-sicher und für Windoof, das halt leider viel zu verbreitet ist.

> ganz easy auf einem 16Bit µC mit DSP das Programmieren
> und Filterdesignen lernen!

Is ja eh geil, aber wie gesagt:
Filterdesign auf einem Mathematikprogramm, sprich Mathematica. Ein Lehrer hat selber gesagt, das für uns Filterdesign mit Matlab sinnvoller wäre, weil es dort auch die dafür vorgesehenen Tools gibt. Nur unsere Lehrer dürften da anderer Meinung sein.
Meine Meinung: Mathematica ist für jemanden geeignet, der die Mathematik wirklich versteht und nicht zum rumspielen, denn das Prog beruht ja auf mathem. Grundlagen.
Um Filter zu Designen, braucht man ja bekanntlich u.a. tiefere mathem. Kenntnisse (Z-Transformation,...), welche aber man erst auf der Uni richtig lernt und mit unseren paar Mathekenntnissen, wo wir grad mal bissl Integrieren gelerent haben (aber nicht partielles,...) keine Chance haben, jemals die Materie zu verstehen.
Am Dsp programmieren ist dies dann eine weitere Geschichte, die sich weisen wird.
Wie gesagt, ich kenn mich halt mal mit nem "normalen" 8-Bit-µC grundlegend aus, andere aus unserer Klasse wissen
nicht mal,was ein Register ist (ohne Übertreibung), und dann gleich zum Einstieg einen 16Bit-µC mit DSP, welchen man aber mind. zum Filtern braucht, viel Spass!!!!

> .. bei einem 12Bit A/D-Wandler 4096 das Datenwort ist,
> welches als 32Bit-Wert über die UART übertragen wird!!!

Der "Alles-ganz-easy-Lehrer" hat folgendes gemeint:
4096 is das Wandlungsergebnis des ADC (2^12), dieser wird laut ihm auf den Datenbus als 4Byte-große(r)s Wort(Wert, also 32Bit) ausgegeben (4 0 9 6) und dann halt auf die UART oder anderes.

Ich hab das so verstanden:
4096 is die Schrittweite, womit ich ma die max Auflösung/ Schritt errechne, also 5V/4096=1,22mV/ Schritt.
Das Wandlungsergebnis beträgt aber bei einen 16Bit-µC nur 12Bit, das halt dann als Int-Zahl am mit 4 Nullen am Schluss oder Anfang oder ... am Bus ausgegeben wird.

Folglich Easy-Lehrer-Theorem:
Bei fa=300Hz, T=3,33ms: 32 Bit/3,33ms*1000= 9610Bit/s Übertragungsrate.

Jörnsches Theorem:
12Bit (16Bit)/3,33*1000= 3604 (4805)Bit/s Übertragungsrate.

Warum, das ganze mit 3,33ms,... kommt noch!

Wer liegt richtig???

> Übrigens später im Berufsleben macht ihr ständig Diplomarbeiten !!!

Das ist ein guter Ansatz (Grundgedanke), so hab ich das bis jetzt noch nicht gesehen! Werds beherzigen und mir merken!
Hab halt noch keine Berufspraxis als Ing, bin daweil noch normaler Facharbeiter.

> Die uC - Schnittstelle von Funkübertragung zu PC macht durchaus Sinn !
> Außer ihr würdet eben WLAN nutzen.

Hat ein Lehrer auch gemeint. Der µC würde entweder den PC entlasten, oder auch als eigener µComputer agieren, wenn man die Daten erst mal nur speichern und erst später Auswerten will.

> fähig ist, CAN zu übertragen, bzw ob dies überhaupt funzt.

Überredet, Thema abgehakt!!!

So, nun zum Geheimns EKG:

Es ist richtig, es werden mehre Elektroden am Körper (Brustbereich) angelegt, welche die s.g. Aktionspotentiale des Herzens erfassen. Dadurch wird das EKG in verschiedenen Dimensionen gemessen, welches als Vektorfeld interpretiert wird (is aber eher nur für die medizinische Diagnostig von Interesse!) Grundlegend reichen 3 Elektroden (s.g. Extremitäten-Ableitungungen nach Goldberger und Einthoven).

Diese Elektroden werden auf einen Instrumentenverstärker geführt, somit wird daraus letztendlich ein Signal. Dies wird analog vorgefiltert (wg. ganzen Elektroschrott wie 50Hz-Brumm in der Luft,...), und rein in den µC, dort A/D-gewandelt und richtig gefiltert (DSP,..).

Die Grundfrequenz des Herzschlages bei einem gesunden Menschen beträgt ca. 1Hz, Spannung der PQRST-Welle ca -2mV bis 6mV, somit kann man aus einem EKG auch den Puls regenerieren, der in etwa 60bpm beträgt. Dieser besteht ja nur aus einzelnen Werten und ist kein kontinuierliches Signal. Um ein solches EKG Signal richtig digitalisiert wiedergeben (und interpretieren) zu können, muss es mind. mit 300 Hz abgetastet und 12Bit A/D-gewandelt werden.

Faktum: T=1/f: 1/300= 3,33ms/Sample, welcher auch mit dieser Frequenz bzw Periodendauer gesendet wird.
Wie oben bereits beschrieben erfolgt die Aufbereitung bereits mittels µC.

Das System:

Sensor (z.B. EKG)-Verstärker-Filter-ADC-µC (DSP)-FM <--> #FM-µC-UART-USB <--> PC#

Wie bereits erwähnt, um die Sensoren brauchen wir,
also mein Kollege und Ich nicht zu kümmern, das ist Aufgabe der anderen Gruppen (wenn die das zusammenbringen). Wir haben nur die Aufgabe, die "Auswerteeinheit(nenne sie ab jetzt AE)" zu konstruieren (den Teil zwischen #...#) und das Übertragungsprotokoll zu entwickeln, was wir für die Kommunikation benötigen und den anderen sozusagen für die Kommunikation mit uns vorschreiben.

Die anderen Sensoren hab ich ja bereits in meinem ersten Treat beschrieben.

Falls du über EKG genauer bescheid wissen willst:

http://www.grundkurs-ekg.de/index.htm#anfang

> habs ergoogelt- die 19200 sind nicht fix ! Der Defaultwert ist änderbar.
> Aber es gibt beim Modul scheinbar Probleme mit der Betriebsspannung
> verschiedener Chargen ... fragt mal Dr. Google

Die 19200 Baud zw. Host-FM sind einstellbar (bis zu 88kBaud), aber die Übertragungsrate IN DER LUFT (von FM zu FM) sind fix mit 19200. Hab deswegen schon mit dem Support in England kommuniziert, die haben mir das bestätigt.
Mit Betriebsspannungen hab ich noch keine Probleme gehabt, hab die Module schon mehrmals am µC bzw PC gehabt und getestet, funktioniert einwandfrei, aber darüber hab ich auch schon einiges gelesen.

>öhm .. sind 19200 Baud - sind die Bauds nicht den Bits gleichzusetzen -
> und nicht gleich 2400 Bytes pro sec ? Sprich 1 Byte in ca. 500 usec ?

Ja sicher, aber wir haben gelernt dass, bei Baud ja nicht nur die Datenbits relevant sind, sonder das ganze Frame (das komplette Protokoll samt Start-, Stopbits, Präambel,...). 1 Frame besteht aus z.B. 23Bit, also müssen alle Bits dieses Frames mittels den 19200 übertragen werden.


> Der Master muß die einzelnen Slaves nacheinander abfragen - folglich
> müssen die Slaves Werte zwischenspeichern ...


Wenn ich dass richtig verstanden habe, ist das bei Protokollen immer so, weil die Daten ja seriell Übertragen werden, folglich kann der Master nicht mehrere Slaves parallel abfragen???

Sorry, aber da wir so gut wie noch nichts über Protokollerstellung gelernt haben, kann ich mir einfach nichts drunter vorstellen wie so was abläuft
oder auch ablaufen könnte.

> Nicht jeder Slave liefert ja EKG-Werte - oder ? ... sprich nur
> Pulsmessungen etc. können auf die Slaves ausgelagert werden und
> müssen dann nur minimal Daten übertragen.

Stimmt, derzeitiger Stand, ein EKG, restlichen Sensoren, siehe 1er Treat von mir.
Wenn ich das richtig verstanden hab, was du meinst, ist, dass die restlichen Daten von den anderen Sensoren Datenwerte in viel größeren Zeitabständen liefern müssen (z.B. Atemfrequenz/min: 12-40, T=0,2 - 0,6s) und zwischengespeichert werden müssen, weil sie ja erst später abgefragt werden, aber was hat das mit Langsameren und schnelleren Daten zu tun???

Sorry, aber irgendwie komm ich durcheinander.

Wegen EMV und CO:

Theoretisch dürfte man ja gar nichts über Funk übertragen, 433MHz ist sicher auch nicht ungefährlich, aber halt nicht sooo Hochfrequent wie 2,4Ghz.
Ich hab ehrlich gesagt keine Ahnung, ob unsere Lösung verkaufsfähig sein sollte oder nicht. Was ich gehört habe, nein. Aber da werd ich mich noch erkundigen.

Thema Protokoll:

Danke für die ausführliche Antwort!

ASCII-Format: bis jetzt habe ich auch nochts anderes Übertragen, da das Modul sowieseo nur an eine gewöhnliche UART-Schnittstelle angeschlossen wird, wegen dem debuggen stimmt, ich hab am Hyperteminal dann die Daten verglichen, ob sie die gleichen sind,
wie ich Sie abgeschickt habe. Solche Befehle/Funktionen wie strtok u strchr kenn ich allerdings nicht, werds mir aber mal anschauen.
Danke für den Hinweis!

Mein Kollege übernimmt die PC-Oberfläche, hab ihm alles erzählt, er is der Meinung, man kann mit VB2005 sogar Pointer programmieren, ich kanns nicht sagen, aber ich glaubs persönlich nicht. Er will, solang es nicht wirklich nötig ist, bei VB bleiben und die Datenbank mittels SQL programmieren. *Sturbleib*

Ich kann nicht sagen, dass ich wirklich C programmieren kann. Pointer sind mir daweil auch noch ein fremdes Dorf, aber ich möchts lernen und ich persönlich finde C auch besser (vielleicht auch, weil ichs gewohnt bin, Syntax,..). Nur ich weiß halt leider nicht, warum C, C++ effizienter gegenüber VB ist. Ich vermut halt, weil mann in C eben mit Pointern Speicherstellen direkt ansprechen kann und das genauso, als wenn man beim µC in Assembler programmiert, eben effizienter (auf Laufzeiten bezogen) ist.
Aber ob das einzige Grund ist???

Ich denk halt immer wieder daran, wie man so ein Protokoll programmiert und das einzige, was ich mir vorstellen kann, ist, dass das Protokoll in Form eines Arrays programmiert wird. Lieg ich da richtig?

> Der Master spricht die einzelnen Slaves mit ihren Adressen an und
> erwartet eine Antwort innerhalb eines Zeitfensters .. kommt diese nicht,
> muß er entweder sofort wieder abfragen und/oder feststellen
> Kommunkation ggf. gestört ist ...

Das hat uns mein Lehrer auch gesagt: solange man davon ausgeht, dass keine anderen (fremden) Einflüsse in der Umgebung sind, also die Kommunikation stören, braucht man keinen Zeitstempel.
Erst, wenn das der Fall ist, dann Zeitstempel.

> Da der Master ja mehrere Sensormodule abfragen soll, darf ein Fehlen
> von Daten eines Moduls nicht zur Blockierung des Systems führen.

Meinst du in etwa so (stark vereinfacht): Daten fehlen -> Ja ->nochmal Abfragen (evt 3mal) -> Daten fehlen noch immer -> dann nächsten Sensor abfragen,...

Also eine Art Quittierungsverfahren, genauso wie wenn Daten fehlerhaft (CRC nicht bestanden, nochmal senden)


Das einzige, was ich noch gehört habe, dass wir noch einen Zeitstempel bräuchten ist, weil wir ja die Daten mittels Kurven in Fenstern z.B untereinander darstellen müssen (so ähnlich wie in der Oberfläche von Ozzy's LinK). Da die Daten also Zeitgleich dargestellt werden müssen, obwohl sie's in Wirklichkeit nicht sind, weil diese Unterschiedlich "schnell" sind und nacheinder reinkommen, brauchen wir einen Zeitstempel, um das ganze so zu realisieren zu können.

Das mit dem Zähler ist eine gute Idee, man muss einfach nur improvisieren können -> so viel zu Effizient!

Nur falls dass mit dem Zeitstempel bezogen auf die Darstellung richtig ist, würde das dann auch mit dem Zähler realisierbar sein??

Sorry, ich bin halt leider auf dem Gebiet ein totaler Anfänger. Eigentlich traurig nach 3 Jahren Schule, aber is halt so, so viel zu dem, was wir bis jetzt gelernt haben!

Oder Denk ich am Anfang vielleicht schon viel zu weit???

Ich wäre für weitere Hilfe auf jeden Fall dankbar!

LG Jörn