Hallo,
ich habe leider nicht viel Ahnung vom C Programmieren und brauche ganz
dringend Hilfe für ein Projekt. Ich muss ein kleines Programm in C für
den ATmega32 schreiben. Es würde für jemanden Erfahrenen vielleicht 2-3
Std dauern. Kann mir das jemand schreiben oder helfen?
Danke für Eure Hilfe!
M
Micro123 schrieb:> Hallo,>> ich habe leider nicht viel Ahnung vom C Programmieren und brauche ganz> dringend Hilfe für ein Projekt. Ich muss ein kleines Programm in C für> den ATmega32 schreiben. Es würde für jemanden Erfahrenen vielleicht 2-3> Std dauern. Kann mir das jemand schreiben oder helfen?>> Danke für Eure Hilfe!>> M
Hi,
was ist denn die konkrete Aufgabe ?
Micro123 schrieb:> Mein Lehrer bzw. fehlen mir nur noch mehr ein paar Punkte zum> Durchkommen und Microcontroller liegt mir so gar nicht.
Wie wäre es denn das Ganze mal zu lernen. Das ist doch die Crux an der
Aufgabe, die dein Lehrer dir gestellt hat: Er möchte, dass DU es lernst,
nicht wir ;)
Micro123 schrieb:> Mein Lehrer bzw. fehlen mir nur noch mehr ein paar Punkte zum> Durchkommen und Microcontroller liegt mir so gar nicht.
Deinem Lehrer fehlen sicher keine Punkte, sondern Dir!
Versuchs doch einfach mal. Wenn's dann konkrete Fragen gibt, hilft Dir
hier sicher jeder, die richtige Spur zu finden. Aber einfach Deine
Hausaufgaben machen, dazu hat hier keiner so richtig Lust. Und letztlich
hilf es Dir auch nicht weiter. Spätestens bei der nächsten Aufgabe
stehst Du wieder im Wald.
Also fang doch mal an!
Selbst wenn dir jemand das Programm schreiben würde, wäre dir nicht
geholfen.
Ich habe die Erfahrung gemacht das Lehrer gerne Rückfragen zum Programm
stellen um sicher zu gehen das der Schüles es auch selbst geschrieben;
bzw verstanden hat.
Horst V. schrieb:> Also fang doch mal an!Micro123 schrieb:> und Microcontroller liegt mir so gar nicht.
Also du hast null Bock, würde meine Tochter sagen. Wahrscheinlich
auf wenig bis gar nichts.
Es gibt keine nächste Aufgabe mehr ;)
Ich bin von einem ganz anderen Gebiet eigentlich und werde es nie wieder
mehr brauchen. Ich kann mt Programmieren leider so gar nichts anfangen,
aber es wird leider verlangt.
Ich trau mich hier nicht mehr reinzuschreiben, weil ich möchte keine
Probleme bekommen.
Micro123 schrieb:> Es gibt keine nächste Aufgabe mehr ;)> Ich bin von einem ganz anderen Gebiet eigentlich und werde es nie wieder> mehr brauchen. Ich kann mt Programmieren leider so gar nichts anfangen,> aber es wird leider verlangt.> Ich trau mich hier nicht mehr reinzuschreiben, weil ich möchte keine> Probleme bekommen.
Bin auch der Meinung, dass das keinen Sinn macht, wenn man es später
nicht mehr benötigt. Wie gesagt, schick einfach die Aufgabe hier rein
und dann kann man dir sicherlich Hilfestellung bieten.
Ich habe euch mal die Aufgabe hier hochgeladen.
Also ich müsste hier ein Kommandozeilenprogramm am Raspi schreiben, wo
dann was passiert, wenn man den Parameter wählt. Ich weiß nur grad gar
nicht wie ich da am besten anfangen soll bzw. wie das Grundgerüst
aussehen soll, wenn ich mit dem ATmega kommunizieren soll.
Um Hilfe wäre ich sehr dankbar.
Ich hätte hier noch eine Idee vorgearbeitet, aber ich weiß nicht wie ich
es umsetzen kann:
SPI CLI:
fan-control-cli (intern):
geht von einer bestimmten erhaltenen bitfolge über MISO aus
fan-control-cli -h
Ausgabe von Hilfe
fan-control-cli -p
Get current duty Cycle in Prozent/Fixwert
erwartete bitfolge: 1 oder 2 mit Wert, 0000 0000 wird ignoriert
MOSI:1111 1111
MISO: 0000 0001 für Success
MISO(Prozent): 0000 DUTY ... DUTY ist der übergebene Wert
oder
MISO: 0000 1000 für Failure
fan-control-cli -s PERC
Set current duty Cycle in Prozent/Fixwert
erwartete bitfolge: 1 mit Wert, 0000 0000 wird ignoriert
MOSI: 0000 1111 ... messagetype
MOSI: 0000 PERC
MISO: 0000 0001 für Success (intern setzte Variable für manuelles
Zuweisen auzf true)
MISO: 0000 1000 für Failure
fan-control-cli -r
Release control oder Duty Cycle
erwartete bitfolge: 1 mit Wert, 0000 0000 wird ignoriert
MOSI: 1111 0000
MISO: 0000 0001 für Success (intern setzte Variable für manuelles
Zuweisen auf false)
MISO: 1000 0000 für Failure (Variable bereits auf false)
MISO: 0000 1000 für Failure
fan-control-cli -t
Get current tacho RPM
erwartete bitfolge: 1 oder 3 mit Wert, 0000 0000 wird ignoriert
MOSI: 1100 1100
MISO: 0000 0001 für Success
MISO: RPM (obere 8 bit) +
MISO: RPM (untere 8 bit)
oder
MISO: 0000 1000 für Failure
Oh Gott, was fürn Scheiß!
Der Lehrer will Dich ärgern oder hat überhaupt keinen Durchblick. Am
Slave-SPI der AVRs haben sich schon viele erfolglos die Zähne
ausgebissen. Das ist praktisch nie zuverlässig hinzukriegen. Ein
Protokoll mit CRC und Retry könnte mehr schlecht als recht laufen.
Der AVR hat 2 entscheidende Nachteile fürs Slave-SPI:
- keine Interruptlevel
- keinen Sendepuffer oder DMA.
Warum darfst Du nicht die UART nehmen, die ist in beide Richtungen
gepuffert.
Sehe grad, die UART soll ja auch benutzt werden. Wozu dann eine 2.
Schnittstelle, das ist doch Unsinn^³.
Na dann noch viel Spaß mit dem Slave-SPI.
Tip: setze den SPI-Takt auf dem Raspi auf 1kHz oder weniger. Das sollte
dann dem AVR Zeit genug für den SPI-Interrupt lassen.
Ich finde die Aufgabe gut!
Klar, die vom Peter genannte SPI Hürde...
Aber die bekommt man in den Griff.
(und sei es auch nur über Wartezeiten zwischen den Bytes)
Seriell, SPI, Tacho lesen PWM
Mehrere Plattformen
Plattformübergreifender Schnittstellencode.
Ja, das ist ein ganzes Büschel Aufgaben/Hürden.
Ich kann mir nicht vorstellen, dass die Aufgabe aus dem Nichts kommt.
Ohne ca 1/2 bis 1 Jahr Vorlaufzeit, ist das für einen unbedarften
Anfänger nicht zu schaffen.
Micro123 schrieb:> vielleicht 2-3 Std dauern.
Selbst für jemanden, welcher die Grundlagen voll auf dem Schirm hat und
alle Komponenten kennt, ist das arg optimistisch.
Für dich:
Nimm die 3 Stunden, verdoppele sie, wegen der potentiellen
Fehleinschätzung.
Verdoppele, wegen dem Debuggen.
Verdoppele, wg. der Doku
Dann bist du bei 24H, drei vollen Arbeitstagen.
Peter D. schrieb:> Wozu dann eine 2.> Schnittstelle, das ist doch Unsinn^³.
Übungsaufgaben sind immer etwas an den Haaren herbeigezogen.
So wie ein Vergleich, auch immer, mit mindestens einem Fuß hinken muss.
Arduino Fanboy D. schrieb:> Ich kann mir nicht vorstellen, dass die Aufgabe aus dem Nichts kommt.> Ohne ca 1/2 bis 1 Jahr Vorlaufzeit, ist das für einen unbedarften> Anfänger nicht zu schaffen.
Seh ich absolut genauso. Das ist keineswegs eine Anfängeraufgabe die man
mal so in der 2. Informatikstunde vors Gesicht bekommt und in 1 h
Programmiert. Ich befasse mich schon seit 10 Jahren hobbymäßig mit
Mikrocontrollern und dafür würde ich definitiv eher 2-3 Tage brauchen
damit alles zuverlässig läuft.
Micro123 schrieb:> Ich bin von einem ganz anderen Gebiet eigentlich und werde es nie wieder> mehr brauchen.
In welchem Kurs der eigentlich total unwichtig ist bekommt man bitte so
eine Programmieraufgabe?
Ich fühle mich ein bisschen verarscht ehrlich gesagt und würde dir
empfehlen mit dem Lehrer zu sprechen wenn du überhaupt keine Ahnung hast
und mal abklopfen wieso das so ist. Soll er dir doch eine Hilfestellung
geben.
Übrigens könnte ich mir vorstellen dass ein Lehrer der solche Aufgaben
verteilt auch Gast in dem Forum ist. Da würde ich also auch mal eher die
Füße still halten.
Wenn ich schon den ersten Satz der Aufgabe lese...da gab es ganz sicher
schon Vorarbeiten dazu und ich bin mir sicher: Für diese
Aufgabenstellung gibt es eine Musterlösung die funktioniert. Man kann
durchaus das eine und andere Fach in der Schule/Uni als Quatsch ansehen
(bei mir war das z.B. Einführung in die Mikrotechnologie im Studium...im
5. Semester...ich studierte Mikrotechnologie...zum Leben zu wenig, zum
Sterben zu viel) aber das entbindet ja einen nicht von der Aufgabe wenn
man den Abschluss haben will. Und ich denke auch: Es wird ganz sicher
lösbar sein mit vertretbaren Aufwand. Man muss sich halt damit
beschäftigen.