Hallo liebe µC-Freunde! Ich stehe vor einem Problem und brauche bitte eure Hilfe: Die AVR-Platine STK500 möchte ich zum ersten Mal in Betrieb nehmen. Als Rechner verwende ich den Atmega16. Im Anhang habe ich ein C-Programm geschieben unter der Verwendung des µC 8051 und deren Befehle. Dieses Programm lässt die LED's auf dem Demoboard im zeitlichen Abstand von 0,5 s blinken. Nun möchte ich aber auch, dass das Programm unter der STK500 Platine und dem Atmega16 Rechner angepasst wird. Dabei möchte ich es so erstellen, dass man es auch leicht an andere Rechner anpassen kann. Wie ist das Problem zu lösen bzw. wie sieht dann der Pseudocode & C-Code aus? Leider habe ich bisher überhaupt keine Erfahrung mit AVR, sondern nur mit Intel 8051. Ich quäle mich durch die engl. Anleitung durch - nur leider verstehe ich nicht gerade viel davon. Ich würde mich über eure Unterstützung sehr freuen. Bei Problemen mit 8051 könnt ihr euch gerne an mich wenden. Da denke ich, habe ich es gut drauf :-) Vielen Dank!
Ganz ehrlich, aus reiner Interesse und Spaß! Es schadet nie sein Wissen zu erweitern!
Eric, der Code sieht nach einem Assembler Code aus der in C umgeschrieben wurde. Warum kümmerst du dich um den Stack in C ? Mach dich mit dem Timertutorial und dem WINAVR auf dem Weg. Du wirst nicht umhinkommen dir die Grundlagen anzusehen. Wo stehst du den Wissenstechnisch ?
Joe wrote: > Eric, der Code sieht nach einem Assembler Code aus der in C > umgeschrieben wurde. > > Warum kümmerst du dich um den Stack in C ? > > Mach dich mit dem Timertutorial und dem WINAVR auf dem Weg. Du wirst > nicht umhinkommen dir die Grundlagen anzusehen. > > Wo stehst du den Wissenstechnisch ? Das ist auch ein Assembler-Code der in C umgeschrieben wurde. Den Assembler Code kann ich dir gerne auch zukommen lassen. Es ist sehr interessant das auch einmal in C zu machen und es anschließend zu testen und es funktioniert. Sorry, aber mein Wissen was AVR angeht ist leider gleich 0,5%. Und engl. verstehe ich leider auch nicht so gut. Mit dem AVR komme ich irgendwie nicht ganz so klar.
Ich stelle die Frage mal anders, kannst du C ?? Also bei mir würde die gleiche Aufgabe, respektive Lösung etwas anders aussehen. Allerdings kenne ich die 8x51 Derivate in ASM und C aus dem FF. Ebenso AVR's und andere... Also, noch einmal die Frage: Wo stehst du. Das Tutorial ist doch in deutsch. Wo ist das Problem ? Wenn du die Timer im 8051 verstanden hast dann kannst du auch die Timer des AVR verstehen. Ich liefer dir jedenfalls keine Übersetzung frei Haus, dabei lernt man nix.
Joe wrote: > Ich stelle die Frage mal anders, kannst du C ?? Also bei mir würde die > gleiche Aufgabe, respektive Lösung etwas anders aussehen. Allerdings > kenne ich die 8x51 Derivate in ASM und C aus dem FF. > > Ebenso AVR's und andere... Also, noch einmal die Frage: Wo stehst du. > > Das Tutorial ist doch in deutsch. Wo ist das Problem ? Wenn du die Timer > im 8051 verstanden hast dann kannst du auch die Timer des AVR verstehen. > > Ich liefer dir jedenfalls keine Übersetzung frei Haus, dabei lernt man > nix. Ja C kann ich mehr oder weniger, allerdings nicht aus dem FF - nur die Grundlagen. Ich finde kein Turtorial des Atmega16 und der STK500 Platine auf deutsch. Alles ist nur auf engl. in der Atmel HP und sonst wo. Den Timer des 8051 habe ich schon ein wenig verstanden, aber auch nicht perfekt. Wie soll es denn dann beim AVR klappen? Schade das du mir keine Übersetzung frei Haus lieferst. Somit stehe ich wieder bei dem gleichen Problem wie zuvor! Mir einer Lösung kann ich es viel besser verstehen, nachvollziehen und vergleichen. Ich habe mir hier schon genug den Kopf zerbrochen und deshalb bitte ich euch auch um Hilfe.
Zum Thema AVR-Timer findest Du auch hier was: Beitrag "Die genaue Sekunde / RTC" Peter P.S.: In einem C-Programm den Stack zu setzen ist ober-pfui. Mit viel Glück passiert nichts schlimmes.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#8-Bit_Timer.2FCounter Hier gibt es genug in deutscher Sprache. Zum Stack kann ich Peter nur beipflichten. > Den Timer des 8051 habe ich schon ein wenig verstanden, aber auch nicht > perfekt. Wie soll es denn dann beim AVR klappen? Und genau hier steckt das Problem, du gibst auf halber Strecke auf. Lern erst einmal einen Controller kennen und dann den anderen. Ansonsten kannst du keinen von beiden. Sorry, ist aber der beste Rat den ich geben kann.
Peter Dannegger wrote: > Zum Thema AVR-Timer findest Du auch hier was: > > Beitrag "Die genaue Sekunde / RTC" > > > Peter > > P.S.: > In einem C-Programm den Stack zu setzen ist ober-pfui. > Mit viel Glück passiert nichts schlimmes. Danke für den Link, hilft mir bei meinem Problem nicht. Den Stack zu setzten ist ganz ok. Es kann auch nie was schlimmes dabei passieren!
Wie kann ich das so erstellen, dass man es auch leicht an andere Rechner anpassen kann? Das muss doch irgendwie mit "define" gehen. Es muss irgendwie in der Main die 8051 Codes in AVR umdefiniert werden oder umgekehrt. Wie geht das genau?
@Joe Für was gibts es überhaupt Foren, wenn man keine Hilfe gibt, sondern nur sein dummen Senf dazugibt, vonwegen Bücher lesen usw.? Was soll das alles? Solche Leute wie ihr habt hier nichts zu suchen. Hilft den Leuten bei Problemen und kritisiert nicht nur. Ihr versteht wahrscheinlich selbst nichts davon und meint aber immrt das ihr das könnt. Zeigt doch mal was ihr könnt! Löst doch dieses Problem und erklärt es dem Eric. Macht einmal selbst das PseudoCode und das C-File das er gerne wissen würde. So lernt er auch am besten, von Beispielen und Erklärungen. Ich bin Prof. und weiß von was ich rede Kinder. @Peter Stack ist von Eric ok. Ich weiß nicht was du dagegen hast, vonwegen Ober-Pfui. Wieder einmal ein Bsp. für dummes Geschwätz. Hier kann und wird auch nichts passieren auch bei viel Pech. Vollkommen richtig gelöst von Eric! Grüße Tee
Prof. Dr. Tee wrote: > @Peter > Stack ist von Eric ok. Ich weiß nicht was du dagegen hast, vonwegen > Ober-Pfui. Wieder einmal ein Bsp. für dummes Geschwätz. Hier kann und > wird auch nichts passieren auch bei viel Pech. Vollkommen richtig gelöst > von Eric! Quatsch mit Soße ! Dein dummes Geschwätz beweist, Du hast keinerlei Ahnung von C. Der Stack ist ganz allein Hoheitsgebiet des Linkers und niemand hat ihm da reinzupfuschen ! Sobald der Linker eine andere Auffassung hat als Du, wo Variablen und wo der Stack liegen, krachts. Durch das Verbiegen des Stacks überschreibst Du dann munter Deine Variablen mit Returnadressen und umgekehrt. Peter
Eric Schmitz wrote: > Danke für den Link, hilft mir bei meinem Problem nicht. Wenn Du keine Lust hast, Dich mit Beispielen zu beschäftigen, wie willst du dann etwas lernen ? Das Beispiel paßt sehr wohl. Die 1s auf 0,5s zu ändern ist ein guter Weg festzustellen, ob man es auch verstanden hat. > Den Stack zu setzten ist ganz ok. Es kann auch nie was schlimmes dabei > passieren! Es ist ganz und garnicht o.k. ! Siehe Tee-Antwort. Peter
Moment! Bitte warten, bis ich mein Popcorn geholt habe.... Die Schlacht möge beginnen. >-]
Eric Schmitz wrote: > Wie kann ich das so erstellen, dass man es auch leicht an andere > Rechner anpassen kann? Das muss doch irgendwie mit "define" gehen. > Es muss irgendwie in der Main die 8051 Codes in AVR umdefiniert werden > oder umgekehrt. Wie geht das genau? Grob gesagt bestehen Programme aus Algorithmen und Hardwarezugriffen (Timer, Ports, Interrupts). Algorithmen sind hardwareunabhängig und laufen ohne Änderung auf jeder CPU. Der Complier setzt sie einfach in die entsprechenden Maschinenbefehle um. Hardwarezugriffe mußt Du auf jeder CPU anpassen und zwar durch Lesen des Datenblattes. Z.B. die Timer werden aufm AVR völlig anders angesprochen als aufm 8051. Nach Defines zu weinen hilft da in keinster Weise weiter. Peter
> @Joe Für was gibts es überhaupt Foren, wenn man keine Hilfe gibt, > sondern nur sein dummen Senf dazugibt... Dumm ist der der dummes tut ;-)) > Den Timer des 8051 habe ich schon ein wenig verstanden, aber auch nicht > perfekt. Wie soll es denn dann beim AVR klappen? Nix verstanden aber schon den nächsten MC. Ich hatte Ihm geholfen, nur nicht so wie man es gerne hätte. Herr Professor, ich glaub du hast einem im Tee!! Bring deinen Studenten mal eine Sache richtig bei und gehe dann über zu anderen Controllern. Ansonsten produzierst du nen Haufen unfähiger Ing. Das scheint allerdings bereits etablierter Lehralltag zu sein (ich nenne es Murx). Ebenso sollte man erst ASM & C richtig erlernen. Bei vernünftigen Fragen habe ich bisher immer geholfen !!! Arbeit nehme ich keinem ab.
So, jetzt muss ich auch mal meinen Senf los werden.... Prof. Dr. Tee wrote: > @Joe > Für was gibts es überhaupt Foren, wenn man keine Hilfe gibt, sondern nur > sein dummen Senf dazugibt, Hilfe bekommt man in diesem Forum schon. Aber man darf nicht erwarten, daß einem alles vorgekaut wird. Eigeninitiative ist hier oberstes Gebot: Wie man in den Wald hineinruft, so schallt es hinaus. > vonwegen Bücher lesen usw.? Was soll das > alles? Als Prof. sollten gerade Sie wissen, daß Bücher eine der wichtigsten Informationsquellen waren und sind. Da frage ich mich auch, was das soll. > Solche Leute wie ihr habt hier nichts zu suchen. Hilft den Leuten > bei Problemen und kritisiert nicht nur. Manchmal ist konstruktive Kritik das beste Lehrmittel. Nur aus Fehlern lernt man wirklich, das hat die Geschichte uns schon oft genug gelehrt. Und Kritik ist ein Anstoss über seine Fehler nachzudenken. > Ihr versteht wahrscheinlich > selbst nichts davon und meint aber immrt das ihr das könnt. Zeigt doch > mal was ihr könnt! Niemand weiss alles, das gebe ich zu. Aber oft kann man mit dem geringen Wissen trotzdem die richtigen Hinweise geben. Allerdings sollte man dann auch sagen, daß man sich nicht wirklich sicher ist. > Löst doch dieses Problem und erklärt es dem Eric. > Macht einmal selbst das PseudoCode und das C-File das er gerne wissen > würde. So lernt er auch am besten, von Beispielen und Erklärungen. Es gibt diverse Studien die belegen, daß eigene Aktivität den größten Lernerfolg liefert. "Learning by doing" geht also über alle anderen Lernmethoden. Beispiele und Erklärungen können nur die Grundlage bilden, die allerdings noch gefestigt werden muss. Zudem hat hier wahrscheinlich keiner Lust und/oder Zeit Eric alles vorzukauen. > Ich bin Prof. und weiß von was ich rede Kinder. Bei mir zeichnet sich eine Person durch ihre Taten und nicht durch ihren Titel aus. Ich hab einige Prof. im Bekanntenkreis und kann nur sagen: Das sind auch nur Menschen mit allen Vor- und Nachteilen. Soviel von meiner Seite. Gruß, SIGINT P.S.: @Eric: Der Pseudocode, der in deinem Beispiel steht scheint doch für die AVRs auch schon ganz brauchbar zu sein. Wenn du dich wirklich mit C etwas auskennst, dann solltest du den doch umsetzen können. Ein C-Programm, das auf vielen verschiedenen Hardware-Architekturen läuft ist relativ kompliziert. Für den Linux-Kernel z.B. gibt es ja automake und Konsorten (damit kenn ich mich aber leider nicht aus). Die Platformunabhängigkeit wird durch C-Dateien hergestellt, die die Rechnerarchitekur gegenüber den Linux-Kernel verbergen. Theoretisch geht sowas auch bei Mikrocontrollern... dabei geht aber etwas Rechenleistung und vor allen Funktionalität verloren. Wenn ich dir aber einen guten Tipp geben darf: Lern Englisch. Viele gute Seiten und praktisch alle Datenblätter sind in Englisch verfasst. So kompliziert ist das eigentlich nicht... ein Wörterbuch sollte man aber immer griffbereit haben. Z.B.: http://dict.leo.org/
@ Joe >Ansonsten produzierst du nen Haufen unfähiger Ing. Das scheint >allerdings bereits etablierter Lehralltag zu sein (ich nenne es Murx). Marx ist die Theorie, Murks die Praxis. ;-) Falk
@Sigint >Als Prof. sollten gerade Sie wissen, daß Bücher eine der wichtigsten >Informationsquellen waren und sind. Glaub nur nicht alles, was einer so als Titel angibt. Sein Schreibstil hört sich eher nach abgebrochener Hauptschule an. "Prof. Dr." würde ein wirklicher Prof niemals schreiben, also nur ein ganz gewöhnlicher Troll.
Sigint 112 wrote: > P.S.: @Eric: > > Der Pseudocode, der in deinem Beispiel steht scheint doch für die AVRs > auch schon ganz brauchbar zu sein. Wenn du dich wirklich mit C etwas > auskennst, dann solltest du den doch umsetzen können. Ein C-Programm, > das auf vielen verschiedenen Hardware-Architekturen läuft ist relativ > kompliziert. Für den Linux-Kernel z.B. gibt es ja automake und Konsorten > (damit kenn ich mich aber leider nicht aus). Die Platformunabhängigkeit > wird durch C-Dateien hergestellt, die die Rechnerarchitekur gegenüber > den Linux-Kernel verbergen. Theoretisch geht sowas auch bei > Mikrocontrollern... dabei geht aber etwas Rechenleistung und vor allen > Funktionalität verloren. > Wenn ich dir aber einen guten Tipp geben darf: Lern Englisch. Viele gute > Seiten und praktisch alle Datenblätter sind in Englisch verfasst. So > kompliziert ist das eigentlich nicht... ein Wörterbuch sollte man aber > immer griffbereit haben. Z.B.: http://dict.leo.org/ Wie gessagt, bin kein Experte und in C. Ich kann nur die Grundlagen. Vertieft habe ich das noch nie, weil ich nie die Zeit dazu hatte. Das Studium nimmt schon genug Zeit in Anspruch. Nebenher mache ich gerne Dinge mit Mikrocontroller. Aber ich habe halt null Erfahrung mit Atmel Controller, geschweige denn AVR Studio, Atmega16 usw. Ich weiß einfach nicht wie ich dieses Problem umsetzen soll! Die über 100 Seiten des AVR-GCC-Tutorial kann ich aus Zeitgründen nicht "konsumieren". So jetzt fangen auch gleich wieder Joe und Peter an zu schimpfen (nach dem Motto: Lesen oder bleiben lassen). Dazu sage ich nur Danke, das hätte ich auch ohne eure Hilfe hinbekommen. Sorry Jungs, nimmt das nicht persönlich. Ich habe halt gedacht, da gibt es hier bestimmt jemand, der mir zeigen kann wie ich dieses eigentlich einfache Bsp. lösen kann, wenn nicht alles dann wenigstens ein paar Ansätze. Aber das war wohl nichts auf die Schnelle. Danke Jungs, das Ding muss ich leider aufgeben (Grund: Zeitmangel). Starter Kit von Atmel und Zubehör über 100 Euro umsonst gekauft. F**k! @Peter: Sorry aber mit deinem Programm "Timebase" kann ich überhaupt nichts anfangen. Ich verstehe so gut wie gar nichts und kann auch keinen Zusammenhang zu meinem Programm erkennen. Danke für keine produktive Lösung! Grüße Eric P.S.: Irgendwie gebe ich Dr. Tee ein wenig recht. Für was gibt es überhaupt Foren?
@Eric Schmitz So schnell die Flinte ins Korn werfen, bloß wegen ein wenig Kritik? Wo bleibt die Ausdauer, der Mut und die Lernbereitschaft?! Zeitmangel ist verständlich, aber mal ehrlich, was sind denn schon 100 Seiten Lehrstoff, um das komplexe Feld der Mikrocontroller kennenzulernen?! Fehlendes Englisch und Mikrocontroller beißt sich leider. Aber holprig gelesen ist besser als 'Bogen drum machen' (nobody is perfect :)) etwas Schulenglisch hat doch jeder und mit der Zeit gewöhnt man sich dran. Wenn dir so vieles im Verständnis mit MC fehlt (wer kennt den Zustand nicht? ;)), dann verstehe ich nicht, wie man sich gleich mit so einem Detailkram beschäftigt wie Stack, Umsetzung auf anderen Plattformen usw. (zäumst du das Pferd etwa von hinten auf?) Etwas Grundlagen in dt. gefällig? Wie wäre es damit: http://www.rowalt.de/mc/avr/avrbuch/index.htm (Nein, ich bin nicht der Autor; Nein, ich habe nix von dieser Empfehlung; hab selbst gerade etwas herum recherchiert; BASIC ist zwar nicht mein Fall, der Aufbau des Buches macht aber keinen schlechten Eindruck) Suche dir einfache Beispiele, die erprobt sind und funktionieren und lerne Anhand des GENAUEN Studiums dieser Beispiele die Materie kennen. Das schafft Sicherheit und gibt Raum für eigene (erfolgreiche) Experimente.
Eric Schmitz wrote: > Die über 100 Seiten des AVR-GCC-Tutorial kann ich aus Zeitgründen nicht > "konsumieren". Da bin ich etwas irritiert, wieviel Minuten hattest Du denn für das Lernen eingeplant ? Oben hast Du doch großspurig behauptet, dan 8051 hättest Du gut drauf, dann sollte der AVR ja kein Problem sein. Ich vermute mal, das mit dem 8051 war ne glatte Lüge. Die Timer des AVR sind zwar etwas komplexer, aber man muß ja nicht alle Funktionen benutzen. Einfach laufen lassen (Vorteilerregister einstellen) und Overflow-Interrupt geht auch, wenn auch nicht super genau. Es heißt übrigens AVR und nicht Atmel. 8051 und ARM produziert Atmel auch. Peter
> Danke Jungs, das Ding muss ich >leider aufgeben (Grund: Zeitmangel). Starter Kit von Atmel und Zubehör >über 100 Euro umsonst gekauft. Also das ist einfach lächerlich. Du kaufst Dir einfach so ein Starter Kit und hast dann keine Zeit Dich damit zu beschäftigen. Was denkst Du denn, wieviel Zeit manche Leute hier im Forum für die Einarbeitung in einen bestimmten Controller aufgewendet haben. Und Du meinst, Du kannst mal so eben mit einem neuen µ rumspielen. Die Datenblätter durchzulesen, hast Du auch keine Zeit, das sollen am besten andere für Dich erledigen. Macht alles einen äußerst schwachsinnigen Eindruck.
Ich hatte den Wechsel von '51 auf AVR und fand, dass es einfach zu machen war. O.K. man muss sich an die Assembler-Befehle gewöhnen, aber dafür gibt es ja das Datenblatt und dieses Forum. Ich verstehe deswegen die Beweggründe des TO nicht, damit aufzuhören. Wenn er den '51er kann, ist der Umstieg nicht schwierig. Die 100 Seiten des Tutorials überfliegt man einmal, damit man weiß, was drin steht. Danach sucht man sich die Stellen raus, die man momentan benötigt. Du musst nicht alles auswendig lernen, du sollst nur wissen, wo du suchen musst, wenn du nicht mehr weiter weisst. Gruß Elektrikser
@ Eric falls du mal dein Studium fertig hast,... sagst du deinem Arbeitgeber dann auch, dass du keine englischen Datenblätter lesen kannst? Ist doch wohl nur nen Witz oder...
Also Leute, dank eurer ausreichenden Kritik habe ich das Progromm hinbekommen! (siehe Anhang). Gibt es hier noch Verbesserungen die ich durchführen könnte? Mir ist aber immer noch nicht klar, wie ich es dabei so erstelle, dass man es auch leicht an andere Rechner anpassen kann. Schaut mal, ich benutze Atmega16. Will ich jetzt z.B. ein Atmega32, so muss ich mit #define das durchführen. Bsp: Wenn ich jetzt im Quellcode schreibe: #define mega16; // dann soll er mir die entspr. Befehle ausführen um das Blinklicht zu realisieren. Bei: #define mega32; // soll er mir dann alles für Atmega32 ausführen usw. Das einmal für ein paar uProzessoren. Der Quellcode nimmt somit ein paar Zeilen am Umfang zu. Das muss doch irgendwie mit einer If-Bedingung realisiert werden können, oder? Aber leider bin ich hier überfragt. Weiß jemand wie man hier genauer vorgeht bzw. wie man das machen kann? P.S.: Ich freue mich schon wieder auf eure Kritik ;-)!
Eric Schmitz wrote: > Bsp: Wenn ich jetzt im Quellcode schreibe: > #define mega16; > // dann soll er mir die entspr. Befehle ausführen um das Blinklicht zu > realisieren. Bei: > #define mega32; > // soll er mir dann alles für Atmega32 ausführen usw. Das einmal für ein > paar uProzessoren. Der Quellcode nimmt somit ein paar Zeilen am Umfang > zu. Ja, das geht mit #ifdef und #endif Aber schau doch erstmal, wie groß die Unterschiede von Mega16 zu Mega32 in Deinem Programm sind. Peter
1 | ...
|
2 | TCNT1L = 0xAF; // Timer1 laden (50 ms einstellen) |
3 | TCNT1H = 0x3C; |
Jau, da biste schon voll inne Hundekacke getreten Atmel says: "To do a 16-bit write, the high byte must be written before the low byte." Oder einfach so, dann isses auch lesbar:
1 | ...
|
2 | TCNT1 = (unsigned int)-50001; |
Peter P.S.: Die -50001 stimmen natürlich nicht, sind aber genau das, was Du hingeschrieben hast (0x3CAF = -50001).
Peter Dannegger wrote: > P.S.: > Die -50001 stimmen natürlich nicht, sind aber genau das, was Du > hingeschrieben hast (0x3CAF = -50001). Was soll daran nicht richtig sein? Ich verstehe nicht ganz. In dem Programm V31C ging das ja auch alle 0,5s. Geht das hier nicht? Ist das mit dem Quarz hier anders. Welche Werte sind denn sonst TCNT1L und TCNT1H um 0,5s zu realisieren?
Peter Dannegger wrote: > Ja, das geht mit #ifdef und #endif > > Aber schau doch erstmal, wie groß die Unterschiede von Mega16 zu Mega32 > in Deinem Programm sind. > > > Peter Kannst du mir hier ein kleines Bsp. zeigen oder wo kann ich das irgendwo nachlesen?
Mega16 und Mega32 sind sich sehr ähnlich, der 32er hat doppelt soviel Flash und RAM und (glaub ich) noch ein paar Sonderfunktionen mehr. Code für den Mega16 läuft daher in aller Regel ohne Änderungen auf dem Mega32. Man muss nur neu compilieren, dann macht der Compiler den Rest.
Andreas Lang wrote: > Mega16 und Mega32 sind sich sehr ähnlich, der 32er hat doppelt soviel > Flash und RAM und (glaub ich) noch ein paar Sonderfunktionen mehr. Code > für den Mega16 läuft daher in aller Regel ohne Änderungen auf dem > Mega32. > Man muss nur neu compilieren, dann macht der Compiler den Rest. Das mit Mega32 war nur ein Bsp. Mich würde es interessiern, ohne viel Code das Programm auch universell zu betreiben auf MegaXYZ usw. Aber trotzdem danke!
Die AVRs sind insgesamt alle sehr ähnlich. Die meisten Peripheriekomponenten sind bei allen AVRs gleich oder sehr ähnlich. Wenn man nicht gerade irgendeine Sonderfunktion (z.B. zweiter USART) verwendet, bleibt der Code eigentlich immer sehr ähnlich.
Eric Schmitz wrote:
> Was soll daran nicht richtig sein? Ich verstehe nicht ganz.
50ms entspricht 20Hz
20Hz * 50001 = 1,00002MHz.
Wenn Du also nen 1,00002MHz Quarz nimmst, stimmts natürlich.
Peter
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.