Hallo, ich hoffe mir kann hier jemand helfen, meine Note steht am Spiel
:(. Meine Programmierkenntnisse sind zwar nicht schlecht (bin in einer
Ausbildung(Schule) zur diesem Gebiet), aber mit µControllern werde ich
einfach nicht warm.
Wir müssen als Projekt einen I²C- und einen CAN-Bus auslesen und diese
Daten per USB auf ein C#-Programm übertragen, wo diese Daten dann
angezeigt werden und gleichzeitig in einem LOG-File gesichert werden.
Wir arbeiten mit einem Atmega 2560, falls das jemandem hilft.
Nun zu meinem Problem: Ich habe keinen blassen Schimmer, wie das
funktionieren soll und auch durch gründliche Recherche bin ich keinen
Punkt weiter gekommen. Meine Teamkollegen sind auch keine große Hilfe,
die haben noch weniger Ahnung wie ich.
Würde mich über jede noch so kleine Hilfe wahnsinnig freuen :)
Liebe Grüße einer verzweifelten Schülerin!
Stefie schrieb:> Wir müssen als Projekt ...
Irgendwie scheint sich die Schule in den letzten Jahren sehr geändert zu
haben. Zu meiner Zeit wurden die Grundlagen gelehrt und man hatte
Schulbücher zum Nachschlagen bevor irgendwelche Aufgaben gestellt
wurden.
Und für den Einstieg waren es selten so komplexe.
I2C läßt sich z.B. auf einem ATMega der die Adressierung in der Hardware
auswertet nicht so einfach mitlesen, dafür muß man sich eine
SoftwareEmulation schreiben oder einenn anderen Prozessor nehmen, die
Tinys mit USI-I2C können das z.B.
Schon mal danke für die Antwort :)
Wir haben zwar im Vorjahr mal ganz kurz über I²C gesprochen, aber nie
wirklich Projekte dazu gemacht. Dieses Jahr mach ich meinen Abschluss
und plötzlich glauben alle Lehrer wir müssten wissen, wie all das geht.
Bücher haben wir schon seit 3 Jahren nicht mehr. Wer etwas wissen will,
muss es im Internet finden oder jemanden kennen, der es weiß.
Laut Lehrkraft sollen die ausgelesenen Daten einfach über die
USB-Schnittstelle an das C#-Programm gesendet werden. Dort sollen diese
dann in einer RichTextBox ausgegeben werden.
Die Anwendung mit C# dürfte nicht so schwer sein, nur leider weiß ich
einfach nicht, wie ich die Daten bekomme :/
Wie sieh es denn mit deinen Mitschülern aus? Auch alle keine Ahnung? Zu
zweit oder dritt kann man oft besser arbeiten.
CAN ist im Prinzip einfach. Nimm einen Transceiverbaustein für die
physikalische Ankopplung und einen CAN-Controller (MCP2551 und MCP2515
z.B.)
Der CAN-Controller hört nur zu, löst einen Interrupt aus, wenn eine
vollständige Nachricht empfangen wurde und du kannst sie per SPI
auslesen und weiterverarbeiten. Ich würde an deiner Stelle nicht
versuchen, es mit Softwareemulation zu versuchen.
Die Problematik beim I2C wurde schon angesprochen. Auch da einen
geeigneten Baustein vorschalten. Oder, bei moderater Busgeschwindigkeit,
mit Software-I2C.
Wenn dir das alles aber gar nichts sagt, wird dir schnell die Zeit
ausgehen.
Ganz einfach:
Du brauchst:
- Einen CAN Transceiver (z.B von NXP)
- Einen CAN Controller (sofern der ATmega keinen hat. Der 2560 hat
keinen. Die AT90xxx oder ATmegaxxM1 haben einen integriert.)
- Den ATmega als Schnittstellenkonverter
- Einen UART<->USB IC (z.B einen FTDI FT232 )
Dann bekommst du die Daten am PC über eine COM-Schnittstelle. Diese
kannst du leicht mit C# lesen und brauchst dich um Treiber nicht zu
kümmern. Die Treiber liefert der FTDI.
Es wurde ja schon ein bisschen was geschrieben...
I2C: Entweder per Software (langsam) oder per extra IC (extra Aufwand +
IC)
CAN: externer Controller @crazyhorse
USB: FTDI Baustein (Virtueller Comport)
mfg
H.Joachim S. schrieb:> Wie sieh es denn mit deinen Mitschülern aus? Auch alle keine Ahnung? Zu> zweit oder dritt kann man oft besser arbeiten.
Wenn es selbst bei den Älteren schon am Leseverständnis scheitert ...
Stefie schrieb:> Meine Teamkollegen sind auch keine große Hilfe,> die haben noch weniger Ahnung wie ich.
Wow, vielen Dank für die vielen Antworten!
Bezüglich meiner Klasse: Wir sind alle am selben Niveau, paar verstehen
zwar was sie machen sollen, aber haben eben auch keine Anhaltspunkt, was
sie da eigentlich machen sollen. Unsere Lehrkräfte sind der Meinung wir
müssen es ohne sie schaffen.
Mir sagen die ganzen Sachen sehr wenig, aber ich werde mal probieren, ob
ich mit den Schnipseln etwas anfangen kann.
Ich weiß es klingt jetzt etwas dümmlich, aber welche Funktionen würde
ich denn brauchen, damit ich irgendwas zum Laufen bringe? I²C benötigt
irgendwas mit SCL und SDA, wenn ich das richtig verstanden habe.
CAN: gibt es da auch Funktionen, die man allgemein verwenden kann? z.B.
CANRead?
Timo N. schrieb:> Dann bekommst du die Daten am PC über eine COM-Schnittstelle. Diese> kannst du leicht mit C# lesen und brauchst dich um Treiber nicht zu> kümmern. Die Treiber liefert der FTDI.
Brauch ich für FTDI irgendeine library oder ist das etwas vorgefertigtes
von Microsoft? (C# programmieren wir im Visual Studio 2015)
Häkelnadel schrieb:> @ Stefie>> Drei Hypothesen:>> - dein Name ist nicht Stefie> - es gibt keine Schulaufgabe> - du bist ein Troll
-Doch, mein Name ist Stefie
-Doch die gibt es. Sitze in einer HTL und hab noch 3 Stunden
Projektunterricht und bin genauso weit wie vor zwei Wochen :/
-kein Troll --> Mädchen ^^
Stefie schrieb:> Brauch ich für FTDI irgendeine library oder ist das etwas vorgefertigtes> von Microsoft?
Der Treiber zum USB-Seriell Adapter stellt auf dem PC gewöhnlich einen
virtuellen Seriellen Port bereit, der wie jeder andere COM-Port vom
Programm angesprochen werden kann und auch im Gerätemanager beim
Einstecken des Adapters so auftaucht.
Die Aufgabe ist ganz großer Quatsch.
I2C arbeitet mit 100kBit, CAN mit 1MBit, d.h. die Daten rauschen nur so
am Bildschirm vorbei und man kann nichts erkennen.
Der ATmega2560 hat kein CAN und kein USB, ist also der völlig falsche MC
dafür und bei den nötigen Datenraten auch zu schwach.
Eh man einen Bus sniffen kann, muß man erstmal eine funktionierende
Punkt zu Punkt Verbindung programmiert haben. Sniffen ist sozusagen die
hohe Schule der Kommunikation.
Ein guter Lehrer stellt nur solche Aufgaben, von denen er auch selber
mindestens eine Lösung parat hat.
Schade, daß ihr solche schlechten Lehrer habt, die sollten sich was
schämen.
Stefie schrieb:> Ich weiß es klingt jetzt etwas dümmlich, aber welche Funktionen würde> ich denn brauchen, damit ich irgendwas zum Laufen bringe?
Du brauchst erstmal einen Prozessor, der dafür geeignet ist I2C und Can
mitzulesen.
Dann mußt Du nur alles, was über diese Busse läuft, lesen und per USB an
den Rechner schicken und hoffen, daß es schnell genug klappt, daß auch
alles ankommt.
Stefie schrieb:> I²C benötigt> irgendwas mit SCL und SDA, wenn ich das richtig verstanden habe.
So heissen die Datenleitungen bei I2C.
Sorry, aber ich hab daß Gefühl, daß Du entweder die Aufgabenstellung
falsch rüber gebracht oder zwei Jahre geschlafen hast.
Mit dem Wissen, das Du hier zeigst, ist die Aufgabe nicht lösbar.
Horst schrieb:> Sorry, aber ich hab daß Gefühl, daß Du entweder die Aufgabenstellung> falsch rüber gebracht oder zwei Jahre geschlafen hast.> Mit dem Wissen, das Du hier zeigst, ist die Aufgabe nicht lösbar.
Nein, ich glaub ich hab sie richtig rübergebracht. Aber ich probier es
gerne nochmal.
-> Es gibt zwei Busse: -CAN und I²C
-> Hardware wird uns zur Verfügung gestellt, also geht es rein um die
Softwarelösung (hab ich gerade erfahren)
-> Auslesen der Daten der beiden Busse mit C und Übertragung von
µController an PC (C#-Programm) per USB-Schnittstelle
-> Ausgabe auf C#-Anwendung
2 Jahre hab ich nicht geschlafen, nur für mich ergibt C-Programmierung
bzw. µController Programmierung keinen Sinn. Ich versteh das einfach zu
wenig, wenn ich ehrlich bin. Für mich steht auch nur mehr im
Vordergrund, dass ich dieses Jahr abschließe und endlich etwas anderes
anfangen kann, weil ich selbst weiß, dass dies nicht meine Zukunft
werden wird. Zur Verteidigung: Ich breche nicht im 4. oder 5. Schuljahr
ab, wenn ich so kurz vor der Matura stehe!
Stefie schrieb:> Horst schrieb:>> Sorry, aber ich hab daß Gefühl, daß Du entweder die Aufgabenstellung>> falsch rüber gebracht oder zwei Jahre geschlafen hast.>> Mit dem Wissen, das Du hier zeigst, ist die Aufgabe nicht lösbar.>> Nein, ich glaub ich hab sie richtig rübergebracht. Aber ich probier es> gerne nochmal.> -> Es gibt zwei Busse: -CAN und I²C> -> Hardware wird uns zur Verfügung gestellt, also geht es rein um die> Softwarelösung (hab ich gerade erfahren)> -> Auslesen der Daten der beiden Busse mit C und Übertragung von> µController an PC (C#-Programm) per USB-Schnittstelle> -> Ausgabe auf C#-Anwendung>> 2 Jahre hab ich nicht geschlafen, nur für mich ergibt C-Programmierung> bzw. µController Programmierung keinen Sinn. Ich versteh das einfach zu> wenig, wenn ich ehrlich bin. Für mich steht auch nur mehr im> Vordergrund, dass ich dieses Jahr abschließe und endlich etwas anderes> anfangen kann, weil ich selbst weiß, dass dies nicht meine Zukunft> werden wird. Zur Verteidigung: Ich breche nicht im 4. oder 5. Schuljahr> ab, wenn ich so kurz vor der Matura stehe!
Dass du mit diesem Wissen überhaupt bestehen kannst sagt so ziemlich
alles...
Scheine sagen noch lange nicht, dass jemand etwas kann.
Welche Hardware wird euch zur Verfügung gestellt? Eine die genau auf die
Aufgabe ausgelegt ist oder einfach irgendein sonstwas Eval-Board mit dem
ihr mal machen sollt...?
Was ist schon an Software vorgeben? Was genau ist mit USB-Schnittstelle
gemeint? Wenn ihr hierfür einen kompletten USB-Treiber programmieren
müsst, dann wird das mit dem Abschluss wohl noch ein paar Jahre
dauern...
mfg
timermensch schrieb:> Dass du mit diesem Wissen überhaupt bestehen kannst sagt so ziemlich> alles...>> Scheine sagen noch lange nicht, dass jemand etwas kann.
4 gewinnt, mit der Einstellung leben sehr viele in meiner Klasse, weil
wir alle wissen, dass wir nicht wirklich was gelernt haben bisher.
Ich hab auch nicht vor in dieser Sparte zu bleiben.
Felix F. schrieb:> Welche Hardware wird euch zur Verfügung gestellt? Eine die genau auf die> Aufgabe ausgelegt ist oder einfach irgendein sonstwas Eval-Board mit dem> ihr mal machen sollt...?>> Was ist schon an Software vorgeben? Was genau ist mit USB-Schnittstelle> gemeint? Wenn ihr hierfür einen kompletten USB-Treiber programmieren> müsst, dann wird das mit dem Abschluss wohl noch ein paar Jahre> dauern...>> mfg
Wir bekommen einen Atmega 2560 mit MCP2515 für CAN und über einen Port
mit einem I²C Bus verbunden (keine Ahnung wie diese Hardware aussieht)
Software ist nicht vorgegeben. Es sollen eigene Funktionen geschrieben
werden, die das Auslesen ermöglichen.
USB-Schnittstelle: USB zwischen µController und PC: über diesen werden
die Daten gesendet. Brauchen keinen Treiber laut Lehrer, Serial Port
lässt sich mit einer Anweisung anscheinend auslesen.
Ich brauch den Abschluss leider, noch ein Jahr schaff ich hier drinnen
echt nicht :/
Stefie schrieb:> -> Auslesen der Daten der beiden Busse mit C und Übertragung von> µController an PC (C#-Programm) per USB-Schnittstelle
Auslesen als Master, Slave oder passiv mitlesen?
Stefie schrieb:> Wir bekommen einen Atmega 2560 mit MCP2515 für CAN
Und so nach und nach kommen auch die wichtigen Informationen.
Und der Mega 2560 sitzt nicht zufällug auf einem Arduino Mega 2560 und
wird mit der Arduino-IDE programmiert?
Horst schrieb:> Auslesen als Master, Slave oder passiv mitlesen?
passives mitlesen.
Horst schrieb:> Und so nach und nach kommen auch die wichtigen Informationen.>> Und der Mega 2560 sitzt nicht zufällug auf einem Arduino Mega 2560 und> wird mit der Arduino-IDE programmiert?
Keine Ahnung, kann aber leicht sein. Wenn Arduino-IDE das AVRStudio ist,
wo man in C programmiert, dann ist es das, sonst nicht.
Tut mir leid, wegen meinem extremen Nichtwissen :/
Stefie schrieb:> Tut mir leid, wegen meinem extremen Nichtwissen
Naja, auf dem Stand bleibt nur, daß jemand diese Aufgabe komplett für
Dich erledigt.
Das ist nichts für mich.
Nein, das AVR Studio ist etwas anderes.
Ganz grob gesagt:
Arduino -> Anfänger
AVR Studio -> Fortgeschritten/Experten
Sagt dir SPI, I2C, Flash, Debuggen, RAM, GPIO, (USART, Serielle
Schnittstelle, RS232), Programmer, Protokoll, Interrupts etwas??
Wenn dir nicht mindestens 80% der Begriffe geläufig sind, kannst du es
ohne umfangreiche Hilfe vergessen.
Wie viel Zeit ist für das Projekt überhaupt vorhanden?
mfg
Stefie schrieb:> nur für mich ergibt C-Programmierung> bzw. µController Programmierung keinen Sinn.
Das lernt man auch nicht von jetzt auf gleich.
Die Aufgabe sinnvoll in einzelne Module zu unterteilen und diese dann zu
implementieren, braucht viel Erfahrung.
So ein Sniffer ist nicht ohne. Und dann noch 2 verschiedene Busse
gleichzeitig. Da hätten selbst Profis dran zu knabbern.
Stefie schrieb:> USB-Schnittstelle: USB zwischen µController und PC: über diesen werden> die Daten gesendet. Brauchen keinen Treiber laut Lehrer, Serial Port> lässt sich mit einer Anweisung anscheinend auslesen.
Das riecht stark nach UART-USB Konverter. Also noch ne weitere
Schnittstelle mit Protokoll darüber stülpen. Die UART ist damit
hoffnungslos überfordert.
Ne, sowas unünberlegtes würde ich als Aufgabe ablehnen.
Peter D. schrieb:> Die UART ist damit hoffnungslos überfordert.
Naja, zumindest für I2C bis 100kHz geht das mit nem Tiny45, stammt,
glaub ich, sogar von Dir das Projekt.
Mit CAN funktionierts auch, sofern nur wenige Nachrichten pro Sekunde
kommen. Und praktischen Nutzen muss so ein Schulprojekt ja sowieso nicht
haben.
Und so als prinzipielles Anschauungsprojekt finde ich die Idee jetzt gar
nicht so schlecht, nur hat unsere liebe Stefie im Unterricht nicht
aufgepasst oder die Lehrer haben zu hohe Anforderungen....
mfg
Hallo Stefie,
mit den nun erhaltenen Hintergrundinformationen möchte ich eine Sache
anmerken.
Deine Ehrlichkeit ist zwar löblich, aber strategisch um hier Hilfe im
Forum zu bekommen geradezu schädlich. Niemand ist motiviert dir zu
helfen, wenn du nur irgendeine "vier gewinnt" Aufgabe zu lösen hast, um
danach etwas anderes zu machen.
Die Lösung deines Problems schaut ganz anders aus:
1) Dein Lehrer hat den Lehrauftrag verfehlt und man müsste man ein
Wörtchen mit ihm reden. Sowas kann keiner von euch verlangen, wenn das
Wissen nicht vorher gelehrt wurde.
oder
2) Du hast absolut nichts aus dem Kurs mitgenommen und versuchst nun mit
minimalem Aufwand 5 vor 12 irgendetwas zu retten. Hier wäre eher
angebracht schon jetzt sich mit der alternativen beruflichen Zukunft in
einem anderen Gebiet zu beschäftigen. Der Abschluss in diesem Fach wird
dir für diese sowieso nichts bringen.
Versteh mich nicht falsch, aber man kann das aus der Ferne nicht
einschätzen wie die Lage ist. Auf jeden Fall werdet ihr mit deinem uns
vermittelten Wissen in absehbarer Zeit nichts auf die Beine stellen
können. Das weiß ich aus eigener Erfahrung. Das ist kein Vorwurf, nur
eine Tatsache. Ich glaube die meisten hier im Forum werden mir da
zustimmen.
Ich bin absolut keiner Dauerpessimisten hier im Forum, aber da ich nun
von deiner Motivation gehört hab, weiß ich, dass es dir auch nicht so
wichtig ist.
Kleiner Nachtrag:
Für ein Schulprojekt finde ich die Aufgabe auch ein bisschen zu Hoch
gegriffen. Sowas ist eigentlich schon ein nettes Projekt für Studenten
der entsprechenden Fachrichtung.
Zudem sollte hier im Team gearbeitet werden. Z.B. 1 PC SW, 1 I2C Teil, 1
CAN Teil oder so...
Hier ist man locker im Bereich von mehreren Hundert Stunden.
mfg