Hallo Zusammen. Im Rahmen eines Projektes an unserer Hochschule muss ich mich mit dem Programmieren eines Mikrocontrollers befassen. Da ich kein Informatiker bin und unsere Vorkentnisse diesbezüglich sehr sperrlich sind tue ich mich hierbei schwer und benötige Hilfe von erfahrenen, netten Menschen =) Aufgabenstellung: Drehzahlsteuerung eines DC Motors mittels PWM über Bluetooth. Die Einstellung soll über einen Poti erfolgen. Wir arbeiten mit einem Atmega328 und programmieren diesen im Atmel Studio. Registerprogrammierung ist hier ein großer Punkt welchen ich mir zum Teil aus Tutorials und Videos rausgezogen habe aber dennoch nicht verstehe. Ich finde einfach nichts, was mir dieses Prinzip einfach und auf meinem Niveau verständlich erklärt. Der Gesamtaufwand dieses Projektes ist vom Aufwand her zwischen Seminararbeit (6. Semester) und Bachelor Thesis. Um meine Verzweiflung verständlich zu machen -> wir sind im 3. Semester... Wir mussten schon selbst eine Platine entwerfen und nun mit dem Atmega328 arbeiten. Kommentare wie "das ist doch einfach wenn man sich ein paar Tutorials anschaut"," ist doch nur copy and paste arbeit" bringen uns hier leider nicht weiter und auch wenn der Programmier Teil nichtmal benotet wird würde ich dennoch gerne verstehen was da passiert. Poti wird angeschlossen an ADC6 also PIN 19, dieser muss als Eingang definiert werden. (Eigentlich nur aktiviert da ja automatisch Eingang?). PD5 also PIN 9 soll als Ausgang definiert werden. An diesem hängt das Bluetoot Modul HC05. Was ich bisher mühselig zusammenklamüsert habe ist: --------------------------------------------------- #define F_CPU 8000000UL //Taktzeit vom CPU #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #define POTI 19 //kann man so die Pins hier oben definieren ? #define Motor 9 //-"- int main (void) { TCCR0A = (1<<WGM00) | (1<<COM0A1); //Register -> fast pwm modus anschalten TCCR0B = (1<<CS02); //Register -> prescaler/256 sei(); //Interrupts einschalten DDRD=0xFF; //Im Register die D- Pins einschalten PORTD=0b1001; //Den Pin 9 als ausgang definieren ??? //oder PORTD=0x00; heißt D-Pins als Ausgänge definieren? //müsste man dann aber nicht die Pins auf 1 und nicht auf 0 setzen? while(1) { //Poti abfragen? } } --------------------------------------------------- Ja man sieht ich bin eine Informatikpfeiffe, das weiß ich selbst. Leider hab ich nicht annähernd die Zeit die ich bräuchte um mich da mühsam einzuarbeiten, deswegen bin ich für jeden Tipp Mega dankbar! Wie man den Poti abfragt und verarbeitet weiß ich ebensowenig. Das habe ich nur einmal bei Arduino/IDE gesehen und wer nun behauptet das wäre leicht übertragbar -> für mich niiiiicht. Vielen Dank und beste Grüße
Phil P. schrieb: > Im Rahmen eines Projektes an unserer Hochschule muss ich mich mit dem > Programmieren eines Mikrocontrollers befassen. Da ich kein Informatiker > bin und unsere Vorkentnisse diesbezüglich sehr sperrlich sind tue ich > mich hierbei schwer und benötige Hilfe von erfahrenen, netten Menschen Gegenfrage: bist du ein Soziopath? Wenn du an einer Hochschule studierst, ist die Wahrscheinlichkeit recht hoch, daß es da Informatiker (oder zumindest informatisch weniger minderbegabte Studenten) gibt, die dir helfen könnten. Schau dich doch einfach mal um. Räumliche Nähe (vulgo: die Möglichkeit, sich von Angesicht zu Angesicht zu treffen) ist üblicherweise ein Vorteil. Außer natürlich, wenn du ein Wiedergänger von Hannibal Lector (oder Freddy Krüger?) bist.
Phil P. schrieb: > Hallo Zusammen. > Im Rahmen eines Projektes an unserer Hochschule muss ich mich mit dem > Programmieren eines Mikrocontrollers befassen. Phil P. schrieb: > Wir mussten schon selbst eine Platine entwerfen Dein Widerwille ist schon enorm! Beiß dich mit aller Macht durch oder gib auf.
Axel S. schrieb: > Gegenfrage: bist du ein Soziopath? Eine solche "Gegenfrage" einer Person zu stellen, die man nicht kennt und von der man nichts weiß, ist eine bodenlose Unverschämtheit. rhf
Da freut man sich über zwei schnelle Antworten und dann sowas... Natürlich gibt es an der Hochschule informatisch begabtere Studenten, da diese aber in einem ausgelagerten Standort sind und nichtmal in meiner Fakultät gestaltet sich dies etwas schwierig ;) Ich weiß ja nicht was Ihr so studiert hat aber da man in einem Ingenieurstudium aus Prinzip schon zu wenig Zeit hat und wenn sogar unsere Profs sagen :" fragt nette Leute die Ahnung haben" dachte ich ich versuche mein Glück. Leider habe ich hier bisher noch keine angetroffen. Ob es sinnvoll ist (in einem neuen Studiengang) den Drittsemestern ein Projekt zuzuweisen welches beinahe an eine Bachelor Thesis heranreicht ist das eine aber soll ich nun auch das Rad neu erfinden? Wenn ich nicht das Ziel hätte mich durchzubeißen, wäre ich dann hier?
Roland F. schrieb: > Eine solche "Gegenfrage" einer Person zu stellen, die man nicht kennt > und von der man nichts weiß, ist eine bodenlose Unverschämtheit. Ich nehme es nichtmal persönlich, das sagt eigentlich mehr über Ihn als über mich aus. Genaugenommen habe ich auch gar keine Zeit mich über sowas zu ärgern. Sitze auch aus Spaß Freitag Abend/Nacht vorm Lappi und durchstöbere Foren welche Themen meines absoluten Hasskurses beinhalten
:
Bearbeitet durch User
Hallo Phil, > Wie man den Poti abfragt und verarbeitet weiß ich ebensowenig. Es ist schwierig dir einen Rat zu geben, der Hinweis von Axel, dich mal für eine Hilfestellung an der Uni umzuhören ist sicherlich sehr sinnvoll. Du wirst dich aber parallel dazu auch selbst mit der "Materie" beschäftigen müssen. Ein guter Einstieg sind das AVR- und das AVR-GCC-Tutorial in diesem Forum: https://www.mikrocontroller.net/articles/AVR-Tutorial https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Lese dich da mal ein und wenn unüberwindbare Schwierigkeiten auftreten, wirst du hier sicherlich Hilfe finden. rhf
@TO Also wenn man Deine Posts liest, dann muß man schon den Eindruck bekommen, daß Dir Dein Studium eher Last als Freude ist. Ich habe selbst studiert und kann mir deshalb auch nur schwer vorstellen das man als Student so gar keine Zeit hat. Ich für meinen Teil hatte als Student genügend Zeit. Phil P. schrieb: > Sitze auch aus Spaß Freitag Abend/Nacht vorm Lappi und durchstöbere > Foren welche Themen meines absoluten Hasskurses beinhalten Ich glaube Du mußt Deine Einstellung grundlegend ändern. Wenn Du mit dieser Einstellung an das Fach heran gehst wird das nichts. Es gibt in einem Studium nun auch mal Fächer die man nicht so mag, aber da muß man eben durch. Das Suchen in Foren nach fehlendem Wissen ist der falsche Weg. Das Grundwissen muß man sich erst einmal selbst erarbeiten. Dazu kann man natürlich im Internet nach geeigneten Tutorials suchen und wird da sicher auch fündig, auch im µC.net. Ich würde allerdings für den Anfang ein gutes Fachbuch bevorzugen. Das kann man nämlich neben den Laptop legen, so das man mit dem Laptop die Beispiele auch gleich nachvollziehen kann und wenn man das Buch sein eigen nennt, kann man sich dort auch noch Notizen machen. Das Internettutorial verleitet auch viel zu sehr zu Copy&Paste, wobei man nichts lernt. Wenn man sich Grundwissen erarbeitet hat, dann sollte man sich im nächsten Schritt erst einmal ein eigenes kleines Projekt (nicht zu kompliziert) ausdenken und umsetzen. Das schult ungemein. Wenn dann die Grundlagen sitzen, dann ist ein Forum sicher eine gute Quelle für den Gedankenaustausch. In diesem Forum wird Dir keiner Deine Aufgaben lösen, das mußt Du schon selber tun. Löse Dich auch von dem Gedanken das Ganze mal so schnell nebenbei zu machen. Du wirst bei Deinem Wissensstand sehr viel Zeit in die Sache investieren müssen.
Zeno schrieb: > Löse Dich auch von dem Gedanken das Ganze mal so schnell nebenbei zu > machen. Du wirst bei Deinem Wissensstand sehr viel Zeit in die Sache > investieren müssen. Genau da liegt das Problem, ich habe keine Zeit. - Während Bekannte von mir die BWL, Wirtschaftsinformatik usw studieren und 3-5 Prüfungen pro Semester schreiben, habe ich im Schnitt 9-11. -Je nach Studiengang wird das Studium immer umfangreicher weil es mehr und komplexere Technik gibt (Vergleich Maschinenbau, Elektrotechnik vor 30 Jahren und Heute). -Mein Studiengang (deswegen sagte ich neu) ist ein Zusammenschluss aus zwei verschiedenen Studiengängen die es nun nichtmehr gibt. Gefühlt studieren wir zwei Studiengänge parallel (Wir sind die ersten bei denen das so ist) und dann habe ich definitiv nicht die Zeit noch einen dritten anzufangen. Im ersten Semester hatten wir regulär 50h+ Vorlesungen die Woche. Wir sind die Versuchskaninchen, kriegen gut auf den Deckel und bei unseren Nachfolgern sieht man schon einen deutlicheren Unterschied. Deswegen war mein Ansatz auch nicht " schreibt mir einen vollständigen Code" sondern eher " gebt mir Tipps, gerne mit Verbesserungen und den Erklärungen wann da was passiert", da ich wenigstens grob verstehen möchte, was ich tue.
Phil P. schrieb: > Da ich kein Informatiker bin und unsere Vorkentnisse diesbezüglich sehr > sperrlich sind tue ich mich hierbei schwer und benötige Hilfe von > erfahrenen, netten Menschen =) Bist du sicher, dass eine technische Ausbildung das Richtige für dich ist? Die Aufgabenstellung entspricht in etwa dem, was ein zukünftiger Arbeitgeber erwarten wird: Sich in neue Themenbereiche schnell und mit Interesse selbstständig einzuarbeiten.
Phil P. schrieb: > Zeno schrieb: >> Löse Dich auch von dem Gedanken das Ganze mal so schnell nebenbei zu >> machen. Du wirst bei Deinem Wissensstand sehr viel Zeit in die Sache >> investieren müssen. > > Genau da liegt das Problem, ich habe keine Zeit. Naja. Man kann mal so Deinen Code kommentieren. > ... gebt mir Tipps, gerne mit Verbesserungen und den Erklärungen > wann da was passiert" Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B. Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe Information nochmal wiedergeben und Du sie hier liest. Die eigentliche Aufgabe, dass aufzunehmen und zu verarbeiten lässt sich nicht umgehen. Welches Fach studierst Du nun eigentlich. Es fällt mir auf, dass Du da darum herum redest und das Fach nicht einfach nennst. Gut finde ich, dass Du Code postest und Kommentare hinzufügt hast. Da kann man daran ansetzen: (Die folgenden Seitenzahlen beziehen sich auf das Datenblatt hier: ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with% 20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf) #define F_CPU 8000000UL //Taktzeit vom CPU Das ist nicht die "Taktzeit" sondern die "Taktfrequenz". Zwischen Zeit und Frequenz besteht zwar ein Zusammenhang, aber das ist nicht das selbe. Vielmehr bedeutet "Frequenz" ganz allgemein eine Anzahl von Ereignissen pro Zeiteinheit. Die Einheit ist 1/s. Die Einheit einer Zeit hingegen ist s. #define POTI 19 //kann man so die Pins hier oben definieren ? Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Diese Nummerierung ist eine Besonderheit bei Arduino und kann hier (mit dem GCC-Compiler und der Atmel-IDE) nicht verwendet werden. int main (void) { TCCR0A = (1<<WGM00) | (1<<COM0A1); //Register -> fast pwm modus anschalten Und wozu? TCCR0B = (1<<CS02); //Register -> prescaler/256 Und wozu? sei(); //Interrupts einschalten Wozu? Es sind keine Interrupt-Routinen definiert. Es sind keine Interruptquellen aktiviert. (Seite 84 ff.) DDRD=0xFF; //Im Register die D- Pins einschalten "Eingeschaltet" d.h. mit Energie versorgt, sind die Pins immer, sobald der uC versorgt wird. "DDR" bezeichnet ein Datenrichtungs-Register. (Seite 125) Die Bitpositionen korrespondieren mit einem Bit des Ein- Ausgabe-Ports. (Seiten 14, 18 und 124). Was sind "D-" Pins? Klare Bezeichnungen verwenden. PORTD=0b1001; //Den Pin 9 als ausgang definieren ??? Nein. Das geschieht mit dem Datenrichtungsregister DDR<x>. Siehe oben, wegen der Nummerierung. Der Wert auf der rechten Seite entspricht der verwendeten Neun, was hier nicht anwendbar ist. Tatsächlich werden hier die Bits Nummer 0 und Nummer 3 auf den Wert '1' gesetzt. Alle anderen auf '0'. PORT ist das Datenregister. Die Bitpositionen korrespondieren mit je einem Bit des Ein-Ausgabeports. (Seiten 14, 18 und 124). //oder PORTD=0x00; heißt D-Pins als Ausgänge definieren? Nein. Das ist oben mit dem setzen des Datenrichtungsregister DDR geschehen. //müsste man dann aber nicht die Pins auf 1 und nicht auf 0 setzen? Diese Frage entfällt also. PORT<x> setzt den tatsächlichen Ausgangspegel des Ports, falls er entsprechend mit dem DDR<x> auf Ausgang gesetzt wurde (was in Deinem Code der Fall ist). Das setzen von PORT<x> bei Pins die auf Eingang gesetzt sind, hat das eine besondere Bedeutung. (Seite 101. Insbesondere Tabelle 18-1). while(1) { //Poti abfragen? Das läuft auf die Verwendung des Analog-Digital-Wandlers hinaus. Siehe Seiten 305 ff.) Die Arduino-Umgebung hat das sehr abstrahiert. Wie das im Einzelnen geht, wird evtl. sehr neu für Dich sein, ist aber auch nicht sehr schwierig. } }
Tja, jetzt hattest Du eine technische Frage und bekommst statt einer Antwort darauf eine Lebensberatung. Ich versuch's mal technisch: Da ein Atmega328 auf der Platine ist, könntest Du auf einem Arduino Uno entwickeln und dann das HEX-File auf den Atmega328 flashen. Je nach Bluetooth-Modul könnte es schon fertige Lösungen geben. PWM und Motorsteuerungsbeispiele gäbe es für den Uno genug. Beim Verwenden des Arduino-Frameworks hast Du dann noch den Vorteil der riesigen Bibliotheksauswahl.
Die Aufgabestellung ist eigentlich mehrfach : 1. Entwurfe eine Platine mit ein Atmel 328 (Rand Bedingungen ?), etwas ahnlich wie den Arduino UNO ? 2. Diese Platine soll Ein Analog Eingang haben, und ein Schnittstelle ueber BT, den HC 05. Diese HC05 kan serielle communication ueber BT machen. 3. Eine Motorsteurung die ueber BT gesteuert wird, hier muss den letzendlich PWM verwendet werden. Platine schon vorhanden ? 4. Der SW soll dan geschrieben werden, in C (IDE = Atmel Studio ?), Arduino nicht zugelassen ? Für eine Laie ist das eine sehr grosse Herausforderung, ohne gute Begeleitung wird das nichts ! Ich soll am ersten anfangen mit bestehende hardware : 2*Arduino UNO, 2*BT HC05, motordriver H-brucke, eine kleine DC-motor. SW soll ich eigentlich auch erst mit Arduino machen, als Erfahrung mit programmieren. Wenn das dan klapt, können sie mal selbtst eine Platine entwurfen und der UNO ersetzen... MFT, RP6conrad.
Beitrag #5658882 wurde von einem Moderator gelöscht.
Phil P. schrieb: > Genau da liegt das Problem, ich habe keine Zeit. > - Während Bekannte von mir die BWL, Wirtschaftsinformatik usw studieren > und 3-5 Prüfungen pro Semester schreiben, habe ich im Schnitt 9-11. > -Je nach Studiengang wird das Studium immer umfangreicher weil es mehr > und komplexere Technik gibt (Vergleich Maschinenbau, Elektrotechnik vor > 30 Jahren und Heute). > -Mein Studiengang (deswegen sagte ich neu) ist ein Zusammenschluss aus > zwei verschiedenen Studiengängen die es nun nichtmehr gibt. Gefühlt > studieren wir zwei Studiengänge parallel (Wir sind die ersten bei denen > das so ist) und dann habe ich definitiv nicht die Zeit noch einen > dritten anzufangen. Im ersten Semester hatten wir regulär 50h+ > Vorlesungen die Woche. Wir sind die Versuchskaninchen, kriegen gut auf > den Deckel und bei unseren Nachfolgern sieht man schon einen > deutlicheren Unterschied. Da muss ich jetzt einfach meinen Senf dazugeben. Ich studiere WIng, was ebenfalls aus 2 Studiengängen besteht. Bei den Wirtschaftsfächern hängen wir bei den BWLern, bei den Elektrotechnikfächern bei den E-Technikern. Haben also auch keine "abgespeckten, für die doofen WIngs-" Vorlesungen. Deine angegebenen Prüfungsleistungen im Vergleich zu anderen Studiengängen ist Schwachsinn. Das was andere Studiengänge an Prüfungen fehlt, wird durch Hausarbeiten kompensiert. Klar sind die einen Studiengänge weniger, die anderen mehr komplex. Weißt du was dein späterer Arbeitgeber macht, wenn du ihm sagst du hast keine Zeit ein Projekt anständig zu bearbeiten? Frag mal deinen Nachfolger.. Habe vor dem Studium eine Lehre absolviert, die mich ziemlich auf den Boden der Tatsachen geholt hat. Das merke ich auch im Vergleich zu meinen Kommilitonen. Ich hab mich auch oft während dem Studium ungerecht behandelt gefühlt. Da kann man drauf rumschmollen, das ändert aber an der Situation nichts. Denk immer dran. Während du dich über die Aufgabe ärgerst, versucht ein Anderer diese schon zu lösen. Will dir damit nichts vermiesen. Finde es toll, dass du wie ich, das Forum als Studienhilfe nimmst. Aber geh bitte etwas anders an die Aufgaben ran. Nutz die Kompetenz von den Mitgliedern, die oft länger im Business sind, als wir überhaupt atmen, hier als Hilfe und arbeite dann selbstständig weiter an der Lösung. Wo ein Wille, da auch ein Weg. Ich kenn die stressigen Zeiten. Schreibe zur Zeit meine Abschlussarbeit, bin im Unternehmen tätig und verbringe die restliche Zeit mit der Vorbereitung in die Selbstständigkeit. Es sind harte Zeiten, aber es gibt auch wieder bessere. Kopf Hoch, Kaffee einschenken und reinhauen! Die Belohnung ist das Gefühl, wenn etwas nach langem Probieren und Testen endlich funktioniert :) Hoffe konnte dich ein wenig motivieren! Viel Erfolg weiterhin!
https://www.youtube.com/results?search_query=arduino+bluetooth+motor https://www.google.de/search?q=arduino+bluetooth+motor
Eigentlich steht im Datenblatt des 328P alles drin was du brauchst. Dort sind Programmbeispiele in c und assembler zu allen Themen. Wie man welche Ports definiert, wie man einen ADC-Wert einliest, was zu beachten ist. Einfach mal googeln, Datenblatt runterladen und dich in die fraglichen Themen einlesen. Fragen kannst du dann ja immer noch wenn was nicht funktioniert oder so.
Beitrag #5658917 wurde von einem Moderator gelöscht.
Phil P. schrieb: > Wie man den Poti abfragt und verarbeitet weiß ich ebensowenig. Beispiel mit ATtiny13: https://adnbr.co.uk/articles/adc-and-pwm-basics
Schukostecker schrieb: > Bist du sicher, dass eine technische Ausbildung das Richtige für dich > ist? Na eine Platine konnten wir auch ohne Vorkenntnisse entwerfen und layouten und uns das Prinzip einer Vollbrücke verstehen. Schukostecker schrieb: > Die Aufgabenstellung entspricht in etwa dem, was ein zukünftiger > Arbeitgeber erwarten wird: Sich in neue Themenbereiche schnell und mit > Interesse selbstständig einzuarbeiten. Korrekt. Aber wenn es denn soweit ist hat man wenigstens die Basics drauf und ist nichtmehr am Anfang das Studiums. Theor schrieb: > Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B. > Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe > Information nochmal wiedergeben und Du sie hier liest Genau, das halbwegs rauslesen welches register und welchen Port ich brauche ist eine Sache das habe ich zumindest zum Teil verstanden. Aber das Prinzip wie genau ich diese einschalte (einschalten = einfach versorgen und somit nutzbar machen ) nicht. Register "aktivieren", Port auf Ein oder Ausgang "schalten" aber kann ich darin nochmal einzelne Pins definieren? Theor schrieb: > Welches Fach studierst Du nun eigentlich. Es fällt mir auf, dass Du da > darum herum redest und das Fach nicht einfach nennst. Das ist korrekt. Wenn hier nur gegen einen geschossen wird ist man natürlich vorsichtig und hat keine große Lust noch mehr Einzelheiten rauszuhauen da: Cornelius schrieb: > Tja, jetzt hattest Du eine technische Frage und bekommst statt einer > Antwort darauf eine Lebensberatung. Ich studiere Mechatronik und Robotik. Theor schrieb: > Das ist nicht die "Taktzeit" sondern die "Taktfrequenz". Hast du natürlich Recht. Habe ich beiläufig einfach nur falsch bezeichnet. Theor schrieb: > Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Gut zu wissen, danke! Ich meine ich hätte das in einem Beispiel in Atmel Studio schon gesehen aber im Zweifelsfall liege ich falsch :D Den PWM Modus benötige ich doch weil ich ein PWM Signal ausgeben möchte? Wieso genau ich den Prescaler durch 256 teilen soll weiß ich auch nicht recht. Dadurch dass ich 8-Bit PWM habe habe ich ja eigentlich auch nur 256 Werte. Da ich diese aber auch nichtmehr auslese oder als % anzeige ist es eigentlich unwichtig? Das Programm ist ja auch noch nicht fertig vielleicht müssen ja noch interrupts rein? Theor schrieb: > PORTD=0b1001; //Den Pin 9 als ausgang definieren ??? > > Nein. Das geschieht mit dem Datenrichtungsregister DDR<x>. Was gäbe es dann für einen Grund soetwas zu benutzen (Ist aus einem Video auf Youtube). Außer, dass ich hier halt den Pin "falsch angesprochen" hätte. Wie kann ich denn dann die von mir benötigten Pins exakt so definieren wie ich sie brauche, wie konkret würde das aussehen ? Theor schrieb: > Das läuft auf die Verwendung des Analog-Digital-Wandlers hinaus. Siehe > Seiten 305 ff.) Die Arduino-Umgebung hat das sehr abstrahiert. Wie das > im Einzelnen geht, wird evtl. sehr neu für Dich sein, ist aber auch > nicht sehr schwierig. Vielen Dank! Deine Kommentare haben mich schonmal weiter gebracht, genau so etwas habe ich mir erhoft=) Cornelius schrieb: > Beim Verwenden des Arduino-Frameworks hast Du dann noch den Vorteil der > riesigen Bibliotheksauswahl. Sehe ich genauso aber wir wurden "gebeten" Atmel Studio zu verwenden :S RP6conrad schrieb: > Für eine Laie ist das eine sehr grosse Herausforderung, ohne gute > Begeleitung wird das nichts ! Sehe ich genauso. Chris M. schrieb: > Da muss ich jetzt einfach meinen Senf dazugeben. > Ich studiere WIng, was ebenfalls aus 2 Studiengängen besteht. Vielleicht versteh ich das aber mir wurde immer gesagt, dass die WINGler die Schnittstelle zwischen quasi "BWLern und Ingenieuren "sind. Somit umfangreiche Basics angelernt bekommen aber nicht so detailliert wie ein Ingenieur sich mit diesen befassen muss? Das Problem liegt aber vielleicht auch daran, dass es diese Kombination erst seit meinem Semester so gibt und die Organisation einfach noch drunter und drüber läuft. Chris M. schrieb: > Da kann man drauf rumschmollen, das ändert aber an der Situation nichts. Ich möchte weder schmollen, noch bemitleidet werden oder sonstiges. Ich fühle mich hier leicht angegriffen und möchte nur klarstellen in welche Situation ich mich befinde, damit vielleicht der ein oder andere auch noch ein paar helfende Worte hat anstatt nur rumzupöbeln. Chris M. schrieb: > Es sind harte Zeiten, aber es > gibt auch wieder bessere. Recht hast du. Hätte ich nicht die Zeit nach dem Studium vor Augen hätte ich vermutlich schon längst geschmissen. Georg M. schrieb: > https://www.youtube.com/results?search_query=arduino+bluetooth+motor > > https://www.google.de/search?q=arduino+bluetooth+motor Über Arduino programmieren "darf" ich leider nicht =(
Phil P. schrieb: > Projektes ist vom Aufwand her zwischen Seminararbeit (6. Semester) und > Bachelor Thesis. Um meine Verzweiflung verständlich zu machen -> wir > sind im 3. Semester... > bringen uns hier leider nicht weiter und auch wenn der Programmier Teil > nichtmal benotet wird Das ist ein Kobayashi-Maru-Test.
DDR legt fest welche Pins Eingang, und welche Ausgang sind. Im Tutorial ist es gut erklärt. https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports
Hi Phil P., ist nicht böse gemeint, aber was wolltest du mit deinem letzten Post bezwecken? Du hast dich für all die Anschuldigungen gerechtfertigt, aber das ist den Schreibern wahrscheinlich egal. Dafür sind wieder mindestens 15 Minuten Zeit vergangen, in der du an deinem Projekt hättest weiterarbeiten können. Damit du hier im Forum sinnvolle Hilfe bekommst, solltest du dein Projekt in Teilprobleme zerlegen. Wenn du dann da ein Problem hast, dann versuche das Handbuch zu verstehen und sonst stelle eine konkrete Frage bzw. suche erst mal danach. Beispiel: Wie stelle ich einen Atmega Pin auf Ausgang? https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports
Das Problem mit deiner Frage ist, dass sie auf den ersten Blick 'faul' (mir fällt gerade kein anderes Wort ein) erscheint. Hier wollen öfter mal Leute, dass hier ihre Hausaufgaben gemacht werden oder 'Künstler', denen hier ihre 'Kunst' erstellt werden soll (wo am Ende die einzige Leistung dieser 'Künstler' ist, andere ihr Zeug machen zu lassen). Dazu dann noch der Titel, der kaum mehr aussagt als 'Brauche Hilfe'. Das sind Alarmsignale, die manchen in den Ablehnungsmodus schalten lassen. Ist halt vielleicht etwas blöd gelaufen. Phil P. schrieb: > Theor schrieb: >> Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B. >> Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe >> Information nochmal wiedergeben und Du sie hier liest > > Genau, das halbwegs rauslesen welches register und welchen Port ich > brauche ist eine Sache das habe ich zumindest zum Teil verstanden. Aber > das Prinzip wie genau ich diese einschalte (einschalten = einfach > versorgen und somit nutzbar machen ) nicht. Register "aktivieren", Port > auf Ein oder Ausgang "schalten" aber kann ich darin nochmal einzelne > Pins definieren? Register sind Speicherstellen. Die kannst du beschreiben oder lesen mit =, zum Beispiel DDRD=0b00110110 oder Pins=PIND. Für die Peripherie, wie PWM-Generator, ADC oder sowas geht das genauso. Im Datenblat steht, welches Bit oder welche Bits welche Bedeutung haben. Dann musst du sie nur noch entsprechend setzen. Was sind konkret noch deine Fragen?
Phil P. schrieb: > [...] > > Theor schrieb: >> Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B. >> Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe >> Information nochmal wiedergeben und Du sie hier liest > > Genau, das halbwegs rauslesen welches register und welchen Port ich > brauche ist eine Sache das habe ich zumindest zum Teil verstanden. Gut. Dann hast Du ja nur noch den anderen Teil vor Dir. > Aber > das Prinzip wie genau ich diese einschalte (einschalten = einfach > versorgen und somit nutzbar machen ) nicht. Zunächst mal: Wenn Dir jemand sagt, dass Du da nichts einschaltest und Du in der unmittelbaren Antwort darauf wieder von "einschalten" redest, dann deute ich das, bei allem menschlichen Respekt, entweder als Unfähigkeit oder als Unwillen. Das klingt hart, aber was für andere Gründe gibt es dafür? Das wäre mal zu klären. Es ist sinnlos Dir was zu erklären, wenn Du schon den ersten Schritt verweigerst oder aus anderen Gründen einfach nicht machst. Dir sollte klar sein, dass jedes Gebiet seine spezifische Ontologie hat und lernen zum Gutteil darin besteht diese zu erfassen und zu verstehen und die darin enthalten Zusammenhänge nachzuvollziehen. Das kann ich Dir nicht abnehmen. > Register "aktivieren", Port > auf Ein oder Ausgang "schalten" aber kann ich darin nochmal einzelne > Pins definieren? Das ist Dir auch von mir gesagt worden. Ich zitiere: "Die Bitpositionen korrespondieren mit je einem Bit des Ein-Ausgabeports." > Theor schrieb: >> Welches Fach studierst Du nun eigentlich. Es fällt mir auf, dass Du da >> darum herum redest und das Fach nicht einfach nennst. > > Das ist korrekt. Wenn hier nur gegen einen geschossen wird ist man > natürlich vorsichtig und hat keine große Lust noch mehr Einzelheiten > rauszuhauen da: Naja. Offen gesagt, gibst Du eine gute Zielscheibe ab. > Cornelius schrieb: >> Tja, jetzt hattest Du eine technische Frage und bekommst statt einer >> Antwort darauf eine Lebensberatung. > > Ich studiere Mechatronik und Robotik. > > Theor schrieb: >> Das ist nicht die "Taktzeit" sondern die "Taktfrequenz". > > Hast du natürlich Recht. Habe ich beiläufig einfach nur falsch > bezeichnet. Sorgfalt ist in diesen Fächern erstes und oberstes Gebot! > Theor schrieb: >> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. > > Gut zu wissen, danke! Ich meine ich hätte das in einem Beispiel in Atmel > Studio schon gesehen aber im Zweifelsfall liege ich falsch :D Ja. Da liegst Du definitiv falsch. > Den PWM Modus benötige ich doch weil ich ein PWM Signal ausgeben möchte? > Wieso genau ich den Prescaler durch 256 teilen soll weiß ich auch nicht > recht. Dadurch dass ich 8-Bit PWM habe habe ich ja eigentlich auch nur > 256 Werte. Da ich diese aber auch nichtmehr auslese oder als % anzeige > ist es eigentlich unwichtig? > > Das Programm ist ja auch noch nicht fertig vielleicht müssen ja noch > interrupts rein? Nun, meine Frage wegen den PWM-Settings war etwas deplatziert. Zugegeben. Der Punkt ist, dass Du, bildlich gesprochen, an einem Gerüst, erstmal so ein paar Einzelteile aufgehängt hast, die zwar tatsächlich irgendwie in das Endprodukt hineingehören. Aber das ist so, als wenn ich einen großen Roman schreiben will, in dem es um einen Fischer geht und dann als Anfang mal etwa sowas präsentiere: "Ich ... Du ... und ... bei ... also ... Fisch ... der ... Boot ... Hafen ... bald.". Die Worte werden wohl alle und in der Reihenfolge in dem Roman am Ende vorkommen, bilden aber für sich genommen nichtmal ein Teilsystem. Oder, falls Dir das Bild mehr sagt: Das ist, als wenn Du ein Auto entwickeln willst, damit anfängst an ein paar Strippen, hier mal einen Dichtungsring, dort mal eine Schraube und an einem anderen Platz 2 Meter Kupferkabel hin hängst, alles ungefähr dort, wo es am Ende wohl sein wird, und dann fragst, wie es weitergeht. So entwirft und baut man kein System. Vielmehr unterteilt man das Gesamtprojekt in Teilsysteme. Das hast Du ja irgendwie im ersten Posting auch ansatzweise getan. Drehzahlsteuerung, Bluetooth und ein Poti. Das allein ist aber wie Schrauben in die Luft hängen. Die Frage die sich nun stellt, ist, wie hängen diese Teile zusammen, was fehlt noch um komplette Teilsysteme zu bekommen bzw. aus welchen Teilstrukturen - auch in der SW - bestehen sie. Man kann nicht bei jedem Menschen diese Denkweise voraussetzen. Aber ein Mensch in dem Alter, in dem man studiert, sollte die Welt schon so gut kennen, dass ihm der Gedanke nicht völlig fremd ist. Selbst ein Hamburger besteht aus Teilen, wie dem Bun, dem Käse, der Soße, dem Patty, dem Salat etc. Käse wird auf eine bestimmte Weise erzeugt, hat Bestandteile und eine Struktur. Ebenso das Brot uswusf. Genau genommen, solltest Du im 3. Semester mit dieser Denkweise auch schon mehrfach konfrontiert worden sein. Und vorher schon in der Schule. Wo sollen wir jetzt daran mit Dir arbeiten? Das musst Du beantworten. > Theor schrieb: >> PORTD=0b1001; //Den Pin 9 als ausgang definieren ??? >> >> Nein. Das geschieht mit dem Datenrichtungsregister DDR<x>. > > Was gäbe es dann für einen Grund soetwas zu benutzen (Ist aus einem > Video auf Youtube). Außer, dass ich hier halt den Pin "falsch > angesprochen" hätte. > > Wie kann ich denn dann die von mir benötigten Pins exakt so definieren > wie ich sie brauche, wie konkret würde das aussehen ? Das ist, mit Verweis auf die entsprechende Seite im Datenblatt, schon beantwortet worden. Du musst es mal lesen. Niemand erwartet, dass Du das auf Anhieb verstehst. Aber formuliere spezifische Fragen die aus dem folgen was Du gelesen hast und wiederhole die globale Frage nicht einfach. > Theor schrieb: >> Das läuft auf die Verwendung des Analog-Digital-Wandlers hinaus. Siehe >> Seiten 305 ff.) Die Arduino-Umgebung hat das sehr abstrahiert. Wie das >> im Einzelnen geht, wird evtl. sehr neu für Dich sein, ist aber auch >> nicht sehr schwierig. > > Vielen Dank! Deine Kommentare haben mich schonmal weiter gebracht, genau > so etwas habe ich mir erhoft=) Na, ob Du nach dieser Antwort immer noch so dankbar bist? :-) Aber jedenfalls freut mich, dass Du es bisher warst. > [...]
Phil P. schrieb: > Leider hab ich nicht annähernd die Zeit die ich bräuchte um mich da > mühsam einzuarbeiten Studienfach bzw. Studiengang wechseln! Hier bist du jedenfalls falsch, wenn du glaubst dass wir dir deine Hausaufgaben machen...
Hallo, eigentlich ist das gar nicht so schwer, wenn man schon etwas Grundkenntnisse hat. Kann mir deine Lage aber vorstellen. Wie man die Port Bits als Eingänge und Ausgänge konfiguriert das steht wunderbar erklärt hier im Tutorial. https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Das Thema Timer ist schon etwas aufwendiger aber auch machbar. Dazu kann man dieses Arduino Tutorial nutzen. Weil das direkt mit Register erklärt wird. Nur das setup und loop musste umdenken in die sonst übliche main und while Schreibweise. https://www.instructables.com/id/Arduino-Timer-Interrupts/ oder https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR Also Eingänge/Ausgänge deklarieren/initialisieren. Timer konfigurieren. Hier würde ich gleich einen Timer-Hardwareausgang verwenden für die PWM. Für Timer 0 also Pin PD5. Dann haste freie Auswahl für TOP (OCR0A oder Fix Wert). Kannst auch die Timer ISR verwenden für einen x beliebigen Pin. Welche Frequenz soll die PWM überhaupt haben? Welcher Modi soll verwendet werden? Mit Phase Correct Mode kommste bis ca. 16kHz, wenn du den Duty Cycle Spielraum gut ausnutzen möchtest. Danach richtet sich der Prescaler und der TOP Wert die es festzulegen gilt. Alles zwischen 0 und TOP wäre dann dein Duty Cycle Spielraum. Nimm ein Oszi und bastel bis das taktet und auf Duty Cycle Änderungen reagiert wie gewünscht. Beachte der Duty Cycle Wert darf niemals größer werden als TOP. BT Modul an die Hardware USART anklemmen, USART laut Bsp. im Manual konfigurieren und einfach nur ein einziges Byte senden und empfangen. Konfiguration des BT Moduls beachten und ob es mit 5V kann oder doch nur 3,3V. Aber das mit BT würde ich zum Schluss machen. Erstmal muss der eine µC auf das Poti reagieren und das Duty Cycle ändern. Für die ADC Konfig suchste nach "avr ADC free running". Gleichst die Registernamen/Bits mit den des 328P Manuals ab und es sollte laufen. Hier stellste gleich den 8 Bit Mode ein, musste nicht extra mappen/anpassen.
Hallo, konfiguriere vielleicht erstmal einen x beliebigen Pin als Ausgang und schalte diesen ständig ein und aus mit delay dazwischen. Und schaue am Oszi und/oder LED ob das geht und wie es geht. Dann kommste schon mit der Port-Register Einstellung rein ins Thema.
Theor schrieb: > Das klingt hart, aber was für andere > Gründe gibt es dafür? Der Grund dafür ist, dass ich viel mit Erstsemestern und Schülern vom Berufskolleg arbeite und mich versuche so auszudrücken, dass es für den Laien verständlich - wenn auch faktisch nicht immer ganz richtig- ist. Theor schrieb: > Naja. Offen gesagt, gibst Du eine gute Zielscheibe ab. In was für einer Welt werden wir mal leben wenn jeder, der etwas nicht weiß, sich nicht traut zu fragen? Solchen Leuten sollte man helfen und sie nicht runterbuttern. Theor schrieb: > Der Punkt ist, dass Du, bildlich gesprochen, an einem Gerüst, erstmal so > ein paar Einzelteile aufgehängt hast, die zwar tatsächlich irgendwie in > das Endprodukt hineingehören. Ist mir ebenfalls bewusst aber Informatik ist einfach ein Teil bei dem man sich schwer tut. Selbst wenn man ungefähr weiß was man tun müsste (was bei mir ja nur zum Teil der Fall ist) heißt das nicht, dass man die Befehle kennt oder diese auch versteht. Theor schrieb: > Na, ob Du nach dieser Antwort immer noch so dankbar bist? :-) > Aber jedenfalls freut mich, dass Du es bisher warst. Ich bin für alles Dankbar was konstruktiv und nicht rein als Beleidigung oder um sich selbst zu profilieren gedacht ist. Theor schrieb: > ber formuliere > spezifische Fragen die aus dem folgen was Du gelesen hast und wiederhole > die globale Frage nicht einfach. OK. DDRD =0xFF; //Im Register Port D =Verwendbar PORTD=0b100000000; //Pin 9 = Ausgang DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können Habe ich das nun richtig verstanden, dass PIN9 (PD5) als Ausgang(PWM) und Pin19 (PE2) als Eingang(POTI) verwendbar ist? Genau so benötige ich es.
Veit D. schrieb: > konfiguriere vielleicht erstmal einen x beliebigen Pin als Ausgang und > schalte diesen ständig ein und aus mit delay dazwischen. Und schaue am > Oszi und/oder LED ob das geht und wie es geht. Dann kommste schon mit > der Port-Register Einstellung rein ins Thema. Hi, Simulation bzw. Debuggen machts anschaulich.
Die übliche Vorgehensweise bei einem Projekt, das auf Anhieb unübersichtlich ist, ist, es auf kleinere Probleme herunter zu brechen, die schneller lösbar sind. Am Ende wird dann alles miteinander verheiratet. Als Erstes mach dir klar, wie die Anforderungen genau sind. "Einen Motor per PWM steuern" ist Weichgummi. Welche Auflösung wird gefordert? Wie hoch soll die PWM-Frequenz sein? Diese Dinge sind entscheidend für den Aufwand. Dann überlege dir, wie deine Platine mit dir zwecks Debugging reden soll. Einfach nur "geht nicht" bringt dich nicht weiter. Mit der Stange im Nebel fuchteln dauert ewig und frustriert. Serielle Ausgabe auf ein Terminal (PC) oder 8 LEDs an einem Port? Die LEDs an einem Port wären eine gute Fingerübung für Port-Richtung setzen, Bits togglen und Warteschleifen. Serielle Ausgabe ist wesentlich bequemer und als nächstes dann auch schnell machbar. Als nächstes liest du das Poti ein über den ADC und gibst den Wert über deine Debug Schnittstelle aus. Wenn es bis hierher funktioniert, reden wir weiter. Blauzahn und PWM sind etwas anspruchsvoller für einen Anfänger. Aber wenn du hier angekommen bist, bist du kein Anfänger mehr und die Sonne geht langsam auf.
Karl B. schrieb: > Hi, > Simulation bzw. Debuggen machts anschaulich. Deswegen sollte der TO ja auch das Atmel Studio nehmen. Ganz easy. ciao gustav
Phil P. schrieb: > DDRD =0xFF; //Im Register Port D =Verwendbar > PORTD=0b100000000; //Pin 9 = Ausgang > DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können > > Habe ich das nun richtig verstanden, dass PIN9 (PD5) als Ausgang(PWM) > und Pin19 (PE2) als Eingang(POTI) verwendbar ist? Genau so benötige ich > es. Nein. DDRD =0xFF; Setzt alle Pins des Port D als Ausgang. PORTD=0b100000000; //Pin 9 = Ausgang Das dürfte meines Wissens nicht funktionieren, weil PORTD nur acht Bit breit ist. Wenn doch, setzt es Pin 8 des Port D auf high. DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können Das setzt alle Pins des Port E als Ausgang.
Phil P. schrieb:
OK. Ich bin dann raus.
Tut mir leid, aber ich halte es für zwecklos Dir irgendwas zu erklären.
Dussel schrieb: > DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können > Das setzt alle Pins des Port E als Ausgang. DDRE=0x00; // so muss das natürlich heißen, sorry. Dussel schrieb: > Das dürfte meines Wissens nicht funktionieren, weil PORTD nur acht Bit > breit ist. Wenn doch, setzt es Pin 8 des Port D auf high. Ergibt Sinn aber wie bekomme ich dann den Pin 9 (PE2) Reicht dann einfach DDRD=0xFF; DDRE=0x00; ?
Ich habe nochmal nachgesehen. Das ist im C-Tutorial nicht so gut erklärt, wie im Assemblertutorial. Zuerst mal muss unterschieden werden zwischen der IC-Pinnummerierung und der Portnummerierung. Die Pins des IC sind von 1 bis irgendwas aufstegend nummeriert. Diese Nummern sind für die Programmierung vollkommen egal. Auf irgendwelchen Pins liegen die Portpins der Ports A, B, C,... Die sind durchnummeriert von 0 bis 7. Um diese Pins geht es. Mit DDRx wird die Richtung festgelegt. Wenn das entsprechende Bit 0 ist, ist der Pin ein Eingang, sonst ein Ausgang. Mit PORTx können die Ausgänge auf 1 oder auf 0 geschaltet werden. Mit PINx kann der aktuelle Eingangswert am Pin ausgelesen werden. Aber wenn solche Dinge schon so ausführliche Erklärung benötigen, sehe ich ehrlich gesagt auch Probleme kommen.
Dussel schrieb: > Die > sind durchnummeriert von 0 bis 7. Um diese Pins geht es. Ergibt ebenfalls Sinn. Sowas sieht jemand ohne Erfahrung vielleicht nicht auf den ersten Blick Dussel schrieb: > Mit PINx kann der aktuelle Eingangswert am Pin ausgelesen werden. Danke! Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so setzen wie ich es benötige? oder kann man in diesem Register nur den gesamten Port auf Eingang oder Ausgang setzen ? Dussel schrieb: > Aber wenn solche Dinge schon so ausführliche Erklärung benötigen, sehe > ich ehrlich gesagt auch Probleme kommen. Man sollte halt das Prinzip mal verstanden haben, dann kann man sich stückchenweise vorarbeiten aber wie gesagt... Kaum Vorkenntnisse. Ich bezweifel auch stark dass das bisschen Schleifen und If Else Programmieren was wir gemacht haben groß relevant ist für die korrekte pinbenutzung eines Microkontrollers. Ich bin ja nicht hier weil ich schon alles weiß;)
Phil P. schrieb: > Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so > setzen wie ich es benötige? oder kann man in diesem Register nur den > gesamten Port auf Eingang oder Ausgang setzen ? Pins können Ein- oder Ausgänge sein. Erstmal muss mit DDRx gewählt werden, welcher Pin was sein soll. DDRB=0b10000111 setzt die ersten drei und den letzten Pin von Port B auf Ausgang. Für Eingänge wird PINx benutzt, für Ausgänge PORTx (es geht auch mehr oder weniger sinnvoll umgekehrt, aber so ist es erstmal der Normalfall). Wenn an einem Ausgangspin 0 V ausgegeben werden sollen, setzt man das entsprechende Bit in PORTx auf 0, wenn Versorgungsspannung (z.B. 5 V) ausgegeben werden soll, setzt man es auf 1. Wenn man wissen will, ob an einem Eingangspin 0 V oder 5 V anliegen, liest man PINx ein. Bei 0 V ist das Bit 0, bei 5 V ist es 1. Die Bezeichnungen muss man übrigens auseinanderhalten. PIN ist das Eingangsregister, ein Pin ist ein (metallischer) Anschluss eines Bauteils. PORT ist das Ausgaberegister, ein Port ist eine Sammlung mehrerer bestimmter Pins des Chips.
Welche Rolle spielt hier eigentlich das Bluetooth Modul? Ich nehme an, dass zwischen Potentiometer und Motore eine drahtlose Übertragung stattfinden soll. Also zwei Bluetooth Module, richtig? Diese Bluetooth Module haben serielle UART Schnittstellen. Zwischen Potentiometer und Bluetooth Sender brauchst du einen Mikrocontroller, der das analoge Signal des Potentiometer digitalisiert und seriellen sendet. Auf der Empfänger Seite brauchst du einen weiteren Mikrocontroller, der die seriellen Daten empfängt und damit das OCR register eines PWM Timers füttert. Dann brauchst du noch einen Transistor, der den Ausgang des Mikrocontrollers verstärkt, um den Motor damit anzusteuern. Nicht zu vergessen sind diverse Kleinigkeiten wie Stromversorgung, Spannungsregle und Freilaufdiode. Was die Datenübertragung angeht solltest Du Dir überlegen, ob einfache 8bit genügen oder mehr nötig ist. Wenn der Sollwert in mehr als nur einem Byte übertragen wird, musst Du Dir noch ein Übertragungsprotokoll ausdenken. Denn irgendwie muss der Empfänger ja erkennen, wo eine Übertragung beginnt und wo sie endet. Eine Absicherung z.B. mit Prüfsumme wäre auch sinnvoll, denn diese Bluetooth Module übertragen Daten manchmal fehlerhaft. Eine Übertragung in Text-Form (ASCII anstatt Binär) könnte sehr hilfreich sein, um im Fehlerfall mit einem Terminalprogramm zu debuggen. Was deinen Pin PD5 angeht: Willst du dort Daten ausgeben, um sie per Bluetooth zu senden? Kann man machen, aber dann wird es unnötig kompliziert, denn der Chip hat einen richtigen UART mit dem serielle Ausgaben machen kann. Die Timer des Mikrocontrollers haben viele Funktionen, deswegen lernt man den Umgang damit nicht in 15 Minuten. Du hast hier das Glück, dass du nicht alle Funktionen des Mikrocontrollers zu lernen brauchst. Für Dich relevant sind nur UART, ein ADC Kanal und ein Timer im PWM Modus. Das ist durchaus überschaubar. Wenn du unbedingt Zeit sparen willst, kannst du mal klären, ob du das Arduino Framework verwenden darfst. Denn darin sind die benötigten Sachen in einfache Funktionen gekapselt und auch einfach dokumentiert. Ich fürchte aber, dass genau dies nicht zugelassen wird, weil du dich mit den Registern beschäftigen sollst. Falls du einen anderen Mikrocontroller verwenden darfst, hilft Dir eventuell dieses Buch. Ich erkläre dort maximal komprimiert genau die Sachen, die du zum Programmieren brauchst. Schneller/kompakter geht es nur mit Frameworks wie Arduino: http://stefanfrings.de/mikrocontroller_buch2/index.html Ansonsten kann ich auch mit einem umfangreicheren AVR Lehrbuch dienen, wo es auch um die benötigte Hardware geht: http://stefanfrings.de/mikrocontroller_buch/index.html Ich kann Dir die Bauteile-Kiste kurzfristig zuschicken, dann hast du noch vor den Feiertagen alles da, was Du zum Üben mit diesem Buch brauchst. Ein ATmega328 ist in Form eines Moduls (mit Quarz und Spannungsregler) auch dabei. Auf jeden Fall solltest Du Dich damit abfinden, dass dieses Projekt Zeit braucht. Deine Aussage "ich habe keine Zeit" kann sinnvollerweise nur zu einer Absage führen. Denn von nichts kommt nichts und kopieren ist keine zulässige Option. Wenn Du jetzt zügig meine Bauteile-Kiste bestellst und Dich intensiv rein kniest (und zwar jeden Abend), dann kriegst du das noch dieses Jahr ans Laufen, da bin ich ganz sicher.
Vergiss erst mal, dass PORTE2 der Pin neun ist. Das ist nur für den Schaltpan, bzw die Platine wichtig. Für die Programmierung hat "Pin9" keinerlei Bedeutung. Meist gibt es auch mehrere mögliche Gehäuseformen, wobei dann E2 dann an ganz unterschiedlichen Pins legen kann. Als nächstes sollte dir so langsam klar werden, dass zu einem Pin mehrere Bits in mehreren Registern gehören. Beschäftige mich nicht mit Atmega Controllern, aber auch deren Datenblatt gibt es sicher eine Grafik, die das veranschaulicht. Vermutlich eine der ersten, im Kapitel über digitale I/Os. Das hat mit Elektronik bzw Digitaltechnik zu tun und nichts mit Informatik. Ein Register in diesen Bildern ist immer für die Richtung zuständig, in welcher man den Pin nutzen möchte. Hier heißt das deshalb auch DDR, für Data-Direction-Register. Ein (oder auch zwei) weiteres ist für den Zustand des Pins zuständig, d.h. ob dieser 0 oder 1 ist. Bei einem 8Bit Controller sind normalerweise 8 Pins in einem PORT zusammen gefasst und werdne zusammen über ein Register gesteuert. Will man nur einen Pin benutzen, dann sollte man auch nur die Bits für diesen verändern. Das kann man über Operatoren verwirklichen, die eben bitweise arbeiten, oder man hat vordefinierte Bitfelder, die den zugriff auf einzelne Bits erlauben. Soll also PORTE2 als Eingang genutzt werden setzt man dem nach nur Bit 2 von DDR2 auf den entsprechenden Wert und lässt die anderen erst mal so, wie die Entwickler des Controllers wohl gedacht haben, dass es für noch unbekannte Umgebung am sinnvollsten ist. Um den Pin als Eingang zu benutzen muss man wohl DDRE2 auf 0 setzen. Das kann man z.B mit einer bitweisen UND Operation erreichen. DDRE &= 0b11111011; // PORTE2 als Input Für den Anfang benutzt man dafür am besten binäre Schreibweise. Dem Compiler ist es eigentlich egal. Man könnte auch = 4; oder = 0x04 schreiben. Im Controller ist später alles binär.
Hallo, mal eine grundlegende Bitte an Phil. Was hast du denn für eine Gehäuseform vom 328P. PDIP, MLF oder TQFP? Weil die Gehäusepinnummern sind arg verschieden an den Portregister. Hast du ein Arduinoboard als Grundlage oder doch nicht? Welches? Außerdem hat ein 328P kein Port-Register E. Er hat nur B, C und D. Du musst dann schon das Wissen aus den Tutorials auf deinen µC adaptieren. Ohne Manual geht da nix. http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf Im AVR GCC Tutorial sind die Ports für mich wunderbar erklärt. Man schaut sich die C Bsp. Codes an und weiß Bescheid was man machen muss. PDIP Gehäusepin 9 wäre PB.6
1 | DDRB |= (1<<DDB6); // PB6 Ausgang, Bit setzen |
2 | PORTB |= (1<<PB6); // PB6 einschalten, Bit setzen |
3 | PORTB &= ~(1<<PB6); // PB6 ausschalten, Bit löschen |
Eigentlich ganz simpel oder :-) Edit: Binärschreibweise würde ich mir nicht angewöhnen. Die Portbits sind in der Toolchain hinterlegt, sodass man sie direkt mit Namen verwenden kann. Erspart viele Fehler.
:
Bearbeitet durch User
Phil P. schrieb: > Ich > bezweifel auch stark dass das bisschen Schleifen und If Else > Programmieren was wir gemacht haben groß relevant ist für die korrekte > pinbenutzung eines Microkontrollers. Einen Mikrocontroller sollte man sich von der Hardwareseite nähern und die Software zunächst als nur als Mittel begreifen diese Hardware zu konfigurieren. Für die Software (das bisschen Schleifen etc.) gibt es meist verschiedene Möglichkeiten etwas mehr oder weniger elegant zu lösen. Für die Hardware nur die Möglichkeit, die im Datenblatt des entsprechenden Controllers beschrieben ist! Veit D. schrieb: > Edit: Binärschreibweise würde ich mir nicht angewöhnen. Die Portbits > sind in der Toolchain hinterlegt, sodass man sie direkt mit Namen > verwenden kann. Erspart viele Fehler. Ich finde DDREbits.DDRE2 = OUTPUT_PIN; auch viel schöner, aber für das Verständnis am Anfang die binäre Notation und bitweisen Operatoren gar nicht so verkehrt. Zumal das ja im Endeffekt genau das ist, was der Compiler aus den anderen Schreibweisen wieder macht.
Volker S. schrieb: > Ich finde > > DDREbits.DDRE2 = OUTPUT_PIN; > > auch viel schöner, aber für das Verständnis am Anfang die binäre > Notation und bitweisen Operatoren gar nicht so verkehrt. > Zumal das ja im Endeffekt genau das ist, was der Compiler aus den > anderen Schreibweisen wieder macht. Das mag sein und da ist auch viel Geschmacksache und eigene Vorlieben dabei, nur gerade das nützt dem TO beim AVR nichts, da diese Schreibweise nicht hinterlegt ist. Und mit Makro schreiben bzw. nutzen müssen hier nicht anfangen. Ich selbst habe mich an die andere gewöhnt, weil die gleichzeitig Datenblatt kompatibel ist. Ich sehe sofort welcher Port und welches Pin-Bit gemeint ist. Bei dir wird 'OUTPUT_PIN' irgendwo mit '1' hinterlegt sein. Beim Arduino ist HIGH mit 1 und LOW mit 0 hinterlegt. Wie gesagt, hilft dem TO hier nicht weiter. Das Arduino Framework darf er leider nicht verwenden, sonst wäre er schon längst fertig. :-)
Veit D. schrieb: > Wie gesagt, hilft dem TO hier nicht weiter. Genau darum habe ich es ja ursprünglich nicht erwähnt, dass ich es so machen würde und versucht die meiner Meinung nach für einen Anfänger am einfachsten nachvollziehbare Schreibweise zu verwenden. In &= ~(1<<PINNUMMER) sind mir dafür doch einige Operatoren zu viel...
Leute, hört bitte auf über diese Details zu diskutieren. Ihr hängt den TO damit nur ab, der hat gerade ganz andere Sorgen. Er wird sich zum Setzen und Löschen von Bits an irgendeinem Tutorial orientieren. Wie das da gemacht wird, ist am Ende Sch*** egal, Hauptsache es funktioniert. Schön machen kann er später immer noch. Wir sollten jetzt wirklich nicht ausdiskutieren, wer welche Variante schöner findet. Auf einen gemeinsamen Konsens kommen wir hier (wie immer) ohnehin nicht. Also lasst es besser gleich bleiben oder macht einen eigenen Thread dafür auch (wir schon gefühlt 100 davon).
Stefanus F. schrieb: > Wir sollten jetzt wirklich nicht > ausdiskutieren, wer welche Variante schöner findet. Auf einen > gemeinsamen Konsens kommen wir hier (wie immer) ohnehin nicht. Also > lasst es besser gleich bleiben oder macht einen eigenen Thread dafür > auch (wir schon gefühlt 100 davon). Wer hat Dich denn als Aushilfsmod angefordert, bzw. wie kommst Du dazu anderen Teilnehmern vorschreiben zu wollen, was sie posten? Kaspere doch bitte auf Deiner eigenen Webseite in diesem Ton herum, da kann man Dich leicht vermeiden. Für den TE ist doch bereits bezeichnend, dass er in einem Forum mit Namen: mikrocontroller.net in der Domain mikrocontroller.net es noch nicht einmal schafft, Mikrocontroller richtig zu schreiben. > Benötige Hilfe beim programmieren eines Microkontrollers! Und nein, es ist nicht weiter tragisch, wenn sich jemand mal wechstabenverbuchselt, aber Sorgfalt ist das A und O bei so technischem Gerät wie einem Mikrocontroller, da ist eben wenig bis nichts fehlertolerant. Und so schlampig wie der Anfang wird auch das Ende sein.
MWS schrieb: > Wer hat Dich denn als Aushilfsmod angefordert Im Gegensatz zu Dir bemühe ich mich darum, dem TO ernsthaft zu helfen. Du bist hier nur ein unerwünschter Störenfried, der nichts zum Thema beigetragen hat. Würdest du deine Beiträge deiner Mutter vorlesen? Wäre sie danach stolz auf Dich?
Hi, in ASM sieht das Einrichten von PortB und PortD zum Beispiel so aus. Da die Portregister nicht direkt mit Konstanten beschrieben werden können, wählt man den Umweg über ein "Arbeitsrgister" früher tauchte hier auch einmal der veraltete Begriff "Akku" auf. Die Ausnahme bildet das Setzen von Pullup-Widerständen. Normalerweise sind Pullupwiderstände schon gesetzt, wenn Port zum Ausgang gemacht wird. Manchmal braucht man für einen Eingang auch einen Pullupwiderstand. Hier bekommt zur Sicherheit RXD des UART noch einen Pullupwiderstand verpasst. ciao gustav
Stefanus F. schrieb: > Würdest du deine Beiträge deiner Mutter vorlesen? Warum sollte ich? Deine Beiträge dagegen lesen sich wie von Mutti.
Phil P. schrieb: > Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so > setzen wie ich es benötige? oder kann man in diesem Register nur den > gesamten Port auf Eingang oder Ausgang setzen ? Kann diese Frage jemand mit ja oder nein beantworten? Ausschweifendes Fachgedöns bringt mich hier nicht weiter.
Phil P. schrieb: > Kann diese Frage jemand mit ja oder nein beantworten? Die kannst Du Dir selbst beantworten, indem Du irgendeine Anleitung deiner Wahl liest - vorzugsweise das Datenblatt des Herstellers. > Ausschweifendes Fachgedöns bringt mich hier nicht weiter. Alles vorkauen bringt Dich auch nicht weiter. Wenn du schon solche einfachste Fragen nicht selbst klären kannst, dann wird Thread noch sehr sehr lange dauern. Aber du hast ja keine Zeit. Also knie dich selber rein, anders kann es kein Erfolg werden.
Ich habe diese einfach(st)e Grundlage so einfach wie möglich erklärt. Da das offensichtlich schon zu viel ist, lohnen sich weitere Antworten nicht. Viel Spaß noch.
Stefanus F. schrieb: > Die kannst Du Dir selbst beantworten, indem Du irgendeine Anleitung > deiner Wahl liest - vorzugsweise das Datenblatt des Herstellers. Ich bin im Moment auf den Tutorial Seiten zu Registern und I/O unterwegs. Die Antwort ist für mich daher nicht ersichtlich. Benötige ich PORTx nur wenn ich den jeweiligen PIN anders benötige als übers DDRx initialisiert ist? Bleibt immernoch zu klären ob man mit DDRx nicht schon alles genau so einstellen kann wie man möchte.
DDRx bestimmt für alle I/O Pins, ob sie als Eingang oder Ausgang dieses sollen. PORTx bestimmt für alle Ausgänge, ob sie HIGH oder LOW sein sollen. Spezialfunktionen (wie UART, PWM, etc) übergehen diese Bits. PINx ermöglicht es Dir, den Status von Eingängen zu lesen. In deiner Anwendung brauchst du vermutlich kein einziges dieser Register zu ändern, denn du nutzt ausschließlich Spezialfunktionen (ADC, UART, Timer). Wir werden Dir jetzt ganz sicher nicht jedes Register einzeln erklären, denn diese sind im Datenblatt und in diversen Tutorials bereits beschrieben. Du musst sie nur lesen und ausprobieren. > Ich bin im Moment auf den Tutorial Seiten zu Registern und I/O > unterwegs. Die Antwort ist für mich daher nicht ersichtlich. Sorry, aber das klingt so seltsam wie: Ich habe gerade eine Flasche Wasser getrunken, aber ich weiß nicht, was man gegen Durst tun muss.
Stefanus F. schrieb: > PORTx bestimmt für alle Ausgänge, ob sie HIGH oder LOW sein sollen. > Spezialfunktionen (wie UART, PWM, etc) übergehen diese Bits. Was genau macht es für einen Unterschied ob ein Ausgang als High oder Low gesetzt ist ? Wenn er übers DDRx als Ausgang definiert ist, überträgt er dann nicht das signal einfach? Oder sind die als Ausgang definiert, fungieren aber tatsächlich erst als einer wenn der PORTx auf High gesetzt ist?
Phil P. schrieb: > Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so > setzen wie ich es benötige? oder kann man in diesem Register nur den > gesamten Port auf Eingang oder Ausgang setzen ? Man kann mit diesem Register jeden einzelnen Pin des Ports auf Eingang oder Ausgang setzen. Deshalb heißt das Data Direction Register (DDR). Bit 0 ist Pin 0 usw. Andere haben das auch DDRx geschrieben um anzuzeigen, dass "x" variabel ist. Nämlich "A" für Port A usw. In PORTx setzt jedes Bit den Zustand ("high" oder "low") eines Pins. Wenn Du Dir mal ein paar Minuten Ruhe gönnst und in das Datenblatt schaust, wirst Du das genau so dort finden. Du kommst an dem Datenblatt nicht vorbei. Beim Programmieren in C schreibt man das dann gerne so, weil es leicht lesbar ist und PBx, PORTx, DDRx usw. bereits vordefiniert sind: Veit D. schrieb: > DDRB |= (1<<DDB6); // PB6 Ausgang, Bit setzen > PORTB |= (1<<PB6); // PB6 einschalten, Bit setzen > PORTB &= ~(1<<PB6); // PB6 ausschalten, Bit löschen Phil P. schrieb: > möchte nur klarstellen in welche > Situation ich mich befinde, Ja, wir haben das verstanden. Du bist jetzt an der Uni. OK. Da ist es zwar nicht völlig unmöglich aber würde doch ziemlich schwierig, aus dieser Situation wieder heraus zu kommen, ohne etwas zu lernen. Also fang doch einfach damit an und sträube Dich nicht so. Du musst das Datenblatt lesen. Ich nicht. Ich kenne es schon.
> Wenn er übers DDRx als Ausgang definiert ist, > überträgt er dann nicht das signal einfach? Welches Signal könnte das denn sein, wenn nicht PORTx?
Phil P. schrieb: > Was genau macht es für einen Unterschied ob ein Ausgang als High oder > Low gesetzt ist ? High = Vcc, Low = 0V Ungefähr... die genauen Potentiale und elektrischen Eigenschaften der Pins stehen im... na? Genau. Im Datenblatt.
Hast Du mal ins Datenblatt geschaut? Auszug: "14.2 Ports as General Digital I/O The ports are bi-directional I/O ports with optional internal pull-ups. ... 14.2.1 Configuring the Pin Each port pin consists of three register bits: DDxn, PORTxn, and PINxn. ... The DDxn bit in the DDRx Register selects the direction of this pin. ... If PORTxn is written logic one when the pin is configured as an output pin, the port pin is driven high (one). If PORTxn is written logic zero when the pin is configured as an output pin, the port pin is driven low (zero)." Das hast Du alles gelesen, bevor Du schon wieder hier gefragt hast?
np r. schrieb: > If PORTxn is written logic one when the pin is configured as an output > pin, the port pin is driven high (one). If > PORTxn is written logic zero when the pin is configured as an output > pin, the port pin is driven low (zero)." Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass spannung anliegt)?
Phil P. schrieb: > Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang > definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des > ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass > spannung anliegt)? Mache dich bitte kundig, wie eine Push-Pull Stufe arbeitet!
Phil P. schrieb: > Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang > definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des > ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass > spannung anliegt)? Dann lies halt das Tutorial - und laber hier nicht rum :-) https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen Weil Du vermutlich noch zu bequem bist, da durchzublättern (haben wir heute eigentlich Freitag?) https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Zusammenfassung_der_Portregister
Hallo, Phil P. schrieb: > Kann diese Frage jemand mit ja oder nein beantworten? Ausschweifendes > Fachgedöns bringt mich hier nicht weiter. Im DDRX-Register setzt du die Datenrichtung der Portpins des entsprechenden Ports. Du gibst also vor ob der Portpin als Ein- oder Ausgang arbeiten soll. In diesem Register kannst nicht die Portpins selber setzen. Das DDRX-Register wird in der Regel einmal am Beginn des Programms konfiguriert und dann so belassen. Im PORTX Register kannst du dagegen Portpins auf 0 oder 1 setzen. Dabei bedeutet eine 0 das der Portpin auf Ground gelegt wird, eine 1 auf VCC (Betriebsspannung, in der Regel 5 oder 3,3V). Bei Portpins, die als Eingang konfiguriert sind, bedeutet eine 1 dagegen das für den entsprechenden Portpin ein Pull-Up-Widerstand eingeschaltet wird. rhf
Bei all der Diskussion wundert es mich, dass beispielsweise noch niemand auf das Thema PWM eingegangen ist. Ich meine, der TO aktiviert in seinem Beispiel den Fast PWM Modus und setzt den Prescaler auf 256, weiß aber auf Nachfrage nicht so recht wie und warum er es macht. Da läuten bei mir die Alarmglocken. Etwas, von dem man nicht verstanden hat, wie und warum man es macht, lässt man besser bleiben bis man es weiß. Wenn man etwas programmiert, sollte man stets in der Lage sein, jeden Schritt und den Zusammenhang auf Nachfrage erklären zu können, nicht nur einem Außenstehenden sondern auch sich selbst. Kann ich das nicht, muss ich mir das Wissen dazu erst einmal erarbeiten, Schritt für Schritt, und danach dort weitermachen. Hier ist der TO gefragt. Ansonsten ist alles, was man so erstellt, Pfusch und man macht nicht nur den Anderen sondern sich selbst etwas vor. "Es funktioniert, ich weiß zwar nicht wie und warum, aber es geht" ist in bezug auf Technik ein ganz gefährlicher Ansatz, denn sobald man nur eine Kleinigkeit ändert kann einem alles um die Ohren fliegen. Im einfachsten Fall passiert nicht viel, im schlimmsten Fall geht jemand dabei drauf. Außerdem: Gelernt hat man dabei nichts. Konkret hätte ich jetzt erwartet, dass man ihm zunächst mal rät, sich mit dem Thema PWM näher auseinanderzusetzen bevor man mit Datenblättern daherkommt. Also erstmal das "know-why" abklären bevor man zum "know-how" übergeht. Hat man das Konzept PWM verstanden, kann man leichter ableiten was man mit dem Prescaler macht (-> teilt die Taktfrequenz des Mikrocontrollers durch den Faktor x und nimmt dies als PWM-Frequenz), was es mit den 8-bit bzw. 256 Werten auf sich hat (-> legt den Tastgrad fest), usw. Um das dann umzusetzen, wird er um ein paar Grundlagen in Programmiertechnik nicht herumkommen. Ansonsten läuft es auf Gefrickel heraus, wie im vorigen Absatz beschrieben. Am sinnvollsten hier wäre es wirklich, wie schon vorgeschlagen, die Tutorials durchzugehen. Am besten eines von den tausenden Blink-LED-Beispielen abarbeiten, denn hier versteht man ganz eindrücklich wie das mit den ganzen DDRx, PINx und PORTx, also Pins ein-/ausschalten und die Datenrichtung festlegen, programmiertechnisch funktioniert. Danach mal eine LED mit PWM dimmen, auch dazu gibt es Beispiele. Und nicht nur Copy&Paste, sondern nach der Art "learning by doing" damit herumspielen und schauen, ob das, was man erwartet dann am Ende auch herauskommt. Ist das PWM-Problem dann gelöst und verstanden, macht man mit dem nächsten weiter...
Ich hatte angenommen, dass er den Sinn von PWM verstanden hat, da er dazu nichts gefragt hat. Die Grundlagen zu PWM sind notfalls Bestandteil der Tutorials und auch im Datenblatt des Mikrocontrollers ist beschrieben. Also wird er es bald erfahren. Vorausgesetzt, er arbeitet diese Unterlagen auch tatsächlich durch, anstatt seine Zeit mit Diskutieren zu verplempern. Frage an den TO: Hast du Bauteile, um den Mikrocontroller auszuprobieren? Hast du die Bluetooth Module vorliegen? Wenn nicht, warum sitzt du dann noch vor dem Computer und bist nicht längst unterwegs zu Conrad (oder einem anderen Elektronik Laden)? Noch kannst du es schaffen, gib Gas!
Das Prinzip von PWM ist mir durchaus klar. Aber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt" oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil - überraschung - ich genau das tue und ich würde nicht penetrant 10 mal die gleiche Frage stellen, wenn das was ich dort lese nicht noch Unklarheiten hätte.
Phil P. schrieb: > Was genau macht es für einen Unterschied ob ein Ausgang als High oder > Low gesetzt ist ? Der Unterschied ist, dass an dem Pin dann 0V oder Vcc liegen. Der Controller kann nicht erraten ob du z.B. eine LED einschalten oder ausschalten willst. >Wenn er übers DDRx als Ausgang definiert ist, > überträgt er dann nicht das signal einfach? Welches Signal? >Oder sind die als Ausgang > definiert, fungieren aber tatsächlich erst als einer wenn der PORTx auf > High gesetzt ist? Wenn du PORTx nicht setzt, steht in dem Register trotzdem was drin. Der Resetwert wird vermutlich im Datenblatt stehen. Und vermutlich 0V sein.
Nach einem Reset sind die Registerinhalte unbestimmt . "Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang definierter Pin (über DDRx) nur funktioniert.. " Er funktioniert enthält aber nur einen Zufallswert (0 oder 1). Das ist nicht Zielführend. Also: du mußt dem µC schon sagen was du willst. Soll der Pin als ein oder Ausgang verwendet werden wird durch die Werte im DDRx bestimmt. Wenn du Daten ausgeben willst musst du die natürlich auch schreiben (PORTx). Ansonsten enthält der noch den vorherigen Wert bzw. ach einem Reset nur einen Zufallswert (0 oder1). Stell dir das DDRx Register als Ampel an einer Verengung vor. Der physikalische Pin kann natürlich nicht gleichzeitig auf 1 und 0 stehen. Du musst die Fahrrichtung bestimmen. Ohne Autos kein Verkehr egal was die Ampel sagt.
Phil P. schrieb: > ber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt" > oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil - > überraschung - ich genau das tue und ich würde nicht penetrant 10 mal > die gleiche Frage stellen, wenn das was ich dort lese nicht noch > Unklarheiten hätte. Zusammenfassung der Portregister Für jeden Hardwareport gibt es im Mikroprozessor insgesamt 3 Register: Das Datenrichtungsregister DDRx. Es wird verwendet um die Richtung jedes einzelnen Mikroprozessor-Pins festzulegen. Eine 1 an der entsprechenden Bit Position steht für Ausgang, eine 0 steht für Eingang. Das Einleseregister PINx. Es wird verwendet um von einem Mikroprozessor-Pin den aktuellen, extern anliegenden Zustand einzulesen. Dazu muss das entsprechende Datenrichtungsbit auf Eingang geschaltet sein. Das Ausgangsregister PORTx. Es erfüllt 2 Funktionen, je nachdem wie das zugehörige Datenrichtungsbit geschaltet ist. Steht es auf Ausgang, so wird bei einer entsprechenden Zuweisung an das PORTx Register der entsprechende Mikroprozessor-Pin auf den angegebenen Wert gesetzt. Steht es auf Eingang, so beeinflusst das PORTx-Bit den internen Pullup-Widerstand an diesem Mikroprozessor-Pin. Bei einer 0 wird der Widerstand abgeschaltet, bei einer 1 wird der Widerstand an den Eingangs-Pin zugeschaltet. Bei den neueren AVR (wie z. B. ATtiny13, ATtiny2313, ATtiny24/44/84, ATtiny25/45/85, ATmega48/88/168, usw.) kann man als Ausgang konfigurierte Pins toggeln (PORTx zwischen 0 und 1 „umschalten“), indem man eine 1 an die entsprechende Bit Position des PINx Register schreibt. Was genau verstehst Du daran nicht? Was genau ist daran unklar? Ich denke, Du willst hier nur veralbern.
Veit D. schrieb: > Wie gesagt, hilft dem TO hier nicht weiter. Das Arduino Framework darf > er leider nicht verwenden, sonst wäre er schon längst fertig. :-) Wurde so nicht gesagt. Gesagt wurde, dass er "gebeten" wurde AS zu nutzen. Irgendwie fliegt mir im Kopf rum, das man das Arduino-Gefrickel auch im AS nutzen kann. Ich meine das hab ich mal irgendwo gelesen. Evtl lohnt sich ja mal Google danach zu fragen. Phil P. schrieb: > Benötige ich PORTx nur wenn ich den jeweiligen PIN anders benötige als PINx oder ein bestimmter Pin vom PORTx? Die Frage macht so kein Sinn. > übers DDRx initialisiert ist? Wenn du den (vermutlich) Pin anders brauchst als im DDRx initialisiert ist, dann musst du das auch im DDRx ändern. > Bleibt immernoch zu klären ob man mit DDRx nicht schon alles genau so > einstellen kann wie man möchte Das ist doch nun schon mehrfach gesagt worden. PORTx und DDRx und PINx sind alle mehr oder weniger unabhängig voneinander.
Alex schrieb: >> Was genau macht es für einen Unterschied ob ein Ausgang als High oder >> Low gesetzt ist ? > Der Unterschied ist, dass an dem Pin dann 0V oder Vcc liegen. Der > Controller kann nicht erraten ob du z.B. eine LED einschalten oder > ausschalten willst. Er weiß noch nicht einmal, wie die LED angeschlossen ist. Je nach Schaltung leuchtet sie entweder bei HIGH Pegel oder bei LOW Pegel. dumdum schrieb: > Nach einem Reset sind die Registerinhalte unbestimmt . Nein, definitiv nicht. Alle Register haben einen definierten Anfangswert, der durch einen Reset oder Power-Up eingestellt wird. Steht im Datenblatt. Dem Rest stimme ich zu. Phil, kombiniere beim lesen ein Tutorial mit dem Datenblatt. Im Tutorial (egal welches) sind die wichtigsten Sachen leicht verständlich erklärt. Du solltest aber zu jeder Aussage auch im Datenblatt nachschauen, um es dort bestätigt zu finden. So kommst du langsam dahin, das Datenblatt zu verstehen. Nach einiger Erfahrung brauchst du nur noch dieses eine Dokument. Mein weiter oben verlinktes Buch (http://stefanfrings.de/mikrocontroller_buch/index.html) verweist immer wieder auf konkrete Kapitel im Datenblatt, teilweise habe ich auch direkt daraus zitiert. Band 1 Kapitel 6.7 beschreibt die Port-Register. Ich würde Dir aber empfehlen, die Kapitel der Reihe nach zu lesen und zu experimentieren, damit Du ein Verständnis für die Materie bekommst.
Der Post-Laden hat jetzt übrigens zu. Wenn du die Bauteile-Kiste noch haben willst, wird sie wahrscheinlich nicht mehr vor Weihnachten ankommen. Vielleicht willst du die persönlich abholen, ich wohne in Düsseldorf.
Phil P. schrieb: > Aber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt" > oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil - > überraschung - ich genau das tue und ich würde nicht penetrant 10 mal > die gleiche Frage stellen, wenn das was ich dort lese nicht noch > Unklarheiten hätte. Nein. Es hat keine Unklarheiten. Du hast noch Unklarheiten. Nicht das Datenblatt. Solange Du Dein Problem externalisierst, wirst Du es nicht lösen. Lies, was da steht. Dieter hat es Dir sogar übersetzt und zusammengefasst. Wenn Du das Ding nicht liest und Dir über die einzelnen Begriffe klar wirst anstatt schlampig damit umzugehen, wirst Du nicht weiter kommen. Das Lesen eines Textes verursacht manchmal - in Abhängigkeit von der individuell unterschiedlich ausgeprägten Fähigkeit des Textverständnisses - gewisse Anstrengungen. Die kann Dir niemand abnehmen.
Phil P. schrieb: > Aber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt" > oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil - > überraschung - ich genau das tue und ich würde nicht penetrant 10 mal > die gleiche Frage stellen, wenn das was ich dort lese nicht noch > Unklarheiten hätte Kann ich sehr gut nachvollziehen und kenne ich gut aus meinen Anfangszeiten. Manchmal würd man gern durch den Monitor greifen :D. Aber ich muss dir leider trotzdem sagen, dass mir nicht ganz klar ist, was dir nicht ganz klar ist. Nachdem ich den Thread hier durchgelesen hab, ist hier wirklich mehrfach alles gesagt worden, was zum Lösen nötig ist. Versuch doch nocheinmal zu beschreiben wo genau es hakt. Ich vermute du bringst einfach die Funktionen von PINx, DDRx und PORTx durcheinander. Dieter F. schrieb: > Zusammenfassung der Portregister > Für jeden Hardwareport gibt es im Mikroprozessor insgesamt 3 Register Wurde hier sehr gut beschrieben....
Dieter F. schrieb: > Ich denke, Du willst hier nur veralbern. Anders kann es kaum sein. Robotik und Mechatronik und sowas hier ist ein Fach, was er nicht mag? Woraus besteht das Studium denn sonst? Mechatronik und Robotik verstehe ich so, daß Informatik über Elektronik mit Mechanik verbunden wird. Einen µC programmieren um über BT einen Motor zu steuern ist ein Hassthema? Völlig absurd. Wie ein Jurastudent, der meint, daß das mit den Gesetzen ihm nicht so läge. Und sowas soll sonst fast eine Bachelorarbeit sein? Das ist eine Bastelei für ein WE, mehr nicht. Ich wollte zur Fast-PWM am Anfang schreiben, daß die für sowas nicht gut geeignet ist, da man je nach Einstellung nie 0 oder 255 erreicht. Also entweder ist der Ausgang 0...254 oder 1...255. Soweit wird Phil aber niemals kommen, wenn er nach 65 Beiträgen immer noch nicht kapiert hat, wie die Ports funktionieren. Gruß, Norbert
Phil P. schrieb: > Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang > definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des > ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass > spannung anliegt)? Hallo, allein diese Frage erinnert mich schmerzlich an meine Studienzeit, in der ich ab und an befreundeten Eltern den Gefallen getan habe, ihren Sprösslingen Mathenachhilfe zu geben. Da waren es aber Schüler...und hier... Den Optimismus der Vielen hier, die zu Helfen versuchen, kann ich nicht teilen. Für mich zeigt der TO mit seinen Fragen, dass ihm jegliche elektrotechnischen Grundkenntnisse fehlen und die bräuchte er, wenn er einen Mikrocontroller auch nur ansatzweise verstehen will. Ich zitiere nochmal extra: (wirklich seine Aufgabe des ausgebens verrichtet) ...Gänsehaut... Gruß Rainer
Stefanus F. schrieb: > Du solltest aber zu jeder Aussage auch im Datenblatt nachschauen, um es > dort bestätigt zu finden. ist ein guter tipp (Y) Stefanus F. schrieb: > Vielleicht willst du die persönlich abholen, ich wohne in > Düsseldorf. Am Montag kann ich ins Labor der Uni, da sollte alles benötigte vorhanden sein, trotzdem danke =) J. T. schrieb: > Wurde hier sehr gut beschrieben... Habe ich auch schon mehrfach durchgelesen, ich glaube ich weiß woran es liegt.. Norbert S. schrieb: > Woraus besteht das Studium denn sonst? Na Am anfang vermutlich wie bei jedem aus den Basics wie Mathe, Physik, Chemie und diverse Grundlagen. Vorlesungen wie "wie programmiert man einen einen Mikrocontroller" gibt es leider nicht. Hol dir ne Hausfrau von der Straße und stell die vor meine Aufgabe. Wenn die sich besser anstellt, gehe ich mich sofort exmatrikulieren, darauf hast du mein Wort. Rainer V. schrieb: > ...Gänsehaut... Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen Laien verständlich auszudrücken , was dann auch nicht immer Fachkorrekt dargestellt wird. So möchte ich aber Sichergehen, dass wir nicht aneinander vorbeireden. Denkt gern mal an eure Anfangszeiten zurück ;) Das Problem liegt glaube ich daran, dass wir uns missverstehen. Dass man übers DDRx sagt ob man einen Ein- oder Ausgang haben möchte ist klar. Mithilfe des PORTx können wir dann den jeweiligen Ein-/Ausgang auf High oder Low setzen. Sprich ob er ein Signal (1) oder eben keines (0) ausgibt. Damit kann man eine LED an- oder ausmachen, korrekt? Was ich aber die ganze Zeit mein Problem war: Wenn ich ein PWM ausgeben möchte, was bringt mir dann "an" oder "aus"? Ich möchte ja keine LED leuchten lassen sondern die Drehzahl eines Motors über die Spannung regeln.
Phil P. schrieb: > Am Montag kann ich ins Labor der Uni, da sollte alles benötigte > vorhanden sein Sehr gut, nutze die Bauteile um sie auszuprobieren. Ich persönlich muss sie buchstäblich begreifen, damit ich gut lernen kann. Theorie ist nicht so mein Ding.
Phil P. schrieb: > Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen > Laien verständlich auszudrücken Wozu? Willst Du hier Hilfe von Laien, die noch weniger Ahnung haben als Du (wird hier schwer). Phil P. schrieb: > Das Problem liegt glaube ich daran, dass wir uns missverstehen. Dass man > übers DDRx sagt ob man einen Ein- oder Ausgang haben möchte ist klar. > Mithilfe des PORTx können wir dann den jeweiligen Ein-/Ausgang auf High > oder Low setzen. Sprich ob er ein Signal (1) oder eben keines (0) > ausgibt. Damit kann man eine LED an- oder ausmachen, korrekt? Ja. Und wenn das DDRx nicht gesetzt ist, schaltest Du mit Portx die Pullups ein. PINx liefert Dir immer den aktuellen physikalischen Zustand des Pins. PWM ist an/aus. Du regelst da erstmal keine Spannung. Lies verdammt nochmal das gesamte Kapitel PWM im Datenblatt. Was Du dann nicht verstanden hast kannst Du fragen. Manche Deiner Fragen sind einfach zu unsinnig, als daß man sie sinnvoll beantworten könnte. Gruß, Norbert
Stefanus F. schrieb: > Sehr gut, nutze die Bauteile um sie auszuprobieren. Beim momentanen Kennissstand sollten es aber reichlich Bauteile sein... Gruß, Norbert
Phil P. schrieb: > Was ich aber die ganze Zeit mein Problem war: Wenn ich ein PWM ausgeben > möchte, was bringt mir dann "an" oder "aus"? Ich möchte ja keine LED > leuchten lassen sondern die Drehzahl eines Motors über die Spannung > regeln. Oha..
Norbert S. schrieb: > PWM ist an/aus. Du regelst da erstmal keine Spannung. Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch? dann ergibt das auch Sinn. Wisst ihr, normal teile ich eure Einstellung dass man niemandem was vorsagt und derjenige selbst nachlesen soll. Wenn er das aber tut und wiederholt die falschen Ansätze hervorbringt, dann möge man ihm einfach die Lösung sagen. Löst dann des öfteren einen Domino-Effekt aus und einiges weitere wird auf einmal klarer (Y). War jetzt vielleicht ein blödes Missverständnis aber ne direkte Antwort und man hätte sich die letzten 20 male " schau ins Datenblatt" und "Sieh im Tutorial nach" sparen können und ich wäre schon ein paar Stunden weiter. Dann mal schauen was ich mit den Kenntnissen anfangen kann. Ich mach selbst denjenigen immer Mut zu fragen wenn sie was wissen möchten aber ich muss ehrlich gesagt zugeben ich traue mich hier selbst langsam nichtmehr. 80% der Kommentare hier sind unnötig und (wenns mich denn jucken würde) auch verletzend. Ist das denn Sinn eines solchen Forums?
> Wenn ich ein PWM ausgeben möchte, was bringt mir dann "an" oder "aus"?
Wie ich bereits schrieb, wir der Wert im PORTx Register übergangen, wenn
du einen Pin mit Spezialfunktion betreibt. In deinem Fall wird der Pin
mit der Spezialfunktion "Output Compare" eines Timers verwendet.
Auch das steht im Datenblatt im Kapitel 13.3 Alternate Port Functions.
"Most port pins have alternate functions in addition to being general
digital I/Os. Figure 13-5 shows how the port pin control signals from
the simplified Figure 13-2 on page 76 can be overridden by alternate
functions."
"• OC1A/PCINT1 – Port B, Bit 1
OC1A, Output Compare Match output: The PB1 pin can serve as an external
output for the Timer/Counter1 Compare Match A. The PB1 pin has to be
configured as an output to serve this function. The OC1A pin is also the
output pin for the PWM mode timer function."
Ähnliches steht bei den anderen Pins, die ebenfalls als PWM Ausgang
verwendbar sind.
Phil P. schrieb: > Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch? > dann ergibt das auch Sinn. Schon wieder so eine komische Frage. Was soll denn der "typischen PWM-An-Aus switch" sein? Zur Frage "Was ist PWM?" liefert Google mir als erstes diesen schönen Artikel: http://digital.ni.com/public.nsf/allkb/9C90B9A416A509DD86257EF2007C1926 Das machen die PWM Ausgänge des Mikrocontrollers, wenn man ihn richtig programmiert. > 80% der Kommentare hier sind unnötig Unklare Fragen verursachen unklare/unpassende/unnötig umfangreiche Antworten. Du hast es in der Hand, die Diskussion dahin zu steuern, wo du sie haben willst.
Phil P. schrieb: > Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch? Du hast also noch nie PWM in die Suchmaschine deiner Wahl eingegeben? Interessant!
Phil P. schrieb: > Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch? > dann ergibt das auch Sinn. NEIN! Lies noch mal. PIN ist der Zustand den Du auslesen kannst. Wenn Du den Pin meinst, das Beinchen am µC, dann schreib das auch so.Dann wäre es richtig. Du musst konkrete Fragen stellen, dann gibt es auch Antworten. Schwammiges "Wie geht das" kann man nur mit "lies das Datenblatt!" beantworten. Gruß, Norbert
Stefanus F. schrieb: > Wie ich bereits schrieb, wir der Wert im PORTx Register übergangen, wenn > du einen Pin mit Spezialfunktion betreibt. In deinem Fall wird der Pin > mit der Spezialfunktion "Output Compare" eines Timers verwendet. Muss ich dann überhaupt einen Wert reinschreiben? Ich hab gelesen dass es bei kleineren mikrocontrollern aus platztechnischen gründen so sein kann, dass ein PIN mehrfach besetzt sein kann. Gilt dies dann nicht für PINS mit Spezialfunktionen? (Nein ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen, bis ich da eine aussagekräftige Aussage machen kann)
Phil P. schrieb: > (Nein > ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen, > bis ich da eine aussagekräftige Aussage machen kann) Is klar.
Phil P. schrieb: > Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen > Laien verständlich auszudrücken , was dann auch nicht immer Fachkorrekt > dargestellt wird. So möchte ich aber Sichergehen, dass wir nicht > aneinander vorbeireden. Lass das! Wir sind keine Laien, sondern Fachidioten ;-) Phil P. schrieb: > Was ich aber die ganze Zeit mein Problem war: Wenn ich ein PWM ausgeben > möchte, was bringt mir dann "an" oder "aus"? Ich möchte ja keine LED > leuchten lassen sondern die Drehzahl eines Motors über die Spannung > regeln. Ok, das ist nicht ganz unberechtigt. Du musst genaugenommen im Kapitel PWM des Datenblattes nachschauen, wie du den Pin zu konfigurieren hast. Bei den von mir meistens benutzten Controllern muss man beispielsweise den Transmitter (Sender/Ausgang) Pin vom USART als digitalen Eingang definieren, damit die digitale Output Stufe des Ports und die Sender Output Stufe des USART nicht in die Quere kommen ;-)
Phil P. schrieb: > (Nein > ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen, > bis ich da eine aussagekräftige Aussage machen kann) Is klar. Wenn es so sein muss...
Norbert S. schrieb: > Dann wäre es richtig. Entschuldigt die gelegentliche, der Übermüdung geschuldete, verwechselte Konvention Mister Allwissend. Genau das meinte ich ja. Norbert S. schrieb: > Du musst konkrete Fragen stellen, dann gibt es auch Antworten Ich bin der Meinung ich habe die Frage klar genug gestellt und auch 10 mal anders formuliert (Ja-Nein-Frage) und wurde immer nur aufs Datenblatt oder Tutorial verwiesen
Bis wann muss das Projekt fertig sein? Ein von Student zu Student ernstgemeinter und auf keinen Fall böser Tipp. Sei so ehrlich zu dir selbst wie es geht und schiebe im Notfall das Modul um mehr Zeit zum Lernen zu bekommen. Wenn du dir das mit Müh und Not auf den Controller programmierst und den Sinn dahinter nicht ganz verstanden hast, wird dich die Lücke später im Studium noch mehr ins Gesicht hauen. Lieber von Anfang an richtig, als nur halb und später richtig auf die Schnauze fallen. Wenn das Projekt bis Ende Sommer 19 fertig sein soll, wovon ich eher weniger ausgehe, habe ich nichts gesagt.
Volker S. schrieb: > Lass das! Wir sind keine Laien, sondern Fachidioten ;-) Ich meine nicht euch, sondern mich bzw hab da im Hinterkopf dass ich normalerweise derjenige bin, der wenigerwissenden was beibringt :D
Phil P. schrieb: > Muss ich dann überhaupt einen Wert reinschreiben? Denk doch mal logisch mit. Wenn der Wert im Portx Register keine Rolle spielt, weil er durch die Spezialfunktion übergangen wird, dann ist es folglich scheiß egal, was da drin steht. Aber das DDRx Register musst du richtig einstellen. Das steht so in dem von mir zitierten text aus dem Datenblatt. > Ich hab gelesen dass es bei kleineren mikrocontrollern aus > platztechnischen gründen so sein kann, dass ein PIN mehrfach besetzt > sein kann. Gilt dies dann nicht für PINS mit Spezialfunktionen? Du hast Dir ja nicht einmal die Pinbelegung auf Seite 2 angeschaut, geschweige denn verstanden, as wir Dir hier in 70 Beiträgen geschrieben haben! Ich bin jetzt echt Fassungslos, du verarschst uns doch! Verarsche Dich selber! Ich bin raus.
Chris M. schrieb: > Ein von Student zu Student ernstgemeinter und auf keinen Fall böser > Tipp. Da hast du vollkommen Recht.Bin ich auch nebenher am überlegen aber ich bin eigentlich nicht der Typ der schnell aufgibt. Ich sollte halt in den nächsten Tagen einen Überblick über die noch zu bewältigende Menge bekommen damit ich das nämlich abschätzen kann. Problematik: In 6 Wochen schreibe ich die erste Prüfung und bis dahin muss auch das Projekt fertig sein.
Phil P. schrieb: > Muss ich dann überhaupt einen Wert reinschreiben? Jein. Du musst den Pin (NICHT PIN!) im DDR als Output definieren. Phil P. schrieb: > Ich hab gelesen dass es bei kleineren mikrocontrollern aus > platztechnischen gründen so sein kann, dass ein PIN mehrfach besetzt > sein kann. Gilt dies dann nicht für PINS mit Spezialfunktionen? (Nein > ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen, > bis ich da eine aussagekräftige Aussage machen kann) Lies das fucking Datenblatt des 328. Da steht das alles. Sogar die Seiten wurden Dir schon genannt. Deine Aussage ist komplett falsch. Eher ist es so, daß bei leistungsfähigeren µC viele Pins mit beliebigen Funktionen belegt werden können. Gruß, Norbert
Phil P. schrieb: > Problematik: In 6 Wochen schreibe ich die erste Prüfung und bis dahin > muss auch das Projekt fertig sein. Wenn Du so weiter machst, wirst du nie fertig. Du zeigst ja Null Bereitschaft, die Anleitungen zu lesen. Von nichts kommt nichts.
Stefanus F. schrieb: > Denk doch mal logisch mit. Wenn der Wert im Portx Register keine Rolle > spielt, weil er durch die Spezialfunktion übergangen wird, dann ist es > folglich scheiß egal, was da drin steht. Genau diese Frage hab ich schon vor 50 Beiträgen gestellt. Es war zu der Zeit keiner in der Lage ja oder nein zu sagen. Stefanus F. schrieb: > Du hast Dir ja nicht einmal die Pinbelegung auf Seite 2 angeschaut, > geschweige denn verstanden, as wir Dir hier in 70 Beiträgen geschrieben > haben! Die letzten Posts gingen durchs Missverständnis ins Leere. Da habt ihr mich wohl genauso wenig verstanden wie ich euch. Aber hey, ich bin leider nicht allwissend geboren worden wie so mancher hier.
Dann ist jetzt deine erste Aufgabe, zu lernen, wie man Fragen stellt. Oder du fragst halt nicht mehr - geht auch.
Stefanus F. schrieb: > Wenn Du so weiter machst, wirst du nie fertig. Du zeigst ja Null > Bereitschaft, die Anleitungen zu lesen. Von nichts kommt nichts. Lesen heißt nicht verstehen. Wenn es unklarheiten gibt und ich nur Dumm angemacht werde wenn ich dazu etwas frage, frage ich irgendwann nichtsmehr und werde es auch nie verstehen. Ich verarsche hier niemanden und weise gerne nochmal auf den Domino-Effekt hin. Sich dann mit einem riesigen Datenblatt beschäftigen zu müssen, quasi Materie von der man keine Ahnung hat, in einer anderen Sprache wo auch nochmal Probleme diesbezüglich auftauchen können ist alles andere als etwas, das man mal "locker nebenher macht".
Phil P. schrieb: > Ich bin der Meinung ich habe die Frage klar genug gestellt und auch 10 > mal anders formuliert (Ja-Nein-Frage) und wurde immer nur aufs > Datenblatt oder Tutorial verwiesen Ich bin der Meinung dass die Antworten (ohne die Beleidigungen) klar genug waren auf deine Fragen. Doch leider gehst du nicht darauf an sondern stellst die gleiche Frage nochmal. Das frustiert hier offenbar einige
Phil P. schrieb: > Entschuldigt die gelegentliche, der Übermüdung geschuldete, verwechselte > Konvention Mister Allwissend. > Genau das meinte ich ja. Du hast aber schon kapiert, daß das ein Unterschied ist? Bei Dir kann man sich leider nicht sicher sein. Da ist eine genaue Sprache umso wichtiger. Mein Tip: Schau Dich mal in der Gegend um, wo man eine Lehre zum Imker machen kann. Gruß, Norbert
Wenn du parallel noch für andere Prüfungen lernen musst schieb das Modul. Gerade jetzt in den Basics ist es wichtig alles zu verstehen. Das Ende vom Lied ist schlimmstenfalls, dass du dir durch die Hektik vom Projekt, das Lernen der anderen Module versaust und das Semester war für die Katz
Alex schrieb: > Ich bin der Meinung dass die Antworten (ohne die Beleidigungen) klar > genug waren auf deine Fragen. Wenn man halt aneinander vorbeiredet, dann nicht zwingend. Norbert S. schrieb: > Mein Tip: Schau Dich mal in der Gegend um, wo man eine Lehre zum Imker > machen kann. Vielleicht hab ich ja auch Glück und kann eine Ausbildung machen in der ich später Leuten zeigen kann, wie man richtig mit seinen Mitmenschen umgeht ;)
Phil P. schrieb: > Sich dann mit einem riesigen Datenblatt beschäftigen zu müssen Das Datenblatt ist nicht riesig. Die entsprechende Dokumentation von STM32 Controllern ist 10x so umfangreich und trotzdem weniger ausführlich. Sei froh, dass du einen AVR verwenden darfst, und dann auch so ein 08/15 Modell. Für keinen anderen Mikrocontroller wirst du so viele Anleitungen und Beispiele finden, wie für den ATmega328. > Vielleicht hab ich ja auch Glück und kann eine Ausbildung > machen in der ich später Leuten zeigen kann, wie man richtig > mit seinen Mitmenschen umgeht ;) Ich kann Dir beibringen, Graubrot zu backen ..... oder lieber doch nicht, könnte zeitaufwändiger werden, als gedacht.
Nicht mehr lange, und dieser Thread wird umfangreicher, als mein Buch.
Phil P. schrieb: > Vielleicht hab ich ja auch Glück und kann eine Ausbildung machen in der > ich später Leuten zeigen kann, wie man richtig mit seinen Mitmenschen > umgeht ;) Lasst euch nur verarschen - ihn freut es :-)
Norbert S. schrieb: >> Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen >> Laien verständlich auszudrücken > > Wozu? Willst Du hier Hilfe von Laien, die noch weniger Ahnung haben als > Du (wird hier schwer). Jau, hab' ich auch erst so verstanden! Der TO meint aber, dass er sich als Laie bemüht, gegenüber Fachleuten (also quasi gegenüber der Obrigkeit :-) Verständliches zu äußern... Erzähl deinem Prof. in der mündlichen Prüfung mal, nachdem du einen Haufen Unsinn abgesondert hast, dass du zwar keine Ahnung hast, das aber möglichst verständlich rüberbringen wolltest. Mindestens der Beisitzer wird in die Tischkante beißen... Aber immerhin, die erste Hürde ist genommen und wir sind doch schon bei PWM! Auch wenn der Sprung von LED zu Motor noch mal ein ganz gehöriger werden wird... Gruß und viel Erfolg weiterhin, Rainer
Moin, Phil P. schrieb: > Sich dann mit einem riesigen Datenblatt beschäftigen zu müssen Wie Stefanus schrieb, das ist vollkommen harmlos im Vergleich. Es gibt die einzelnen Kapitel, in den Kapiteln Verweise. Du sollst ja nur erstmal die relevanten Kapitel lesen aber selbst da verweigerst Du Dich ja. Das kann man an den Fragen ablesen. Kollegen haben vor einiger Zeit mit STM32 angefangen. Das will man nicht mehr als pdf, also steht da ein halber Meter Dokubücher. Vorschlag zur Güte: Lass erstmal eine LED blinken. Zuerst mit delay und dann vielleicht mit PWM. Dann stellst Du konkrete Fragen wenn es nicht läuft. Gruß, Norbert
Norbert S. schrieb: > Vorschlag zur Güte: Lass erstmal eine LED blinken. Zuerst mit delay und > dann vielleicht mit PWM. Dann stellst Du konkrete Fragen wenn es nicht > läuft. ...und auf jeden Fall fragen, ob man den Widerstand an der LED weglassen kann! Sorry, aber der mußte jetzt sein... Gruß Rainer
Ich muss auch sagen, dass die Atmeldatenblätter ein Traum sind, im Vergleich zu anderen. Klar strukturiert, es lässt sich alles schnell finden was man braucht. Ein anderer Tip wäre noch, dir bei Conrad das "Mikrocontroller lernen und verstehen"-Kit besorgst oder schaust, dass du das Handbuch dazu findest. Das fand ich als Einsteiger (Elektronikkentnisse aber weder programmier- noch uC-Erfahrung) sehr verständlich aufbereitet. Ist zwar alles in asm, aber auch das ist eigentlich ein Vorteil, da man so den Controller sehr gut kennenlernt. Damit hab ich von wie gesagt 0 angefangen und konnte nach der ersten Hälfte eines Wochenendes eine LED per PWM dimmen. Der Sprung auf den Motor war dann das Tauschen der LED gehen einen FET und Motor. Ab und an starb der FET und ich lernte die Vorzüge einer Freilaufdiode zu schätzen ;-) P.S. es gibt da 2 Kits. Bei dem einen ist ein uC dabei, in den dein Programm eintasten musst, ich meine das andere. Wenn ich mich recht entsinne ist bei dem anderen ein Atmega8 und ein simpelst-Programmieradapter bei, für den brauchst du noch einen USB-rs232 umsetzer, falls dein Rechner nicht noch eine native haben sollte.
:
Bearbeitet durch User
Rainer V. schrieb: > ...und auf jeden Fall fragen, ob man den Widerstand an der LED weglassen > kann! Sorry, aber der mußte jetzt sein... Wenn man nicht möchte, dass es die LED zerfetzt sollte man den wohl einbauen ;) Heißt zwar "Vor"-widerstand aber ist eigentlich egal ob man den vor oder nach der LED einbaut. J. T. schrieb: > Das fand ich als Einsteiger (Elektronikkentnisse aber weder > programmier- noch uC-Erfahrung) sehr verständlich aufbereitet. Danke für diesen Tipp. Ich werde es mir mal durch den Kopf gehen lassen. Aber für heute lass ich das Projekt ruhen. Vielen Dank an alle die ernsthaft bemüht waren mir zu helfen und die nötige Geduld hatten. Gute Nacht und vielleicht bis Morgen =)
Beitrag #5659750 wurde von einem Moderator gelöscht.
@Phil P. Was ist denn mit dir nicht richtig? Das ist absolut das falsche Studienfach! Du kannst kein Poti auslesen, wie willst du die Prüfungen schaffen? Es endet wie im 1. Semester, du versagst in alles 11 Klasuren.
Dieter F. schrieb: > Phil P. schrieb: >> Vielleicht hab ich ja auch Glück und kann eine Ausbildung machen in der >> ich später Leuten zeigen kann, wie man richtig mit seinen Mitmenschen >> umgeht ;) > > Lasst euch nur verarschen - ihn freut es :-) ...hoffentlich hast du bis dahin nicht nur Zeigen gelernt, sondern auch Sagen...
Phil P. schrieb: > - Während Bekannte von mir die BWL, Wirtschaftsinformatik usw studieren > und 3-5 Prüfungen pro Semester schreiben, habe ich im Schnitt 9-11. > -Je nach Studiengang wird das Studium immer umfangreicher weil es mehr > und komplexere Technik gibt (Vergleich Maschinenbau, Elektrotechnik vor > 30 Jahren und Heute). Die Studenten heutzutage sind schon bedauernswert. Die Ursachen sind nicht das umfangreiche Studium. Das Problem beginnt schon viel früher, nämlich in den Gymnasien und Realschulen. Das durchschnittliche Leistungsniveau der Schulabgänger wird immer niedriger. Aber lassen wir das jegliche Diskussion über das Thema ist müßig.
@ Phil P. Ich will Dir noch ein paar abschliessende Worte sagen. Die Situation muss für Dich frustrierend sein. Du stellst Fragen und wirst auf Dich selbst zurückgeworfen und kritisiert. Eine Lösung hast Du nicht. Bei Kritik ist naturgemäß immer die Frage, ob sie zutrifft. Oft sind die Motive für Kritik nicht genannt. Manchmal muss man vermuten, dass jemand einfach Lust an der Kritik hat. Das musst, oder solltest Du jetzt einmal gründlich überlegen. Ist die Kritik berechtigt oder nicht? Ich kann Dir nur versichern, dass ich mich nicht lediglich damit vergnüge, Leute hier abzukanzeln. Du hast selbst gesagt, dass ich Dir an anderer Stelle (leider erinnere ich mich nicht mehr, an welcher) tatsächlich geholfen habe. Lies doch bitte nochmal meine Beiträge hier und prüfe auch die anderen noch einmal und gehe mit Dir selbst zu Rate, wie Du Deine Herangehensweise und vor allem Deine Einstellung ändern kannst und ob Du das überhaupt willst und - was am schwersten sein wird - , ob Du für dieses Studium die Eignung hast. Oft denkt man, dass man nur etwas wert ist, wenn man dieses oder jenes tut oder kann und irrt sich dabei. Jeder Mensch ist ein Wert an sich. Und jeder ist in irgendwas gut. Was immer Du im Leben erreichen willst, ob es nun dieses Studium ist oder ob Du Dich für etwas anderes entscheidest, wünsche ich Dir ein gutes Leben und viele schöne Momente.
Phil P. schrieb: > Was genau macht es für einen Unterschied ob ein Ausgang als High oder > Low gesetzt ist ? Laß es sein Dir fehlen jegliche Basics. Es hilft auch nicht Dir es zu erklären. Das hat z.B. Dussel schon versucht und ich meine er hat es so getan, das es auch ein Anfänger versteht. Ich behaupte mal Du hast Dir seine Posts nur oberflächlich durchgelesen und deshalb nicht verstanden.
Phil P. schrieb: > Schukostecker schrieb: >> Bist du sicher, dass eine technische Ausbildung das Richtige für dich >> ist? > > Na eine Platine konnten wir auch ohne Vorkenntnisse entwerfen und > layouten und uns das Prinzip einer Vollbrücke verstehen. > Wer ist "wir"? Hast du dafür etwa auch Hilfe gebraucht? > Schukostecker schrieb: >> Die Aufgabenstellung entspricht in etwa dem, was ein zukünftiger >> Arbeitgeber erwarten wird: Sich in neue Themenbereiche schnell und mit >> Interesse selbstständig einzuarbeiten. > > Korrekt. Aber wenn es denn soweit ist hat man wenigstens die Basics > drauf und ist nichtmehr am Anfang das Studiums Nein, das hat mit der richtigen Herangehensweise zu tun (Dokumentation lesen, verstehen und anwenden,..).
Phil P. schrieb: > Genau das meinte ich ja. Wenn Du nicht schreibst, was Du meinst, woher sollen wir das dann wissen? Phil P. schrieb: > Ich bin der Meinung ich habe die Frage klar genug gestellt Merkst Du etwas? Wenn 30 Leute Dir das Gegenteil sagen, dann wird es Zeit, dass Du Deine Selbsteinschätzung überprüfst. Und Dein Verhalten signifikant änderst. Phil P. schrieb: > Lesen heißt nicht verstehen. Wenn das bei Dir so ist, ist das tatsächlich ein großes Problem, um das Du Dich vorrangig kümmern solltest. Es könnte sein, dass - Du für das Lesen und den damit verbundenen Denkprozess nicht die durch Deine individuellen Fähigkeiten bestimmte notwendige Zeit aufwendest. Oberflächlich "lesen" bringt Dich aber nicht weiter und ist verschwendete Zeit. - Dir die Voraussetzungen fehlen, Dir das Verständnis von in Textform vorliegenden Beschreibungen komplexer Zusammenhänge selbständig zu erarbeiten. Das wäre schade. Denn das ist Voraussetzung für ein Studium. - Du alle Hinweise verschiedener hilfsbereiter. fachkundiger Mitmenschen, dass Du am Studium des Datenblatts nicht vorbei kommst, ignoriert hast und das Ding tatsächlich nicht vollständig und im Zusammenhang gelesen hast. Das wäre der schlimmste aller anzunehmenden Fälle. Beratungsresistenz wirkt auf die Hilfsbereitschaft der meisten Menschen stark dämpfend. Phil P. schrieb: > ist alles andere als > etwas, das man mal "locker nebenher macht". Gibt es unter den Menschen, die Dich besser kennen, viele, die glauben, dass Du das Studium mal so locker nebenher machen wirst? Was bringt Dir das alles? Lies es, bis du es verstanden hast. Antworte nicht darauf, kommentiere es nicht. Halte alle Deine schwachen Rechtfertigungen aus diesem Thread heraus. Stelle sachliche, konkrete Fragen in klaren Worten unter korrekter Verwendung der richtigen Terminologie. Nur dann kann Dir geholfen werden.
Zeno schrieb: > Die Ursachen sind nicht das umfangreiche Studium. Also ich sehe das definitiv als Problem. Ergibt ja auch irgendwo Sinn was ich sagte oder nicht ?... Zeno schrieb: > Das > durchschnittliche Leistungsniveau der Schulabgänger wird immer > niedriger. Mag sein, kann ich jetzt weder bestätigen noch leugnen. Herbert schrieb: > Was ist denn mit dir nicht richtig? > Das ist absolut das falsche Studienfach! Und mit dir so? Weil mir ein Kurs nicht liegt und ich gewisse Inhalte darin nicht mag soll ich das Studium wechseln oder abbrechen ? Herbert schrieb: > Du kannst kein Poti auslesen, wie willst du die Prüfungen schaffen? Wie jetzt du kannst keine Raketentechnik entwickeln? Wie willst du durchs Leben kommen O.ó Ahh.. lass mich raten.. sowas hast du nie gelernt ? ;) Herbert schrieb: > Es > endet wie im 1. Semester, du versagst in alles 11 Klasuren. Netter Versuch aber im ersten Semester ging nur eine Prüfung in die Hose :P Theor schrieb: > ob Du für dieses Studium die Eignung hast Ich bin kein Genie. Dafür bin ich fleißig. Wenn mal jemand bei etwas länger braucht (jeder hat irgendetwas das ihm nicht liegt) ist das kein Weltuntergang. Zeno schrieb: > Laß es sein Dir fehlen jegliche Basics. Dachte das wäre geklärt? Ich hatte die ganze Zeit PWM im Kopf und da bringt mir ein fester Wert auf 1 oder 0 eben nichts. Schukostecker schrieb: > Wer ist "wir"? Hast du dafür etwa auch Hilfe gebraucht? Zum einen bedeutet "wir", mein Projektpartner und ich. Zum anderen: Ähh ja? Wieviele Menschen auf diesem Planeten können eine Platine entwerfen ohne jegliche Vorkenntnisse? Inklusive Bauteildimensionierung, layouten, richtiges verschalten usw. Ich weiß nicht ob du vielleicht mal die nachliest was ein Studium ist aber dort geht man nicht hin, weil man schon alles kann und weiß ;)
Hi, nochmal, wenn ich einen Port bitweise einrichten möchte sowohl als Ausgang als auch als Eingang, geht das so: Hier ist die andere Default Pinpelegung des UART genommen worden und zwar die für den Mega32U2 und nicht ATiny2313. ciao gustav
Ich frag mich wie man eine uC-Platine entwirft wenn man noch nicht mal weiß was high oder low bedeutet. Und das im 3. Semester. Da kann ich schon verstehen dass einige an deiner Eignung für das Studium zweifeln. Der Vergleich mit der Raketentechnik hinkt. Jmd der in einem Studium in dem es größtenteils um Digitale Elektronik geht, im 3. Semester fragt was high oder low bedeutet wäre eher vergleichbar mit einem Bäckerlehrling, der im 2. Jahr fragt was ein Teig ist. Sei es drum, befolge die Tipps die du bekommen hast und wenn es noch einzelne spezielle Fragen geben sollte bekommst du sicher eine Antwort.
Phil P. schrieb: > Weil mir ein Kurs nicht liegt und ich gewisse Inhalte > darin nicht mag soll ich das Studium wechseln oder abbrechen ? Ja, so sehe ich das auch. Aus diesem Grund habe ich mein Studium nach 5 Monaten abgebrochen. Ich habe erkannt, dass es mir zu anstrengend wurde. Trotzdem bin ich inzwischen Senior Developer, damit stehe ich in der kleinen Firma über allen anderen Entwicklern. Ich habe die nötigen Kenntnisse und Erfahrung ohne Studium gelernt. Das dauer nur länger und bringt weniger Geld ein, was keine Schande ist. Nun halte ich einen Tag aber auch als zu kurze Zeitspanne, um Deine Fähigkeiten und Lernbereitschaft einzuschätzen. Du hast hartes Feedback bekommen, dass von den meisten hier sicher nicht böse gemeint war. Es mangelt hier leider am angemessenen Umgangston. Kannst du mit meinem Buch etwas anfangen? Die Experimente darin werden zwar fast alle mit dem ATtiny13 gemacht, aber du kannst sie ebenso mit dem größeren ATmega328 durchführen. Bitte benutze "PIN" nur noch, wenn du damit ein PINx Register meinst. Den Anschluss am Chip nennen wir "Pin". In diesem Fall ist die Rechtschreibung keine unwichtige Nebensache, sondern sehr wichtig, um Missverständnisse zu vermeiden. Wenn du solche Detailfragen hast, wie die Funktion des PORTx Registers bei PWM, dann probiere es besser einfach aus, bevor Du hier Fragen stellt. In diesem Fall hättest du gemerkt, dass es scheinbar irrelevant ist. Dann hättest du hier fragen können, ob dein Rückschluss korrekt ist und ob Dir jemand ein Stichwort nennen kann, nach dem du im Datenblatt suchen kannst. Wir sind hier nämlich fast alle Datenblatt-Fetischisten (du wirst lernen, warum) und sehen es gerne, wenn ein Fragender mit einer gewissen Vorleistung voran geht. Dann wirst du automatisch auch wesentlich höflicher formulierte Antworten erhalten, da bin ich ganz sicher. Ohne erkennbare Vorleistung ist der erste Reflex im Kopf des Lesers "Faule sau" und entsprechend zickig sind dann die Antworten. Bedenke, dass die meisten hier das Fach mühsam im Laufe vieler Jahre gelernt haben und permanent weiter lernen müssen. Wenn dann jemand kommt, der augenscheinlich meint, er könne mal eben das Wissen abgreifen um sich damit ein bequemes Leben zu schaffen, der wird nicht freundlich aufgenommen. Nächste Woche hast du Zugang zu Bauteilen. Bastle damit herum, und lese die relevanten Kapitel im Datenblatt. Heute und an den Abenden empfehle ich Dir nochmal wärmstens mein Buch. Lies es wenigstens, denn es ist vollgestopft mit Erklärungen für Anfänger. Danach wirst du bestimmt die Fachliteratur (Datenblatt, etc) besser verstehen.
Beitrag #5660011 wurde von einem Moderator gelöscht.
np r. schrieb: > Du am Studium des Datenblatts nicht vorbei kommst Hi, zum Beispiel konnte das Proggi nicht portiert werden. Nur durch Ansehen des Datenblatts auf Seite 2 konnte ich den Unterschied feststellen. http://ww1.microchip.com/downloads/en/DeviceDoc/7799S.pdf Denn: USART RXD und TXD sind auf andere Pinne geführt und auch anders definiert. http://ww1.microchip.com/downloads/en/DeviceDoc/8246S.pdf Mittlerweile gibt es Kurzfassungen "summaries" der Datenblätter. Das sind solche. ciao gustav
:
Bearbeitet durch User
Theor schrieb: > #define POTI 19 //kann man so die Pins hier oben definieren ? > > Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Diese Nummerierung > ist eine Besonderheit bei Arduino und kann hier (mit dem GCC-Compiler > und der Atmel-IDE) nicht verwendet werden. In diesem Tutorial wird das aber gemacht ( bei 15:50) kann das jemand aufklären? https://www.youtube.com/watch?v=2VPM2Q0JtxI&index=3&list=PL3SU2_dQ2eTYaQtEVKnCfZ0rysiFmbPQb Ich hätte da mal ne Frage, die ich vermutlich nicht so leicht nur mit Datenblatt lösen kann. Vielleicht spielt es auch keine Rolle aber wenn doch, gerne mit Begründung. Da ich ja mit Bluetooth arbeite stellt sich mir die Frage ob ich das Signal in der Sendeplatine in PWM umwandeln soll und dann auf die Empfängerplatine schicken soll oder die eigentliche PWM Umwandlung erst in der Empfängerplatine stattfinden sollte
Die Umwandlung in pwm passiert erst im Empfänger
:
Bearbeitet durch User
Max M. schrieb: > Die Umwandlung in pwm passiert war im Empfänger Kurze, ausreichende Antwort, danke! Aber kann noch einer erklären warum genau?
Phil P. schrieb: > Theor schrieb: >> #define POTI 19 //kann man so die Pins hier oben definieren ? >> >> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Diese Nummerierung >> ist eine Besonderheit bei Arduino und kann hier (mit dem GCC-Compiler >> und der Atmel-IDE) nicht verwendet werden. > > In diesem Tutorial wird das aber gemacht ( bei 15:50) kann das jemand > aufklären? > https://www.youtube.com/watch?v=2VPM2Q0JtxI&index=3&list=PL3SU2_dQ2eTYaQtEVKnCfZ0rysiFmbPQb > > In dem Video wird erstmal nur eine Zahl in eine Konstante gepackt. Das geht so natürlich. Wenn du aber den Poti auslesen willst musst du eine AD-Wandlung durchführen u.v.a.das geht prinzipiell anders als nur PINx einzulesen. Wie, verrät dir das Kapitel ADC im Datenblatt.
Phil P. schrieb: >> #define POTI 19 //kann man so die Pins hier oben definieren ? >> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. > In diesem Tutorial wird das aber gemacht ( bei 15:50) kann das jemand > aufklären? Nein, das wird dort nicht gemacht. Es wird nur die Bitnummer innerhalb des Ports (für die LED) definiert. "19" wäre keine gültige Bitnummer. Bei Arduino ist der Zugriff auf I/O Pins durch abstrahierende Funktionen gekapselt, wo die Ports und Pins einfach durchnummeriert sind. Das angehängte Bild zeigt diese Zuordnung. Ganz außen in Pink stehen die Arduino Pin Nummern. In beige stehen die "echten" Bezeichnungen, die der Chiphersteller vergeben hat. Der pinke Arduino Pin 19 ist in Wirklichkeit PC5 (Port C bit 5). In Arduino kann man anstelle der Nummer 19 auch den Alias A5 verwenden. Hier muss man echt aufpassen: Was Arduino A5 nennt, ist in Wirklichkeit PC5! Die Arduino Bezeichnungen gelten nur, wenn man mit Arduino Funktionen auf die Pins zugreift. Wenn du hingegen direkt zugreifst, gelten die "echten" Bezeichnungen. > pinMode(A5,OUTPUT) > pinMode(19,OUTPUT) > DDRC |= (1<<5) > digitalWrite(D10,HIGH) > digitalWrite(10,HIGH) > PORTB |= (1<<2) > digitalWrite(D5,LOW) > digitalWrite(5,LOW) > PORTD &= ~(1<<5)
Phil P. schrieb: > Max M. schrieb: >> Die Umwandlung in pwm passiert war im Empfänger > > Kurze, ausreichende Antwort, danke! > Aber kann noch einer erklären warum genau? Das machst du ja mit dem Timer und den kannst du direkt so konfigurieren dass er den Pin korrekt toggelt. Wenn du das schon im Sender machst müsstest du das PWM Signal in Echtzeit übertragen und auswerten, was deutlich komplizierter ist als einfach alle paar ms einen Poti Wert zu übertragen und in das Timer-Register zu schreiben
Die Bluetooth Schnittstelle wäre gar nicht geeignet, PWM in Echtzeit zu übertragen. Denn sie sammelt Daten und überträgt Paketweise, ggf. auch mit mehrfachen Wiederholungen, wenn eine Störung auftrat. Das Übertragungsprotokoll würde Dir dein Timing versauen.
Phil P. schrieb: > Aufgabenstellung: Drehzahlsteuerung eines DC Motors mittels PWM über > Bluetooth. Die Einstellung soll über einen Poti erfolgen. Muss es ein Analog Poti sein? Mit einem Digitalpoti könntest Du Dir zumindest das ganze ADC geraffel sparen. PWM sollte auch als Anfänger nicht die Herausforderung sein. Bluetooth schon eher. Grüsse, René
Danke Stefanus und Max! René H. schrieb: > PWM sollte auch als Anfänger nicht die Herausforderung sein. Bluetooth > schon eher. Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft man kann den Pin an dem das jeweilige Bluetooth Modul hängt als Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt das automatisch das Signal?
Phil P. schrieb: > Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft > man kann den Pin an dem das jeweilige Bluetooth Modul hängt als > Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt > das automatisch das Signal? Ein Irrtum! Siehe: https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
Hallo, Phil P. schrieb: > Aber kann noch einer erklären warum genau? Weil das PWM-Signal erst mittels der im Empfänger befindlichen Hardware erzeugt wird. Das ist viel einfacher als vorher ein PWM-Signal per Bluetooth zum Empfänger zu "transportieren" um es dann dort mit Software, die dafür eigens geschrieben werden muss, auszugeben. Die "PWM-Empfängerhardware" nimmt dir das viel ab. rhf
Phil P. schrieb: > Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft > man kann den Pin an dem das jeweilige Bluetooth Modul hängt als > Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt > das automatisch das Signal? Klingt simpel. Im Code wirds dann etwas komplizierter. Ich würde wie folgt vorgehen: 1. ein Programm mit PWM schreiben und mit LA oder Oszi prüfen. 2. Programm für Analog Poti und ADC schreiben. Prüfen wie oben. 3. Bluetooth Programm schreiben. Prüfen wie oben. Teile aller Programme in einzelne Files auslagern und in einem main() zusammenfügen. Starten würde ich mit Bluetooth. Grüsse, René
Du kannst das Bluetooth Modul nicht einfach über einen als Ein/Ausgang definierten Pin anschließen. Du musst richtig damit kommunizieren. Dafür benutzt du UART. Auch dazu gibt es ein Kapitel im Datenblatt. ;-)
> ich habe gehofft man kann den Pin an dem das jeweilige > Bluetooth Modul hängt als Eingang/Ausgang definieren > und wenn die Module gepairt sind überträgt > das automatisch das Signal? Die spannende Frage ist erneut: Was ist "das Signal"? Wo kommt es her, wie sieht es aus. Welche Anforderungen stellt das Bluetooth Modul an "das Signal"? Ich habe Dir weiter oben geschrieben, dass du dich mit der UART Schnittstelle und eventuell einem Übertragungsprotokoll beschäftigen musst.
René H. schrieb: > > Starten würde ich mit Bluetooth. Würde ich eher als letztes machen. Warum mit dem schwersten anfangen??
Phil P. schrieb: > Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft > man kann den Pin an dem das jeweilige Bluetooth Modul hängt als > Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt > das automatisch das Signal? Falls du damit meinst, es überträgt die Daten, welche du vom Sender über den USART ausgibst, dann ja. Sender und Empfänger Controller müssen nichts* davon wissen, dass es sich um eine BT Verbindung handelt. Da könnte genauso gut ein RS232 Kabel oder ein virtueller ComPort über USB dran hängen. *(wenn sie nicht für den Verbindungsaufbau und das Pairing der Module zuständig sind)
Stefanus F. schrieb: > Lies das: http://stefanfrings.de/bluetooth/index.html Ey auf deiner Seite gibts ja wirklich ne Menge zu finden. Sehr cool! Werd mich da mal umschauen. ;-)
Hannes J. schrieb: > Würde ich eher als letztes machen. Warum mit dem schwersten anfangen?? Weil es eben das schwerste ist und einem die Zeit am Ende nicht davon rennt. Man kann die verbleibende Zeit besser einteilen. Die leichteren Dinge sind unter Zeitdruck (Freinacht) einfacher zu erledigen. Erfahrungen aus meinem Studium (liegt allerdings etwas zurück). Grüsse, René
@Phil P. Ich denke schon, das du die grundsätzlichen Voraussetzungen mitbringst. Deine durchaus reflektiere Antwort auf manche Fragen zeigt mir das. Das Problem scheint zu sein, das du möglicherweise in ähnlicher Situation bist wie ein Blinder, dem man Farben erklären möchte. Möglicherweise gar das schöne Farbspiel eines Sonnenuntergangs über dem Wasserspiegel an einer Südsee-Insel. Vielleicht ist der von dir gewählte Kommunikations-Kanal einfach problematisch? Vermutlich liesse sich in einer Stunde "über die Tonspur" deutlich mehr erreichen als hier eine STunde zu tippen.
:
Bearbeitet durch User
Volker S. schrieb: > Falls du damit meinst, es überträgt die Daten, welche du vom Sender über > den USART ausgibst, dann ja. Das war der Plan (Y) Stefanus F. schrieb: > Lies das: http://stefanfrings.de/bluetooth/index.html Das habe ich schon vor ner weile mal gelesen als es um die Recherche nach einem geeigneten BT Modul ging=) Der Mikrocontroller unterstützt das ja soweit alles. RX/TX war bei uns auch genau dafür vorgesehen. Dementsprechend wird auch der jeweilige Pin als ein oder Ausgang benutzt. Falls da noch mehr Problematiken auftauchen werden, werde ich das wohl merken wenn ich im Projekt soweit bin :D
René H. schrieb: > Hannes J. schrieb: >> Würde ich eher als letztes machen. Warum mit dem schwersten anfangen?? > > Weil es eben das schwerste ist und einem die Zeit am Ende nicht davon > rennt. Man kann die verbleibende Zeit besser einteilen. Die leichteren > Dinge sind unter Zeitdruck (Freinacht) einfacher zu erledigen. > Erfahrungen aus meinem Studium (liegt allerdings etwas zurück). > > Grüsse, > René Der TO hat oben gefragt was high bzw low bedeutet. Wenn du ihm jetzt sagst er soll mal als erstes ne UART-Verbindung mit einem Bluetooth-Modul herstellen, sitzt er da wie ein Schwein vorm Uhrwerk..
Wegstaben V. schrieb: > Vermutlich liesse sich in einer Stunde "über die Tonspur" > deutlich mehr erreichen als hier eine STunde zu tippen. Interessanter Vergleich ;) Da magst du Recht haben, aber am Wochenende schwer an jemanden heranzukommen, der dafür Zeit und Lust hat.Vor allem wenn dann auch langsam die Weihnachtsfeiertage vor der Tür stehen. Am Dienstag sehe ich den zuständigen Prof wieder, das wird vermutlich auch aufschlussreich.
Hannes J. schrieb: > Der TO hat oben gefragt was high bzw low bedeutet. Wenn du ihm jetzt > sagst er soll mal als erstes ne UART-Verbindung mit einem > Bluetooth-Modul herstellen, sitzt er da wie ein Schwein vorm Uhrwerk.. Ich weiß was das bedeutet. Immernoch nicht klar, dass es sich um ein Missverständnis handelte?
René H. schrieb: > Hannes J. schrieb: >> Würde ich eher als letztes machen. Warum mit dem schwersten anfangen?? > > Weil es eben das schwerste ist und einem die Zeit am Ende nicht davon > rennt. Man kann die verbleibende Zeit besser einteilen. Die leichteren > Dinge sind unter Zeitdruck (Freinacht) einfacher zu erledigen. Im vorliegenden Fall würde ich BT auf jeden Fall mal ganz hinten anstellen und zunächst das "Poti" einfach an der "Empfängerplatine anschließen. So kann man ein grundsätzlich funktionsfähiges System bekommen, bei dem zwei Module (ADC und PWM) bearbeitet werden können und dem vorerst lediglich die Funkverbindung fehlt. NACHDEM das funktioniert, macht man weiter mit BT und verschiebt ADC in den Sender.
Beim seriellen Port brauchst du die I/O Pins nicht zu konfigurieren (ist ein Sonderfall). Wenn du den Sender der UART Schnittstelle einschaltest (Bit TXEN0 im Register UCSR0B) wird der Pin automatisch zum Ausgang. Der andere (RxD) Pin ist sowieso schon per Default ein Eingang.
Phil P. schrieb: > überträgt > das automatisch das Signal? Du gehst sehr ungenau mit dem Begriff "Signal" um. So ein µC ist keine magische Black Box, die mit irgendeinem Voodoo Zauber ein beliebiges (analoges, digitales, Funk-, Flaggen-...) Signal "überträgt". Du musst erst einmal definieren, was genau Dein Signal ist. Ein Pegel high/low? Eine analoge Spannung? Taktflanken? PWM mit Frequenz x? Dann kannst Du im Datenblatt nachschauen, was die Eingänge des µC eigentlich wahrnehmen können und wie. Um das Signal dann zu "übertragen" muss der µC es verarbeiten und wieder ausgeben, am besten in einer Form, die von der Gegenseite verstanden wird. Bildlich gesprochen kannst Du nicht in ein Bluetooth-Modul hineinpusten und erwarten, dass beim Empfänger durch "automatische Übertragung" Wind herauskommt.
Phil P. schrieb: > Interessanter Vergleich ;) Da magst du Recht haben, aber am Wochenende > schwer an jemanden heranzukommen, der dafür Zeit und Lust hat Wo bist Du denn in etwa zuhause? Evtl. lässt sich da über Weihnachten/Neujahr was machen. Grüsse, René
Phil P. schrieb: > Hannes J. schrieb: >> Der TO hat oben gefragt was high bzw low bedeutet. Wenn du ihm jetzt >> sagst er soll mal als erstes ne UART-Verbindung mit einem >> Bluetooth-Modul herstellen, sitzt er da wie ein Schwein vorm Uhrwerk.. > > Ich weiß was das bedeutet. Immernoch nicht klar, dass es sich um ein > Missverständnis handelte? Na ich hoffe doch, dass es nur ein Missverständnis war. Und trzd hast du gefragt. Die Tatsache, dass es dieses Missverständnis gab sagt mir, du solltest dich eher auf das lernen konzentrieren und daher von einfach nach schwer gehen und nicht auf die Zeiteinteilung achten und das schwerste als erstes machen. ;)
Volker S. schrieb: > Im vorliegenden Fall würde ich BT auf jeden Fall mal ganz hinten > anstellen und zunächst das "Poti" einfach an der "Empfängerplatine > anschließen. Wenn ich nicht unter Zeitdruck/definierte Terminierung stehe, ja, definitiv. Da das aber kein Hobby Projekt ist, ist der Faktor Zeit elementar und mit einzubeziehen. Mit BT zuerst, lernt man ohne Stress am schnellsten und bewältigt die restlichen Aufgaben ohne grössere Probleme. Meiner Meinung nach, muss nicht so sein. Grüsse, René
René H. schrieb: > Mit BT zuerst, lernt man ohne Stress am schnellsten Oder gar nicht, dann steht man am Ende mit leeren Händen da. Im anderen Fall kann man eventuell 2 von 3 Modulen als gelöst abhaken. Ein weiteere Vorteil wäre, dass man danach genau weiß, was das per BT zu übertragende "Signal" ist. Geschmackssache ;-)
:
Bearbeitet durch User
René H. schrieb: > Muss es ein Analog Poti sein? Mit einem Digitalpoti könntest Du Dir > zumindest das ganze ADC geraffel sparen. > > PWM sollte auch als Anfänger nicht die Herausforderung sein. Bluetooth > schon eher. Wo ist der AVR-ADC denn problematisch? Das ganze "Projekt" ist doch nichts weiter als ein etwas umfänglicheres Anfänger-Projekt. Die Gesamtaufgabe l#sst sich problemlos in einzelne Teile ("Probleme") zerlegen. Daa hilft es ungemein, erst mal eine LED blinken zu lassen, dann einen Taster und dann ein Poti einzulesen. Die Potiwerte lässt man sich dann an einem seriellen Terminal ausgeben, und steuert die LED per Terminal. Irgendwann kann man dann auch mal gucken, wie man die PWM hinbekommt.
Volker S. schrieb: > Ein weiteere Vorteil wäre, dass man danach genau weiß, was das per BT zu > übertragende "Signal" ist. Stimmt, da gebe ich Dir recht. Wenn man mit BT beginnt lernt man allerdings sehr schnell zwischen Signal, Daten und Protokoll zu unterscheiden ;-). Grüsse, René
René H. schrieb: > Mit BT zuerst, lernt man ohne Stress am schnellsten und bewältigt die > restlichen Aufgaben ohne grössere Probleme. Meiner Meinung nach, muss > nicht so sein. > > Grüsse, > René Du hast dir den Thread-Verlauf nicht durchgelesen oder?
Volker S. schrieb: > Ein weiteere Vorteil wäre, dass man danach genau weiß, was das per BT zu > übertragende "Signal" ist. Wenn dafür ein Byte genügt, weil das als Auflösung für die PWM ausreicht, dann muss man auch nicht unbedingt noch ein irgendein Übertragungsprotokoll implementieren...
STK500-Besitzer schrieb: > Wo ist der AVR-ADC denn problematisch? Wer sprach von problematisch? Es ist lediglich aufwändiger als Digital im Code. Grüsse, René
Hannes J. schrieb: > Du hast dir den Thread-Verlauf nicht durchgelesen oder? Doch, eigentlich schon, aber nicht jeden Beitrag. Grüsse, René
René H. schrieb: > Wer sprach von problematisch? Es ist lediglich aufwändiger als Digital > im Code. Du schlägst ein Digitalpoti vor. Das lässt darauf schließn, dass es schwierig sei, den ADC zu bereiben.
René H. schrieb: > Doch, eigentlich schon, aber nicht jeden Beitrag. Ok. Und du hast tatsächlich den Eindruck es ist zielführend TO sich direkt UART anschauen zu lassen? Ich würde eher tendieren zu: Lass eine LED blinken. Du hast vermutlich mehr Ahnung als ich. Bin ja noch im Master. Aber für ein UART-Programm bräuchte ich jetzt aus dem Stehgreif sicher min 1 ganzen Tag. Poti und PWM beides in 1 Std. Bei dem Stand des TO würde ich definitiv sagen, er soll UART gaaanz hinten anstellen, sonst ist die Wahrscheinlichkeit groß, dass er zum Schluss mit nichts dasteht.
Ich würde auch sagen UART zum Schluss. Poti digital macht alles nur unnötig noch komplizierter. Außerdem ist die Platine doch eh schon fertig. Wäre auch ganz interessant die mal zu sehen. Dann erübrigt sich die Frage nach der Art des Poti wohl.
Das Bluetooth Modul würde ich erstmal ohne Mikrocontroller an einem PC evaluieren. Du kannst es mit Hilfe eines USB-UART Kabels anschließen und mit Hammer Terminal ansteuern. Für die Gegenseite würde ich einen Laptop mit integriertem Bluetooth Adapter verwenden, oder ein Android Smartphone mit einer entsprechenden App. Mach Dich damit vertraut, wie man die Verbindungspartner konfiguriert und den Verbindungsaufbau auslöst. Lerne, zwischen Befehls-Modus und Daten-Modus zu unterscheiden und zu wechseln. Mach Dich damit vertraut, wo die Baudrate eine Rolle spielt, und wo nicht. Danach solltest du die serielle Schnittstelle des Mikrocontrollers ohne Bluetooth evaluieren. Verbinde den Mikrocontroller mittel USB-UART Kabel mit deinem PC und tausche Texte in beide Richtungen aus. Erst wenn du sowohl mit dem Bluetooth Modul als auch mit der UART Schnittstelle des Mikrocontrollers als auch mit der USB-UART Schnittstelle des PC vertraut bist, solltest du die Komponenten zusammenfügen. Immer schön Eins nach dem Anderen, sonst hast du zu viele Baustellen mit Un bekannten gleichzeitig. Andernfalls wirst du nicht imstande sein, Probleme strukturiert zu analysieren.
@ Phil P. OK. Ich versuchs nochmal von vorne: :-) Ist Deine Frage, so richtig formuliert? 1. Es gibt drei Einheiten: a) Den Port (DDR, PIN, PORT) b) Timer mit PWM und c) AD-Wandler 2. Ohne Näheres zu wissen, könnte man sich widersprüchliche Konfigurationen denken: a) Port steht auf Ausgang (wegen einer 1 im DDR), es soll aber eine AD-Wandlung stattfinden was eigentlich einen Eingang erfordert. b) Port steht auf Eingang (wegen einer 0 im DDR), es soll aber ein PWM-Signal ausgegeben werden, was eigentlich einen Ausgang erfordert. Wo kann ich nachlesen, wie dieser Widerspruch aufgelöst wird? Evtl. noch: Kann jemand kurz zusammenfassen, wie das geschieht, bevor ich nachlese? ---- Falls das Deine Frage war --- Was die PWM betrifft, ist auf Seite 133, Abschnitt 19.6 ein Blockschaltplan und ein Text vorhanden. Sinngemäss wird durch die Aktivierung der PWM-Erzeugung zwar das Ausgangssignal durch die Timerlogik selbstständig produziert. Dass Datenrichtungsregister aber muss per Programm auf Ausgang gesetzt werden; damit ist der Hauptwiderspruch aufgelöst. Aus Blockschaltplan und Text geht hervor, dass jedweder Wert in dem PORTx-Register durch die Timerlogik überschrieben wird, solange die PWM aktiviert ist. Mit der AD-Wandlung ist das sinngemäss eben so. Das Datenrichtungsregister muss per Programm auf Eingang gestellt werden; damit ist der Hauptwiderspruch aufgelöst. Tatsächlich verteilen sich die Informationen dazu über mehrere Textstellen. Darüber hinaus erfordern manche Informationen Transferleistungen, weil die hier gefragte negative Aussage nicht explizit da steht. Zunächst sind die Erklärung, das Blockschaltbild zu den Ports allgemein wichtig. Seite 100, Abschnitt 18.2 Ports as General Digital I/O Dann Blockschaltbild, Erklärung und Tabellen zu den Alternate-Functions. Seite 103. Die Tabellen im Zshg. mit dem Blockschaltbild sind von besonderer Bedeutung. Siehe etwa die Tabelle 18-2 und die Tabelle 18-8. Blockschaltbild und Tabellen erfordern insbesondere gute Grundkenntnisse der Digitaltechnik. Gatter, Flip-Flops und digital gesteuerte Schalter sollten klar sein. Im Zusammenhang mit letzterem sind noch die Erklärungen zum AD-Wandler wichtig. Seite 324 Abschnitt 28.9.6 Digital Input Disable Register Die Verständnisschwierigkeit bzw. die Forderung nach Transferleistungen besteht hier darin, dass die Steuersignale von Seite 104, Bild 18-5 zum grossen Teil keinem Kontrollregister ausdrücklich zugeordnet sind. Man sieht in Tabelle 18-8 und im Vergleich zu der Tabelle 18-5 das gewisse Peripherieeinheiten wie der AD-Wandler nur teilweise die Portkonfiguration beeinflussen während andere, wie die SPI-Schnittstelle ziemlich viel beeinflussen. Solltest Du Fragen danach haben, werden wir hier sicher versuchen sie zu beantworten. Aber: Wie gesagt: Stelle klare Fragen, bitte. Stelle, wie ich es oben getan habe, die Ausgangsvoraussetzungen dar. Stelle dann den Widerspruch klar, falls es um einen solchen geht. Gib die Quellen an (mit Seitenzahl) und zitiere gegebenenfalls. Das kann, wie zu sehen ist, durchaus mit einfachen Worten und Basisbegriffen geschehen. Aber es muss inhaltlich fokussiert sein, sonst gibt es Kuddelmuddel. So gesehen ist der Mangel an Deiner Frage, dass Du zu lakonisch formuliert hast. Denke daran, dass unklare Fragen neben dem ursprünglichen Widerspruch meist weitere Widersprüche aufwerfen. Oft, - und in diesem Fall -, sind sie offensichtlicher und elementarer als der eigentlich gemeinte Widerspruch. Das führte in Deinem Fall dazu, dass diese zusätzlichen Widersprüche als eigentliches Problem aufgefasst wurden. Also: Viel Erfolg.
STK500-Besitzer schrieb: > René H. schrieb: >> Wer sprach von problematisch? Es ist lediglich aufwändiger als Digital >> im Code. > > Du schlägst ein Digitalpoti vor. Das lässt darauf schließn, dass es > schwierig sei, den ADC zu bereiben. Du interpretierst und machst es zu meiner Aussage. Nicht korrekt! Grüsse, René
Hannes J. schrieb: > Ok. Und du hast tatsächlich den Eindruck es ist zielführend TO sich > direkt UART anschauen zu lassen? Hannes J. schrieb: > Lass eine > LED blinken. So gross unterscheidet sich das nicht. Hat er ersteres hinter sich gebracht, kennt er das Datenblatt. Macht er Zweiteres, kennt er Google. Meine Meinung. Grüsse, René PS: jemandem der ein PCB erstellt und selbst layoutet traue ich diese Aufgabe mit Datenblatt und Internet zu.
Beitrag #5660462 wurde von einem Moderator gelöscht.
René H. schrieb: > Du interpretierst und machst es zu meiner Aussage. Da liegst du richtig. Da die L;sung mit einem Poti schon von vorneherein festgelegt war, frage ich (mich) halt, warum auf einmal ein digitales Poti eingesetzt werden soll. Das ist doch voll am Thema vorbei.
Hallo, Hannes J. schrieb: > Aber für ein UART-Programm bräuchte ich jetzt aus dem Stehgreif > sicher min 1 ganzen Tag. Im AVR-GCC-Tutorial in diesem Forum findet man für die serielle Schnittstelle ein paar einfache Beispiele in C. Das geht von der Initialisierung der Schnittstelle über das Senden von Zeichen und Zeichenketten bis zum Empfangen einzelner Zeichen. Im einfachsten Fall braucht man nur einfach kopieren, im schlimmsten Fall muss man die Bezeichnungen von ein paar Registerbits anpassen. rhf
Moin, Ich würde BT auch ganz hintenan stellen. Es soll ja funktionieren. Also erstmal LED blinken lassen, Board in Betrieb nehmen. Da kann schon genug schief gehen. Wir dürfen Schaltplan und Layout ja auch nicht sehen, wenn das fehlerfrei ist fresse ich einen Besen. Dann PWM, LED dynamisch dimmen. Dann Motor mit FET anschliessen. Soll das bidirektional sein? Richtig Leistung oder einfach nur Drehzahl eines kleinen Motors? "Motor regeln (stellen)" kann von banal bis höchst anspruchsvoll alles sein. Dann Poti einlesen. Das ist mit ADC auch nicht komplizierter als z.B. mit einem Inkrementalgeber. Wenn das alles auf einem Board läuft, kann man das Zweite in Betrieb nehmen und per UART verbinden. Phil, bis hierhin machen das min. 20 Leute die hier geschrieben haben an max. einem Tag auf dem Steckbrett, eher schneller. Wenn Du das mit Deinem Kenntnisstand in 6 Wochen schaffst ist das ok. Erst dann würde ich BT angehen. Die verbinden sich nämlich nicht von alleine. Das eine Modul muss Master sein, die müssen sich pairen - das musst Du alles mit AT-Befehlen konfigurieren. Wer schon gut Ahnung hat aber mit diesem Modul noch nie gearbeitet hat, plant dafür nicht nur einen Tag ein. Ohne Vorkenntnisse eher Wochen. Wenn es zeitlich aber nicht mehr passt, kannst Du das weglassen. Dann läuft das ganze Moped eben per Kabel nur über Uart. Das ist dann Plan B. Mach das schrittweise, so daß es wenigstens teilweise funktioniert. Nicht, daß Du am Ende dastehst mit "BT geht manschmal, PWM macht noch Blödsinn aber das mit dem Poti funktioniert im Prinzip". Dann läuft da nämlich gar nichts und Du hättest bewiesen, daß Du nicht systematisch an sowas herangehen kannst. Gruß, Norbert
René H. schrieb: > PS: jemandem der ein PCB erstellt und selbst layoutet traue ich diese > Aufgabe mit Datenblatt und Internet zu. Dem Thread-Verlauf ist eindeutig zu entnehmen, dass ihm das eben nicht zuzutrauen ist. Ich denke da sind sich hier abgesehen von dir alle einig.
Roland F. schrieb: > Hallo, > Hannes J. schrieb: >> Aber für ein UART-Programm bräuchte ich jetzt aus dem Stehgreif >> sicher min 1 ganzen Tag. > > Im AVR-GCC-Tutorial in diesem Forum findet man für die serielle > Schnittstelle ein paar einfache Beispiele in C. Das geht von der > Initialisierung der Schnittstelle über das Senden von Zeichen und > Zeichenketten bis zum Empfangen einzelner Zeichen. > Im einfachsten Fall braucht man nur einfach kopieren, im schlimmsten > Fall muss man die Bezeichnungen von ein paar Registerbits anpassen. > > rhf Mag sein. Ich mach das lieber direkt mit dem Datenblatt und vergleiche hinterher im Zweifel mit Tutorials. Ich will es ja können und nicht kopieren. Außerdem haben Tutorials auch gerne mal Fehler. René H. schrieb: > Hannes J. schrieb: >> Ok. Und du hast tatsächlich den Eindruck es ist zielführend TO sich >> direkt UART anschauen zu lassen? > > Hannes J. schrieb: >> Lass eine >> LED blinken. > > So gross unterscheidet sich das nicht. Hat er ersteres hinter sich > gebracht, kennt er das Datenblatt. Macht er Zweiteres, kennt er Google. > > Meine Meinung. Trollst du??
Phil P. schrieb: > Wir mussten schon selbst eine Platine entwerfen und nun mit dem > Atmega328 arbeiten. Max M. schrieb: > Dem Thread-Verlauf ist eindeutig zu entnehmen, dass ihm das eben nicht > zuzutrauen ist. Ich denke da sind sich hier abgesehen von dir alle > einig. Tja, dann erzählte er falsch. Es steht zumindest im Eröffnungspost so. Ich unterstelle ihm nichts. Du aber schon. Grüsse, René
René H. schrieb: > Es steht zumindest im Eröffnungspost so. Wie wär's mit lesen lernen? René H. schrieb: > Phil P. schrieb: >> Wir mussten schon selbst eine Platine entwerfen Das kann bedeuten, dass mit "wir" eine Gruppe gemeinsam eine Platine entwickelte. In diesem Fall war der TE - nach dessen Selbstdarstellung zu urteilen - bestenfalls Komparse. "Wir" kann auch bedeuten, dass jeder in der Gruppe seine eigene Platine zu entwickeln hatte, das ist möglich, aber in diesem Fall unwahrscheinlich. Selbst eine Platine zu entwickeln führt zwangweise zu intensiverer Beschäftigung mit der zu verbauenden Hardware, davon ist hier nichts zu bemerken. > Ich unterstelle ihm nichts. Du unterstellst Möglichkeit zwei.
Hannes J. schrieb: > Mag sein. Ich mach das lieber direkt mit dem Datenblatt und vergleiche > hinterher im Zweifel mit Tutorials. Ich will es ja können und nicht > kopieren. Es kommt immer darauf an, was man bezweckt. Ich arbeite mit Bascom, da hat man die Wahl. Bei Uart kann man es sich supereinfach machen. $baud = 57600 Print "Hello World" Das wars. Man muss aber wissen, daß Bascom dann einfach wartet, bis alles gesendet ist. Wenn ich nur schnell etwas debuggen will oder das Ganze ohnehin zeitunkritisch ist, kann man das so machen. Was da im Hintergrund genau passiert, ist mir ansonsten wurscht. Daß mir das alles Timing versauen kann, muß man aber im Hinterkopf haben. Ebenso bei einem Tutorial oder einer Lib, bei der man nicht wirklich weiß was sie macht (die Komfortbefehle in Bascom sind ja nichts Anderes). Geht es um die Wurst, kramt man eben das Datenblatt raus und macht alles zu Fuß. Dann hat man auch bei Bascom alles voll im Griff. Der T.O. muß zum Ziel kommen. Da könnte es legitim sein, den einfachen Weg zu gehen. Ich wollte schon fragen, ob Bascom eine Alternative wäre. Zumindest Poti einlesen und per Uart den Wert senden wäre damit ein Witz. ---------------------- $baud = 115200 '(meist Standard für BT) Config Adc = Single, Prescaler = Auto Dim Poti As Word Do Poti = Getadc(0) '(Oder welcher ADC auch immer) Printbin Poti Wait 1 Loop ---------------------- Das sendet den Wert vom Poti (0...1023) binär per Uart, also 2 Byte. Etwa jede Sekunde plus die Zeit vom Senden der Bytes und büschn ADC (da wird auch gewartet). Für die PWM taugt der Komfort von Bascom aber nicht wirklich. Dafür gibt es mittlerweile zu viele Modi und die Doku ist grottig. Das war auf die ersten AT908515 o.Ä. zugeschnitten und wurde dann nicht großartig erweitert. Allerdings ist das auch ziemlich umfangreich. Wenn es nur um eine einfache PWM geht, könnte man das auch machen, bevor er sich mit seiner Datenblattallergie durch die Timer-PWM kämpft. Aber auch das ist im Datenblatt eigentlich gut beschrieben. Alles komplett von Grund auf sauber in C nach Datenblatt mit allen Registern zu Fuß - das kriegt er in 6 Wochen nicht hin. Ich stelle mir gerade die Fragen vor: "Kann mir mal einer die verschiedenen PWM-Modi von Timer1 erklären und wie die genau funktionieren? Das Datenblatt verstehe ich nicht." Wenn das mit den Ports jetzt verstanden wurde, wieviel % sind das? Keine 5%, eher deutlich weniger. Gruß, Norbert
MWS schrieb: > Das kann bedeuten, dass mit "wir" eine Gruppe gemeinsam eine Platine > entwickelte. In diesem Fall war der TE - nach dessen Selbstdarstellung > zu urteilen - bestenfalls Komparse. Mag sein, dann ist aber zu erwarten dass das „wir“ gemeinsam an der Software arbeitet. MWS schrieb: > "Wir" kann auch bedeuten, dass jeder in der Gruppe seine eigene Platine > zu entwickeln hatte, das ist möglich, aber in diesem Fall > unwahrscheinlich. Selbst eine Platine zu entwickeln führt zwangweise zu > intensiverer Beschäftigung mit der zu verbauenden Hardware, davon ist > hier nichts zu bemerken. Eben. Welches lesen muss ich jetzt genau lernen ;-). Grüsse, René
René H. schrieb: > Ich unterstelle ihm nichts. Du aber schon. > > Grüsse, > René Also sorry aber wenn das kein trollen ist, was denn dann? Natürlich unterstellst du genauso, und zwar dass er nur das geringste Verständnis von der Materie hätte. Seltsamer Weise sieht das jeder einzelne hier anders als du und das sind so einige. Was ist los mit dir? Sagst du deinem Sohn auch er soll mit dem Fahrrad am besten direkt mal über eine Sprungschanze fahren, weil er ja mal gesehen hat wie sich ein Rad dreht, obwohl 30 Leute daneben stehen und drauf hinweisen dass er wohl erstmal einfach versuchen sollte geradeaus zu fahren?
Mehr als 180 Post und die meisten eher überflüssig und spekulativ. @Phil Das wird nichts mehr. Ich würde nochmal neu starten und die Erfahrung in diesem Thread dazu nutzen in einem (oder nacheinander auch mehreren) neuen Thread, anständig vorbereitete Fragen zu eng abgegrenzten Teil-Problemen neu zu stellen. Das heißt nicht, dass in den jeweiligen Threads kein Überblick auf das Gesamtsystem gegeben werden sollte. Den "nächsten" Thread zum nächsten Problem dann auch erst starten, wenn das vorhergehende erfolgreich gelöst ist.
René H. schrieb: > Mag sein, dann ist aber zu erwarten dass das „wir“ gemeinsam an der > Software arbeitet. Nein. Wenn man den Eröffnungspost betrachtet, kann man lediglich annehmen, dass das vorher erstellte Board für genanntes Projekt Verwendung findet. Es ergibt Sinn gemeinsam eine Platine zu entwickeln, um damit sicherzustellen, dass jeder Teilnehmer zum Schluss eine funktionierende Hardware vorliegen hat. Gleichfalls ist es sinnvoll, wenn jeder Teilnehmer sein Projekt selbst abarbeitet, damit sein Wissenstand fetgestellt werden kann. Natürlich kann Euch der TE auch noch anlügen und es ist eine Gruppenaufgabe, wobei es sein Job ist, ein Tränchen auszudrücken um damit externe Helferlein zu mobilisieren. Weitere Schlüsse können nicht gezogen werden. Ergo: Du unterstellst erneut. > Eben. Welches lesen muss ich jetzt genau lernen ;-). Wo Du schon dabei bist, lern' auch ein wenig logisch zu denken. Hilft im Umgang mit Mikrocontrollern ungemein.
Max M. schrieb: > Also sorry aber wenn das kein trollen ist, was denn dann Ist ok, wenn meine Absicht Trollen wäre, mache ich das sicher nicht mit meinem Rufzeichen. MWS schrieb: > Wo Du schon dabei bist, lern' auch ein wenig logisch zu denken. Ich nehm mir den Rat zu Herzen, Danke. Es Grüsst, René
nachdem man sich die letzten 20 Beiträge mal wieder mit sich selbst beschäftigt hat, wäre es an der Zeit, mal wieder auf einen Beitrag des TO zu warten! Vielleicht hat er es ja mittlerweile geschafft, einen Pin/PIN "an zu machen" und ist nun für weitere Untaten bereit... Gruß Rainer
Rainer V. schrieb: > wäre es an der Zeit, mal wieder auf einen Beitrag des > TO zu warten Das tun wir ja auch seit etwa 21 Stunden, nur du hast die Ruhe gestört.
Uups, sorry...aber leider nur eure :-)
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.