Guten Abend, ich versuche aktuell einen PIN am Attiny85 mit einer PWM Frequenz von ca 200Hz einzustellen. Ich habe online viel gelesen, jedoch verstehe ich nicht ganz was ich da Code mäßig abtippen muss. Kann mir da jemand mit dem Code helfen und evtl. auch erklären ? Hauptsächlich denke ich sollte eine Veränderung des Prescalers reichen und das am besten an Timer1, da ja millis und so weiter von Timer0 abhängig sind. Vielen Dank für eure Zeit!
:
Bearbeitet durch User
Vielleicht möchtest du das Datenblatt des Tiny85 befragen. Ich glaube kaum, dass hier irgendjemand viel mehr über den Tiny weiß, als da drin steht. Burak K. schrieb: > da ja millis und so weiter von Timer0 > abhängig sind. Arduino? Die Antwort heißt wohl, ja... Und dennoch: Möchtest du abweichen, dann Datenblatt!
Burak K. schrieb: > Ich habe online viel gelesen, jedoch verstehe ich nicht ganz was ich da > Code mäßig abtippen muss. Soweit will ich es nicht treiben. Aber wie man niedrige Frequenzen mit hoher Auflösung und variablem Tastverhältnis erzeugen kann, kannst Du hier sehen und vielleicht auch verstehen: http://mino-elektronik.de/Generator/takte_impulse.htm
Burak K. schrieb: > Guten Abend, > ich versuche aktuell einen PIN am Attiny85 mit einer PWM Frequenz von ca > 200Hz einzustellen. Hier wird das gemacht, old school mit direktem Registerzugriff. > Ich habe online viel gelesen, jedoch verstehe ich nicht ganz was ich da > Code mäßig abtippen muss. Soso, abtippen. Die meisten Leute wollen eher verstehen, was dabei abläuft. Das "Abtippen" ist die allerkleinste Arbeit. Beitrag "Re: Terminator-LED"
launcher schrieb: > Abtippen ist gegenüber Copy&Paste schon eine Entwicklung!? Ja sicher, die anderen gucken nur noch Youtube Videos :-)
Die Registerbeschreibung im Datenblatt sollte alle Fragen beantworten. Such Dir einen PWM-Mode raus und stelle dann den Prescaler so ein, daß 200Hz rauskommen. Wenn es genau 200Hz sein sollen, mußt Du den Endwert der PWM verkürzen. Ansonsten nimm einfach den Prescaler, wo bei 8Bit (Endwert = 255) 200Hz..400Hz rauskommen.
Vielen Dank erstmal. Ne ne ich will wirklich das Thema schon verstehen. Abtippen ist ein doofes Wort dafür. Was ich hauptsächlich auch meine ist das ich die Syntax nicht ganz verstehe. Hab mir das Datenblatt angeschaut, jedoch merke ich das ich mit so etwas noch nie gearbeitet habe. Ich programmiere echt viel aber nicht auf Registerebene.
Burak K. schrieb: > Was ich hauptsächlich auch meine ist das ich die Syntax nicht ganz > verstehe. Die Grundlagen der Programmiersprache kannst du zum Beispiel hier gut lernen: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/ Ich empfehle Dir, auf einem PC zu üben und erst dann Mikrocontroller zu programmieren. Wenn ich unsicher bin, mache ich das heute noch so mit einzelnen Programmteilen - vor allem bei C++ wo ich noch etwas unsicher bin. Darüber hinaus gibt es einige Spezialitäten auf Mikrocontrollern. Dazu würde Dir die Artikelsammlung als Einstiegspunkt empfehlen: https://www.mikrocontroller.net/articles/Kategorie:Avr-gcc und die Doku der AVR libc: https://www.nongnu.org/avr-libc/user-manual/pages.html Alles, was da steht, trifft auch auf Arduino zu, weil Arduino darauf aufbaut. Auch ich habe mich vor ein paar Jahren darum bemüht, eine Einsteiger-Anleitung zu schreiben, die deutlich tiefer geht, als fertige Module zusammen zu stecken und fertige Libraries zusammen zu klöppeln: http://stefanfrings.de/mikrocontroller_buch/index.html Dort wird viel mit dem Datenblatt gearbeitet, ich denke, das wird für Dich hilfreich sein. PWM wird in Band 3 Kapitel 7.3 thematisiert, auch deine Sache bezüglich der Festlegung einer bestimmten Frequenz. Aber fange bitte vorne an, sonst verstehst du nur die Hälfte. Des Weiteren bekommst du hier am ehesten Hilfe, indem du konkrete Fragen stellst. Was verstehst du denn "an der Syntax" nicht? > Ich programmiere echt viel aber nicht auf Registerebene. Wenn das so bleiben soll, dann musst du dich auf die Basics beschränken, die im Arduino Framework vorgesehen sind. Frage dich selbst: Will ich für immer nur fertige Legosteine zusammen stecken oder bearbeite ich sie mit Säge, Bohrer, Kleber, Feile, etc. Mein Sohn hat schon sehr früh angefangen, seine Legosteine zu modifizieren und ich finde das völlig in Ordnung.
Stefanus F. schrieb: > Ja sicher, die anderen gucken nur noch Youtube Videos :-) https://www.youtube.com/watch?v=O_Yqf_cugwE
Stefanus F. schrieb: > Die Grundlagen der Programmiersprache kannst du zum Beispiel hier gut > lernen: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/ Davon möchte ich vorsichtig abraten... 1. es ist ein C, kein C++ Buch. Hilft also in der Arduino Welt kaum weiter 2. es sind da einige grobe Schnitzer drin, die einem gründlich den Tag versauen können, wenn man sich darauf verlässt und so das falsche lernt Das meiste, in dem Buch, ist völlig ok. Aber die paar kritischen Stellen, sind richtig böse. Es ist also eher ein Buch, um die Wachsamkeit zu schulen, nicht so sehr um die C++ Kenntnisse zu verbessern.
Arduino Fanboy D. schrieb: > 1. es ist ein C, kein C++ Buch. Hilft also in der Arduino Welt kaum > weiter Ja für Arduino muss man eigentlich erst C und dann C++ obendrauf lernen. Kannst du dafür passende Literatur empfehlen? Die zwei Bücher, mit denen ich es gelernt habe, gibt es nicht mehr zu kaufen.
Na ja, die Fragestellung hat jetzt mal genau überhaupt nichts mit C++ zu tun. Dem TO ist vermutlich mit jedem Buch, das irgendwelche Programmiergrundlagen behandelt, geholfen. Vielleicht hilft aber auch das hier: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR Oliver
Oliver S. schrieb: > Na ja, die Fragestellung hat jetzt mal genau überhaupt nichts mit C++ zu > tun. Dem TO ist vermutlich mit jedem Buch, das irgendwelche > Programmiergrundlagen behandelt, geholfen. Vermutlich... stimmt das. Aber dennoch ist es sicherlich kein Fehler, genau die Sprache zu lernen, welche man auch verwendet. Stefanus F. schrieb: > Kannst du dafür passende Literatur empfehlen? Ein bisschen sollt man darauf achten, dass min. C++17 mit erfasst wird. Arduino ist offiziell noch auf C++11. Aber C++17 wird in Bälde unterstützt.(bei mir jetzt schon) Also der erste Vorschlag: Die Literatur vom C++ Erfinder! Leider etwas trocken und unübersichtlich. Es werden recht tiefgreifende Grundlagen erwartet, sonst schwer zu verstehen. Wenn man schon in etwa weiß, wie der Hase läuft, dann ist man damit gut bedient. Und der Zweite: Dieses ist da schon eher für Anfänger geeignet. http://www.cppbuch.de/ Die erste Hälfte kümmert sich um OOP und sonstige C++ Grundlagen. Die zweite Hälfte um die STL und andere Erweiterungen. Die STL ist für 8Bit µC eher uninteressant. Bei den 32Bittern steht sie meist/immer zur Verfügung Ansonsten gibts noch einige weiter führende Bücher zum Thema Template Design, und auch zu den OOP Design Pattern.
Arduino Fanboy D. schrieb: > Ein bisschen sollt man darauf achten, dass min. C++17 mit erfasst wird. Ich denke nicht, dass man die ganzen neuen Features alle kennen und mitmachen muss, um erfolgreich programmieren zu können. Die Sprache hatte schon vor 20 Jahren alles, was man braucht. Seit dem kamen Sachen hinzu, die einem das Leben erleichtern sollen, aber es geht auch ohne sie.
Hach... Wenn man schon lernt, dann doch bitte das "bessere". Ein veraltetes Buch zu kaufen, nunja.... Aber an sich stimmt zumindest, dass es einige Zeit dauert, bis die Änderungen in den Köpfen angekommen ist. Es steht nicht zu erwarten, dass so nützliche (C++11) Features, wie Range-Based-For-Loops, die vielfältige using Anwendung, auto, constexpr usw. wieder abgeschafft werden. Ja, auto ist so ein Kamerad, welcher etwas mit Vorsicht zu genießen ist. auto wurde in C++17/C++14 nochmal deutlich erweitert. auto und decltype() können einem viel Template Gewurstel ersparen Stefanus F. schrieb: > Die Sprache hatte schon vor 20 Jahren alles, was man braucht. Das möchte ich nicht unterschreiben!
Arduino Fanboy D. schrieb: > Wenn man schon lernt, dann doch bitte das "bessere". > Ein veraltetes Buch zu kaufen, nunja.... Die alten Bücher über C/C++ können gar nicht veralten, weil die Eigenschaften der Sprache nie verändert wurden (mal abgesehen von ganz wenigen Sonderfällen). Es sind nur neue Features hinzu gekommen. >> Die Sprache hatte schon vor 20 Jahren alles, was man braucht. > Das möchte ich nicht unterschreiben! Jeder darf natürlich eine andere Meinung haben. Mir ist nicht bekannt, dass ich in den vergangenen 25 Jahren jemals auf irgendein Problem gestoßen wäre, dessen Lösung durch die Programmiersprache C/C++ behindert oder verhindert wurde. Nicht ein einziges. Deswegen bin ich damit sehr zufrieden. Es gibt zweifellos schönere Programmiersprachen, das will ich gar nicht bestreiten. Ich muss dazu sagen, dass meine C/C++ Kenntnisse weitgehend beim Stand von 1999 hängen geblieben sind, weil ich seit 2000 mein Geld mit anderen Programmiersprachen verdiene. C++ ist nur noch Hobby. Du kannst ja mal nach QtWebApp googeln, dann siehst du dass man auch mit einem Bruchteil des Sprachumfangs weit kommen kann. "Wir greifen hier auf die von Stefan Frings entwickelte QtWebApp-Bibliothek zurück, die sich als Quasistandard im Bereich Webserver für Qt etabliert hat." (entwickler.de Magazin)
Ja gut... Es kann wirklich sein, dass dich diese Neuerungen nicht interessieren. Aber eine Empfehlung, für Anfänger sollte das dann aus meiner Sicht nicht sein. Beispiel: Der schon genannte Range-Based-For-Loop
1 | const byte pins[] {3,5,9}; |
2 | |
3 | for(byte p:pins) pinMode(p,INPUT) |
Auf den ESP geht dann auch
1 | for(byte p: {3,5,9}) pinMode(p,INPUT); |
Das ist doch viel einfacher, als das Gehampel mit i und sizeof(). Nahezu ideal! Oder using...
1 | using Buffer = int[20]; |
2 | |
3 | Buffer buffer; |
4 | |
5 | void druckeEs(Buffer &buffer) |
6 | {
|
7 | for(auto value:buffer) Serial.print(value); |
8 | }
|
9 | |
10 | // in einer Funktion
|
11 | druckeEs(buffer); |
Fells man dann meint, dass int jetzt nicht der Richtige Datentype für den Buffer ist, dann ist es nur eine einzige Stelle, die man anfassen muss
1 | using Buffer = float[125]; |
Arduino Fanboy D. schrieb: > Es kann wirklich sein, dass dich diese Neuerungen nicht interessieren. > Aber eine Empfehlung, für Anfänger sollte das dann aus meiner Sicht > nicht sein. Natürlich, Empfehlungen sind immer gut. Welches Buch war das doch gleich? Sorry, aber für den Fragesteller läuft das gerade sicher nicht allzu hilfreich. Wir schwafeln hier nur rum, das hilft ihm nicht weiter. Ich halte mich jetzt besser raus, bin ja mit daran Schuld.
Beitrag #5891495 wurde von einem Moderator gelöscht.
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.