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.
@ Stefie Drei Hypothesen: - dein Name ist nicht Stefie - es gibt keine Schulaufgabe - du bist ein Troll
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.
Der FTDI ist ein Baustein. Du hängst einfach den USART des AVR an den FTDI und schickst am USART einfach "ABC" raus. der FTDI gibt sich am PC dann als (virtueller) Serieller Port aus. In C# öffnest du einfach diesen seriellen Port ([[https://msdn.microsoft.com/de-de/library/system.io.ports.serialport(v=vs.110).aspx]]) und liest ihn aus und erhälst dann "ABC". Damit kannst du ganz leicht Daten zwischen AVR und PC austauschen. Am besten liest du dir überhaupt einmal durch, was I2C etc ist. [[https://de.wikipedia.org/wiki/I%C2%B2C]] [[https://de.wikipedia.org/wiki/Controller_Area_Network]] mfg
:
Bearbeitet durch User
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
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.