Nun habe ein kleines Uhrprojekt für Änfänger hier, für die, die gerade die ersten Schritten machen möchten. Es ist eine kleine Uhr auf eine Atmega8 und eine 2x16 LCD Anzeige. Angezeigt wird erstmal die aktuelle Uhrzeit, einstellbar über 2 Tasten, sowie die Alarmzeit in Stunden und Minuten, ausserdem die Zeit wann die eingestellte Zeit erreicht wird. in der Zip Datei ist der Bascom Code ,alles dokumentiert, HEX File sowie Schaltplan und Layout. Klar, mann den Code optimieren, vorallem besser lösen. !!!! Ich denke für Änfänger als erstes Projekt ist durchaus geeignet.
:
Verschoben durch User
Setzt das mal mit Winavr-c um ! Bascom interessiert kein oder wenige. Bei Bascom weiss man nie genau, was diese vorgekauten Befehle für ein Schmutz produzieren. Gruss
Geh woanders rummosern roboter! Viele benutzen BASCOM und C ist letztlich nichts anderes. Jetz fängt bestimmt gleich wieder das rumgeheule der Programmierer an, das die ja total unterschiedlich seien.
@roboter: Lass' ihn doch mit der Programmiersprache anfangen, die ER möchte. Wenn Du ihn für C begeistern willst, tu das doch lieber mit guten Argumenten als mit destruktiver Mäkelei. Wenn Du aber Interesse an einer C-Variante seines Programmes hast, empfehle ich die "Methode Bauhaus" (do it yourself). Du kannst es anschließend ja wieder hier reinstellen...
Naja, wer Bascom lernen möchte weil ihm C zu schwierig ist, bekommt die Rechnung halt später, also was solls...
Gutes Projekt Großer Mann :-) lass dich nicht runterkriegen von den hochnäßigen C-Programmierer, auch wenn ich leider auch dazu gehöre :-) ich hab auch mit bascom angefangen und wie üblich sagt man ja nicht umsonst, "step by step zur million" :-) ich werd mal das ganze spaßhalber mal aufbauen und dann mal sehen, was du tolles hinbekommen hast :-) mir fällt nur auf dem ersten blick auf, das du deine fusebits mit ponyprog programmierst, warum das denn, wenn du eh schon bascom hast??? :-)
@ G.G Danke für die nette Worte.... Ich habe schon vorher geschaut, was für MICH das einfachste wäre, so habe ich mich für BASCOM entschieden, wo ich bis heute zufrieden bin. Die Schaltungen, die ich für mich bauen wollte, habe soweit alles hinbekommen. Es funktioniert so wie ich es wollte, klar habe ich auch gesagt, wenn ein Profi es anschaut, denkt...naja...aber für mich war wichtig, die Grundlagen ( Timer, Tastarabfragen, LCD ) umsetzen kann. Dieses Projekt ist mein aller erstes. Von Anfang an benutze ich also Bascom, PonyProg und Eagle. diese Kombination ist für mich OK, kenne mich mittlereweiler gut aus. Ich dachte, es gibt genügend Jungs, die bei Null stehen, und möchten erstmal eine Uhr bauen..Nicht gleich mit DCF und Softclock..und was weiss ich alles...
@thomaskiss Freut mich, das du gleich beim ersten Projekt auch so hartnäckig an der Sache bleibst und sie auch erfolgreich zu ende führst... Du hast recht und das wiederhole ich auch immer wieder, wenn jemand seine gewohnheiten hat, niemals versuchen sie zu ändern, das kann, aber muss nicht schief gehen... trotzdem würd ich dir empfehlen deine fusebits mit bascom selbst zu programmieren, da du da wenigstens eine erklärung zu den jeweilign fusebits hast und meiner ansicht nach "einfacher" ist :-) was mir so spontan zu deiner schaltung einfällt... hmmm, warum baust du nicht eine usb-steuermöglichkeit ein?? oder vielleicht ne möglichkeit sie per IR-Fernbedienung steuert zu können, oder wag dich doch auch mal an sowas wie dcf77 usw... hat für dich doch nen gewissen reiz denk ich mal, DEINE Schaltung immer weiter zu vertiefen, ausbauen, oder zu entwickeln??? vielleicht jetzt wo de schon blut geleckt hast mit bascom und Co.??? Lass mich wissen, was daraus wird und wenn ich helfen kann, einfach melden :-) PS: Mein kleiner freut sich mit mir DEIN Projekt zu bauen, wenn ich das natürlich darf??? :-D
Wieviel Sprachen haben denn die C-Vertreter sonst schon bewältigt? Da schrieb vor kurzem in diesem Forum ein C'ler, dass er einen Bascom-Code nicht versteht. Und diesen Eindruck habe ich von vielen Vertretern in diesem Forum. C hat sicher seine Reize, aber die Syntax ist eine Katastrophe. Da wird die Eignung für elementare Aufgaben angepriesen, aber dafür greife ich persönich lieber zu Assembler. Nach Erfahrungen mit Algol (ja, so was gabe auch mal), Fortran, Cobol und Modula-2 kamen dann noch Lisp und Pascal sowie Delphi. Aber für den Einsatz auf einem µC ist BASCOM in der Handhabung optimal. Dabei ist es nicht von Bedeutung, dass man in C z.B. zwei Zeilen weniger benötigt oder angeblich einen viel sichereren Code erzeugt.. So gibt es auch viele große Projekte, die problemlos mit BASCOM erstellt wurden. Mit BASCOM ist genau so jedes Bit persönlich zu erreichen, wie das in C auch der Fall ist. C ist halt das chinesisch unter den Sprachen, aber wer lernt das schon für µC-Projekte. Ich habe es wieder zur Seite gelegt. BASCOM ist für Beginners und! Fortgeschrittene. Und wenn ich eine saubere Struktur oder spezielle Datentypen haben möchte, dann greife ich auf PASCAL zurück. Joe
Hallo G.G....super nett Danke !!! Selbstverständlich wird das Projekt erweitert.....(jede Idee ist willkommen ) als nächstes werde ich das Layout ändern ( LCD Anschluss ) ich brauch den PWM Ausgang von Atmega. Ich möchte das Layout auch als Multi Board gestallten.so daß man für andere Zwecke benutzen kann...werde ich posten.. meine nächste Idee wäre, 1 Minute vor dem Erreichen des Alarms soll die LED "pulsen"....ich bin grade am überlegen , wie die Logik aussehen muss 1 Minute weniger ???? Momentan ist es so , Alarm = beiden Zeiten identisch.... Ausserdem ist mir noch aufgefallen, wenn die Uhr eingeschaltet wird, sind die Zeiten Uhr und Alarm 00:00:00 also erstmal pieps..... DCF kommt auch, noch keine Erfahrung ( bloss etwas bereits nachgebaut von (http://s-huehn.de/elektronik/) Was auf jedenfall noch kommen wird, die Einstellung soll nicht mit Tasten sondern mit einem Drehgeber sein... Frage : Passt dies hier für sowas ? http://www.reichelt.de/?;ACTION=3;LA=5;GROUP=B29;GROUPID=3714;ARTICLE=73915;START=0;SORT=user;OFFSET=500;SID=31rzB2E6wQAR8AACDk@wYb98f5a7e2ecdbb9016d29eb0b3727ed8
"C ist halt das chinesisch unter den Sprachen" lol! und ich dachte, es steht für "cryptic" - aber siehe da - es steht für "chinese"
Ich tue mich schwer mit C, weil die "Befehle" nicht "lesbar" sind wie bei BASCOM , ausserdem denke ich, die Sachen die für mich interresant sind, sind mit BAscom lösbar. für mich ist es wichtig, daß ich jede Zeile selber verstehe...was genau dort passiert.. If, then....
Hi, und es wurde von dir in BASCOM sauber programmiert. Übersichtlich und für jeden Anfänger sicher nachvollziehbar. Solange genügend MC Flash Speicher zur Verfügung steht ist das eh kein Problem. Diese kleinen Kerlchen sind gut für diese Art der Programmiersprache geeignet. Ich bin zwar ein Assembler Programmierer, weils mir halt spass macht, dennoch würde ich bei kleinen komplexen Programmen ebenfalls BASCOM nutzen. Ist einfach, übersichtlich und verständlicher. Mir gefällt dein Programm. Gruß Frank.....
Danke Frank es ist schön zu hören, daß auch Leute gibt, die mal sagen, es ist okay was man gemacht hat, leider gibt es viele Leute die gleich loslegen, hier und da eine Zeile weniger ist besser oder sollte man irgendwelche "exotische" Befehle verwenden weil..usw...oder wenn in C nehme oder assembler.... Ich habe erstmal ganz einfach gemacht, if Taster=0 then... dann habe ich mit Subs angefangen..Step by Step..langsam...aber sicher Klar meine Frau sagt auch..Tagelang mit einer Uhr sich beschäftigen wobei schon sowas für 2.99 kaufen kann....
tatsch schrieb: > "C ist halt das chinesisch unter den Sprachen" tatsch schrieb: > und ich dachte, es steht für "cryptic" - aber siehe da - es steht für > "chinese" ROFL, nein C steht für "abc..." weils so einfach ist wie das ABC. und BASCOM steht für "COMplicated" weil Du keine Ahnung hast wie das Basic die Anweisungen im Controller umsetzt, und Du dich dann wunderst, daß 3 kleine Zeilen Code über 1000 Taktzyklen brauchen. duck und weg :-)))
Thomas Kiss schrieb: > Klar meine Frau sagt auch..Tagelang mit einer Uhr sich beschäftigen > wobei schon sowas für 2.99 kaufen kann.... Aber Du kannst jetzt so eine Uhr bauen und verstehst was da alles dazugehört. Die anderen können sie nur kaufen. Also viel Spass beim Basteln und programmieren, egal ob in BASCOM, C, Assembler, AVR-Algol oder AVR-Lisp. Grüße
U.R. Schmitt schrieb: > daß 3 kleine Zeilen Code über 1000 Taktzyklen brauchen. da gibts in C aber auch prominente Beispiele dafür :) printf ?¿ Wenn Müll programmiert wird ist das wurst ob in "C", ASM oder Basic und jeder sollte das nutzen was ihm am Besten liegt. Meine Güte, ist ja mal wieder n Glaubenskrieg.
weinbauer schrieb: > Wenn Müll programmiert wird ist das wurst ob in "C", ASM oder Basic und > jeder sollte das nutzen was ihm am Besten liegt. > Meine Güte, ist ja mal wieder n Glaubenskrieg. Welcher Glaubenskrieg? Von mir nicht, der dicke Smilie war doch wohl nicht zu übersehen.
@Weinbauer..hast schon richtig gesehen, es kommt wirklich oft vor, wenn jemand ein Problem hat, dann von 10 antworten sind 5 mit Antworten die nicht zum Thema oder Problem passen.... Es wäre besser hier im Forum die Theman evtl, nach Sprache trennen... Ich merke auch es gibt sehr grosse Unterschiede was Kenntnisstand anbelangt...es ist auch super so, aber ein Profi sollte auch mal einsehen oder schätzen, wenn jemand erst anfängt, daß man andere Probleme hat. Led ein und aus schalten oder modifizierung eines Fluxkompensators !!
@all Also jungs, sind wir hier aufn wurstmarkt wo man sich um die heisseste wurst bekriegen muss??? Lass doch den armen kerl endlich sein zeug programmieren wie ER es will und nicht wie DU es bestimmen MUSST... ich sag doch immerwieder diese scheiss gesetzgebung von allen, jeder will es besser wissen... Wie ihr sehn könnt, gibt es DOCH noch leute, die sich WAHNSINNIG GERN mit dem BASCOM-SCH***-Dreck beschäftigen.... Ihr seit unmöglich ey... @Thomas Mach weiter so Großer, ich steh hinter dir und geb dir Rückendeckung :-D Zu deinem Drehimpulsgeber, er scheint soweit ganz passabel für deine Idee zu sein, wenns funzt, bescheid geben, werd mir dann mal auch welche besorgen, da die Idee doch gut klingt :-) Achte auf die richtige umsetzung der PWM Geschichte, da ich oft schon damit probleme hatte, weil AVRs im allgemeinem ein wenig "zicken"... Das mit der Mitute vorher... Hmmm, ich würde sagen, definier mal eine extra variable mit dem Inhalt der ankündigungszeit... so in etwa wie... Alarm um 12.14h...Variable 12.13h... wenn der wert bedeckt/erreicht ist, dann löst du einfach eine subroutine aus und voila :-) >Ausserdem ist mir noch aufgefallen, wenn die Uhr eingeschaltet wird, >sind die Zeiten Uhr und Alarm 00:00:00 also erstmal pieps..... Wie wärs wenn du eine batterie als puffer einbaust, so wie auf dem PC-Mainboards?? Dann läuft nur der Prozessor im hintergrund, keine anzeigen und deine uhrzeit bleibt auch bei stromausfall erhalten?? oder du nutzt einen eeprom??? >Klar meine Frau sagt auch..Tagelang mit einer Uhr sich beschäftigen >wobei schon sowas für 2.99 kaufen kann.... Frag sie doch mal, warum sie soooooo viele schuhen oder taschen besitzt, wenn sie mit einer einzigen auch auskommen kann... Dann wird sie dir antworten, das sie diese braucht :-) Du ja deine Uhr auch, um zu lernen, wie die hintergründe der elektronik aussehen :-D
Smile...smile. G.G...thanx..... G.G bist fit in Bascom ???? Naja erstmal werde ich mich in PWM einlesen, also Standard aufbau mit einem LED machen, mal sehen wie ich die zum Langsam hoch und runter dimmen kann, wenn ich es komplett verstanden habe, werde ich dann diese "SUB" dann integrieren...dann geht es weiter, daß ein pulsierende LED als Voralarm gibt... Drehgeber muss ich noch bestellen, aber ich habe dies als "zwischenprojekt" eingeschoben : siehe hier : Hammerteil fürs Geld !!! http://www.qube-solutions.de/shop/show_product.php?cPath=83&products_id=211
Das mit der Mitute vorher... Hmmm, ich würde sagen, definier mal eine extra variable mit dem Inhalt der ankündigungszeit... so in etwa wie... Alarm um 12.14h...Variable 12.13h... wenn der wert bedeckt/erreicht ist, dann löst du einfach eine subroutine aus und voila :-) Hmm..grübel... Momentan : If Stunde = Tstunde And Minute = Tminute And Sekunde = Tsekunde Then 'Ankündigung : if stunde = Tstunde if Minute- Tminute = 1 Also so ganz grob, wenn die beiden Stunden gleich sind und wenn Minute minus alarm Minute als Ergebnis 1 kommt..dann..so müsste die Rechnung aufgehen...
Thomas Kiss schrieb: > Das mit der Mitute vorher... > Hmmm, ich würde sagen, definier mal eine extra variable mit dem Inhalt > der ankündigungszeit... so in etwa wie... Alarm um 12.14h...Variable > 12.13h... wenn der wert bedeckt/erreicht ist, dann löst du einfach eine > subroutine aus und voila :-) > > Hmm..grübel... > Momentan : > > If Stunde = Tstunde And Minute = Tminute And Sekunde = Tsekunde Then > > 'Ankündigung : > > if stunde = Tstunde > if Minute- Tminute = 1 > > Also so ganz grob, wenn die beiden Stunden gleich sind und wenn Minute > minus alarm Minute als Ergebnis 1 kommt..dann..so müsste die Rechnung > aufgehen... Achte auf die Sonderfälle beim 'Überläuf' von Minute 59 zu Minute 0! deine T Zeit sei 1:00 Deine aktuelle Zeit sei 0:59 löst du damit einen Voralarm aus oder nicht? Die Stunden sind nicht gleich und die Minutendifferenz ist laut deiner Rechnerei auch nicht 1. Trotzdem liegen die beiden Zeitpunkte nur 1 Minute auseinander. Hinweis: gerade bei Zeiten ist es oft einfacher, sich Stunden und Minuten zu einer Minutenzahl seit Mitternacht umzurechnen. Dann ist man zumindest die Sonderfälle, dass 0:59 und 1:00 nur 1 Minute auseinander sind, los. Es bleibt nur noch Mitternacht als einzelner Sonderfall, und der ist meistens nicht so tragisch.
@Thomas >Hmm..grübel... >Momentan : > >If Stunde = Tstunde And Minute = Tminute And Sekunde = Tsekunde Then > >'Ankündigung : > >if stunde = Tstunde > if Minute- Tminute = 1 Müsste so in etwa sein ja, probiers einfach mal aus :-) Ich bin zwar fit in bascom, aber auch kein profi... Das mit der PWM sollste auch hinbekommen können, allerdings würde ich sagen, bau das softwaremäsig auf, sonst wirst du zeitverschiebungen aufgrund deiner quarzwahl haben... Der Cube sieht auch hammer aus ja, aber is es nicht reizender ihn mal selbst aufzubauen?? :-) Erfahrung zur Million haste ja schon bissel :-) Wenn de dann noch H-PWM kannst... :-) Wie wäre denn eine USB-Anbindung für dein Projekt?? Sodas sich die Uhr automatisch mit deinem PC syncronisiert?? Möglichkeit zur Million ausnutzen, dann kann dir keiner mehr was sagen das BASCOM nix taugt?? :-)
Absolut korrekt und sehr guter Hinweis, also ab Mitternacht rechnen. werde ich genau anschauen, die Umrechnung evtl in ein SUB packen... musss auch mal sehen, ob es sinnvoller ist, die Komplette Alarm Ausgabe und den Voralarm umzurechnen oder nur den Voralarm... TTTHHHHHHHHHHHXXXXXXXXXXXX
@ G.G... klar es wäre Hammer wenn man sowas selber komplett bauen könnte ( es gibt in Korea sogar ein 16x16x16 Cube !!! Jetzt kommt das aber, bei Qube bekomme ich auch noch ein super Programm wo man die Figuren in 3D selber erstellen kann und klick und fertig..sowas kann ich definitiv nicht machen... Ich habe mal den Chef von Qube gefragt ob eine 5x5x5 als RGB geplant ist, leider noch nicht.... PWM Ja, ich habe schon gelesen, dass ich es mit Software gemacht werden sollte..ich muss aber mich erstmal in den Grundlagen weiter einlesen (http://www.roboternetz.de/wissen/index.php/Bascom_und_PWM) und vorallem ich probieren immer viel drum herum aus...so nach dem Motto was passiert wenn ich dies oder jenes verändere..dann mach ich kurz zusatzbeschreibungen für mich.. Interresant wäre hier mal so ein CUBE RGB Projekt zu starten !!!!! Es gibt mit Sicherheit Leute die es "nur kaufen" möchten !!
>Interresant wäre hier mal so ein CUBE RGB Projekt zu starten !!!!! >Es gibt mit Sicherheit Leute die es "nur kaufen" möchten !! Klar gibt es die bestimmt, aber ganz ehrlich?? wäre mir echt zuuuuu anstrengend, da es doch schon ne nummer größer ist, als so ne kleine uhr oder so, ich muss auch sehen, das mein laden läuft, da ich selbstständig bin, aber wenn du möchtest, gern warum nicht mal was neues probieren :-) Lösungsansätze??? :-) LG G-Crax
Thomas Kiss schrieb: > klar es wäre Hammer wenn man sowas selber komplett bauen könnte ( es > gibt in Korea sogar ein 16x16x16 Cube !!! Es gibt auch noch größere. Aber rechne dir einfach mal aus, wieviele LED das sind. Danach sieht die Welt schon wieder ganz anders aus :-) > PWM Ja, ich habe schon gelesen, dass ich es mit Software gemacht werden > sollte..ich muss aber mich erstmal in den Grundlagen weiter einlesen > (http://www.roboternetz.de/wissen/index.php/Bascom_und_PWM) > und vorallem ich probieren immer viel drum herum aus...so nach dem Motto > was passiert wenn ich dies oder jenes verändere..dann mach ich kurz > zusatzbeschreibungen für mich.. Das ist der richtige Weg! Vor allem der erste Teil, der mit den Grundlagen. > Interresant wäre hier mal so ein CUBE RGB Projekt zu starten !!!!! Gibts doch. So ein kleiner Cube ist nicht so wild. Sobald du genügend viele PWM Stufen in Software machen kannst und abgeklärt hast, wie du den Cube per Multiplex ansteuern musst, ist der Rest Handwerk. Multiplex kann man aber auch mit ein paar 7-Segment Anzeigen lernen. Ist im Grunde das gleiche, nur das die LED anders angeordnet sind. > Es gibt mit Sicherheit Leute die es "nur kaufen" möchten !! Es gibt auch Firmen die solche Cubes gewerblich herstellen und verkaufen. Eine Kleinfertigung für 10 bis 20 potentielle Käufer lohnt nicht wirklich, wenn du damit ein bischen was verdienen willst.
Interresant.... Es gibt auch Firmen die solche Cubes gewerblich herstellen und verkaufen. Eine Kleinfertigung für 10 bis 20 potentielle Käufer lohnt nicht wirklich, wenn du damit ein bischen was verdienen willst. Naja es gehtnicht primär darum ( Geld ) sondern wie es gemacht wird, aber klar die Leute die wirklich sowas komplett selber entwickeln können beschäftigen sich eher mit anderen Sachen... Ich habe mal bisschen herumgeschaut, es gibt unmenge an diskussionen, (http://www.ledstyles.de/ftopic5781.html) dass jeder sowas bauen will, aber ein "fertiges" Projekt habe noch nicht gesehen..
Thomas Kiss schrieb: > dass jeder sowas bauen will, aber ein "fertiges" Projekt habe noch nicht > gesehen.. Selbst ist der Mann. Malen nach Zahlen ist doch fad :-)
so siehts aus Thomas :-) wir sind ja da um zu lernen :-D aber ganz ehrlich, es is ein wunderschönes projekt, was mich natürlich auch irgendwo fasziniert... Nur...??? Hmmm... Kein Plan... Mal anders rum gefragt, wie würdest du es denn realisieren wollen?? Schon gedanken gemacht???
G.G.... klar erstmal macht man Aufwandabschätzung = Bausatz bestellen... Naja habe gerade mit CNC eine Schablone machen lassen...Ultrahelle LED bei Ebay....so kostet der Bausatz dann komplett mit allen teilen 80 € Mann kann zwar noch hergehen, ohne Atmega bestellen, die Hex Files kann man vom Shop selber herunterladen....oder man kauft die perfekt gemachte Platinen. Ich finde Preis und Leistungverhältnis ist echt okay !!!!! Am Tag X wenn ich PWM gut beherrsche, weiss wie es funzt, dann probiere dann die Multiplexing aus.....dann nehme ich einen RGB led und werde probieren wie ich selber eine Autofading machen kann also von Farbe X bis Y... Wäre das gleiche wie die Audiofreaks evtl, es sehen. Verstärker bauen... Tagelang mit Brummen und Rückkopplungen kämpfen oder vor 500 Euro einen Yamaha Verstärker kaufen..LoL
na wir wollen doch keinen bausatz kaufen, sondern alles selbst entwickeln oder?? ich meinte mit gedanken machen... wie willst du alles verkabeln, welche µC benutzen wir, wie groß soll die matrix sein, was für funktionen sollen rein, was soll das ding überhaupt anzeigen?? usw... ich würde die sache mit multiplexing weglassen und alles mit mehreren µC aufbauen, ist mal was neues :-) und es hat nicht jeder... mach dir mal ne skizze und dann schaun wir mal weiter würd ich sagen... :-)
G. G. schrieb: > ich würde die sache mit multiplexing weglassen und alles mit mehreren µC > aufbauen, keine gute Idee. Die Dinge werden selten einfacher, wenn mehrere Prozessoren im Spiel sind. Ganz im Gegenteil, ganz im Gegenteil.
G.G Du hast mich getroffen !!!!! -D Ich sage es Dir ganz ehrlich, ich bin noch soooooooooweit davon entfernt, gebe ehrlich zu, daß ich keinen CUBE aus eigener Kraft bauen könnte, geschweige von der Ansteuerung.... Klar es jukct mich schon sehr um zu wissen wie so ein CUBE funzt.... Ich möchte gerne Step by Step machen, also erstmal die Grundlagen vom PWM erforschen mit einem LED... und vorallem es ist auch noch eine Zeitfrage bei mir, habe leider nicht jeden Tag 5 Stunden Zeit...
na siehste :-) ich sags doch, erst step by step alles langsam aufbauen und stein für stein dein häusle bauen :-) ich hab noch niemanden getroffen, der sein haus vom dach an aufbaut :-D aber mal im ernst, wenn man die konkrete idee hat, weiss was und wie sein ziel aussieht und auch kraft und hirn in die sache steckt, kann man mit allen möglichen dingen alles aufbauen, ganz egal ob 1,2...5 oder mehr µC oder sonstwas zusammenschaltet :-) und die sache das mehrere µC nicht gehn, oder sonstwas...hmmm... ich hab hier ein projekt das über 60µC miteinander verbindet und das in einer einzigen schaltung, die ich selbst aufgebaut habe... jeder µC hat seine aufgabe zu erfüllen und muss nur seine werte für die anderen freigeben :-) machbar is alles mein lieber, aber wie gesagt, mach erst mal dein fundament, wenn du willst das dein haus auch wirklich steht :-)
Mein "Kumpel" ist G.G...... Mal ne frage Frage Firma ELS ??
....Ich möchte gerne Step by Step machen, also erstmal die Grundlagen vom PWM erforschen mit einem LED... Das ist es, die Grundlagen kannst du nur erlernen mit Winavr-c usw am Gerät. Nämlich dort lernst du jedes Register kennen und es wird nur durchgeführt was du hineinschaufelst. Dadurch kommst du dann nicht drumrum dich mit der Lektüre zu befassen. Bei Bascom holt man seine Qbasic-Kenntnisse raus und "versucht" und "hofft" das es funktioniert. Gerade bei den Timern weisst du manchmal in Bascom nicht , warum die sich in die Quere kommen usw.
Hmmm... "Das ist es, die Grundlagen kannst du nur erlernen mit Winavr-c usw am Gerät. Nämlich dort lernst du jedes Register kennen und es wird nur durchgeführt was du hineinschaufelst. Dadurch kommst du dann nicht drumrum dich mit der Lektüre zu befassen." Ich dachte, daß man mit BASCOm auch PWM machen kann, oder muss man wirklich bis zum Atomkern des AVR wissen...Oder es reicht nicht zur Hobbyanwendungen ??? LED Cube...LoL
Thomas Kiss schrieb: > Ich dachte, daß man mit BASCOm auch PWM machen kann, oder muss man > wirklich bis zum Atomkern des AVR wissen...Oder es reicht nicht zur > Hobbyanwendungen ??? Das sagt so keiner. Was roboter meint, ganz konkret anhand deines Projekts: Du hast in deinem Projekt eine LCD angesteuert. Gut. Erzähl mal, wie funktioniert das? Wie gestaltet sich die Datenübertragung zum LCD, was ist dabei kritisch, worauf musst du achten? Wenn auf deinem LCD kein Standard-Controller verbaut ist, sondern einer der ähnlich aber doch anders funktioniert, könntest du dann dieses LCD immer noch ansteuern? Siehst du, das ist das BASCOM Dilemma Auf der einen Seite ist es super, wenn man fertige Bausteine zur Verwendung zur Verfügung hat. Dagegen ist erst mal nichts zu sagen. Nur "wissen wies geht" tust du deswegen noch lange nicht. Das ganze ist ein bischen wie Taschenrechner. Wir benutzen sie wie selbstverständlich. Nur wer von uns kann denn noch mit der Hand und Papier und Bleistift eine Wurzel ziehen? (Und nein, das Papier und Belistift Verfahren ist nicht dasselbe welches ein Rechner benutzt. Rechner machen meistens eine Newton Iteration. Papier und Bleistift geht anders) Das soll jetzt keine Wertung gegen oder für BASCOM sein. (Was mich persönlich an BASCOM nervt, ist der bescheidene Expression-Parser)
Hmm..Karl Heinz.... Tja die grosse Frage..wie weit muss man heruntergehen ? ich denke man sollte gute kompromisse finden...Bsp LCD hast recht, keine Ahnung, aber das sind Sachen, die ich wissen muss ? wenn ich eine Uhr bauen möchte ? Mindestens für den Anfang ? War ich echt froh, daß nach 3 Tagen eine UHR hatte, von Null an !!
Thomas Kiss schrieb: > Hmm..Karl Heinz.... > > Tja die grosse Frage..wie weit muss man heruntergehen ? ich denke man > sollte gute kompromisse finden...Bsp LCD hast recht, keine Ahnung, aber > das sind Sachen, die ich wissen muss ? wenn ich eine Uhr bauen möchte ? > > Mindestens für den Anfang ? War ich echt froh, daß nach 3 Tagen eine UHR > hatte, von Null an !! Nicht falsch verstehen. Super Arbeit. Aber du baust natürlich darauf auf, dass andere gewisse Komponenten schon für dich vorgearbeitet haben. Warum hast du eigentlich nicht die in BASCOM eingebaute Uhr benutzt? Bin zwar kein BASCOM Spezi, aber soviel ich weiß, kann man die auch ohne 32kHz Quarz am Timer benutzen. > aber > das sind Sachen, die ich wissen muss ? wenn ich eine Uhr bauen möchte ? Solange du mit der LCD so wie jetzt zufrieden bist, ist ja alles ok. Jetzt hab ich da aber so ein graphisches LCD. Deine Uhr würde mir grundsätzlich gefallen, aber ich hätte das gerne als Analoguhr, so richtig mit Zifferblatt und Zeiger. Oooops. Jetzt stehst du schön da :-) Nichts für ungut. Ich will auch keine Wertung gegenüber BASCOM abgeben. Es ist ok so wie du das machst. Solange du nicht auf die Grundlagen vergisst. Vielleicht streust du in ein paar Wochen mal ein paar Assemblerübungen ein, weil du es ganz genau wissen willst, was du unter der Bettdecke tatsächlich alles passiert.
"was du unter der Bettdecke tatsächlich alles passiert." muss sofort die komplette Enzyklopedie reinziehen !!! "Warum hast du eigentlich nicht die in BASCOM eingebaute Uhr benutzt?" Ja Bascom hat eine Softclock funktion, habe kurz im Befehlsübersicht gesehen, daß man Datum und Uhrzeit gleich als Ergebnis bekommt...wie LCD Ausgabe..LoL..... Ich wollte wirklich die komplette Funktion einer Uhr nachbilden.. Also Incr Sek..if 60 then..usw...
Hallo! Es ist sicherlich hilfreich, im Detail zu wissen, wie der 44780 angeschlossen und -gesteuert wird. Allerdings glaube ich nicht, das es für einen Einsteiger erforderlich ist, im Detail zu wissen, wie die "BasCom-PRINT"-Routine oder die "C-printf"-Routine funktioniert, welche Portbits wann/wie/wo bedient werden usw. Der eine oder andere fährt ja schließlich auch mit dem Automobil, obwohl er nicht in der Lage ist, die thermodynamischen Vorgänge im Brennraum hinreichend zu erläutern - Oder verlässt sich zum Starten desselben auf die Hilfe des Anlassers, obwohl er die Kurbelwelle doch selbst per Kurbel und Muskelkraft bis zur Selbsterhaltungsdrehzahl bringen könnte, um dann den Zündzeitpunkt manuell je nach Lastzustand zu verstellen... Viel wichtiger ist m.E., das hier jemand ein brauchbares (und offensichtlich Freude bereitendes) Werkzeug für den Zugang zur Elektronik und Informatik gefunden hat! Weiter so und nicht auf das wenig hilfreiche Geschwätz hören!
@Karl heinz Mannometer hey, fängt das alles hier schon wieder an in die falsche richtung zu laufen??? Sorry aber mal ne frage, als du kind warst, hast du da etwa auch SOFORT wie Einstein oder Mozart ALLES gekonnt??? oder bist du da auch manschmal stur gewesen und hast jeden scheissdreck mitgemacht, der eigentlich falsch ist??? er macht soweit alles richtig bis jetzt, lass IHN entscheiden, was ER will... Klar hast du recht mit deinem Dysplay und sonstwas, aber ganz ehrlich... Er hats geschafft in 3 tagen was FUNKTIONSFÄHIGES zu erschaffen ja?? mit seinem eigenem hirn, mit SEINEM Stolz und und und... Was geht dich das eigentlich an, was ER will... Nicht falsch verstehen, is nix gegen dich, aber er hat im moment diese lust und laune und deshalb macht er es so und nicht anders... Tut mir alle bitte den gefallen und HELFT ihm mit das was ER hat und quasselt ihm nix neues ein, denn was unter der bettdecke eines AVRs passiert, das wird IHM wahrscheinlich NIEMALS interessieren und wenn schon, er weiss wie das internet funktioniert und wie du siehst, er ist auch selbst in der Lage das eigenständig zu suchen und zu erlernen... Wenn du an deiner analogen Uhr gefallen findest, bitte... mach sie dir doch selber, so wie er es macht und dann diskutieren wir zwei nochmal was DU dann alles richtig und was DU dann alles falsch gemacht hast...
Dr. Seltsam schrieb: > Weiter so und nicht auf das wenig hilfreiche Geschwätz hören! Wo war denn jetzt eben Geschwätz?
@U.R. Schmitt (Gast): > Dr. Seltsam schrieb: > > Weiter so und nicht auf das wenig hilfreiche Geschwätz hören! > Wo war denn jetzt eben Geschwätz? Das sollte nicht persönlich gegen Dich gehen, sondern ganz allgemein gegen die unzähligen "Besserwisser" und "Gutmenschen", die nicht eher ruhen, eher jede andere Lebensform im bekannten Universum von deren Meinung überzeugt ist...
G. G. schrieb: > @Karl heinz > Mannometer hey, fängt das alles hier schon wieder an in die falsche > richtung zu laufen??? Nur, wenn du es als solches misverstehen willst. Ich hab nichts gegen BASCOM. Lies einfach noch mal, was ich geschrieben habe. Versuch es ein wenig zu meinen Gunsten zu lesen und du wirst erkennen, dass ich keineswegs eine missfallende Haltung einnehme. Ganz im Gegenteil.
@Karl heinz Buchegger >Nur, wenn du es als solches misverstehen willst. >Ich hab nichts gegen BASCOM. >Lies einfach noch mal, was ich geschrieben habe. Versuch es ein wenig zu >meinen Gunsten zu lesen und du wirst erkennen, dass ich keineswegs eine >missfallende Haltung einnehme. Ganz im Gegenteil. ganz ehrlich?? es geht ja in diesem abschnitt des lebens grade mal NICHT zu DIENEM Gunsten, sondern um das Projekt das ER will... Merkst du eigentlich nicht, das solche Kommentare (auch wenn sie inhaltlich korrekt sind)eigentlich garnicht erwünscht sind?? Nochmals, es geht hier und jetzt um SEIN Projekt, das er mit eigenen Hände erschaffen hat...nicht um DEINE Sprache oder dein Wollen... Gib ihm entweder HILFESTELLUNG oder halt dich einfach mal GANZ raus... Würd dir ja auch aufn Sack gehn, wenn dir jeder sagt was DU anzuziehen hast oder??? Vin dir kam bis jetzt NULL, außer Gemäcker...
G. G. schrieb: > Mannometer hey, fängt das alles hier schon wieder an in die falsche > richtung zu laufen??? Sag mal, wo ist Dein Problem? Karl Heinz hat den TE in allerfeundlichstem Ton den Tipp gegeben, daß die Welt mit BASCOM nicht zuende ist. Sobald hier jemand auch nur einen kleines Augenzwinkern bzgl BASCOM fallen lässt läufst Du in die falsche Richtung, und zwar AMOK! Zitat von vorher: G. G. schrieb: > Also jungs, sind wir hier aufn wurstmarkt wo man sich um die heisseste > wurst bekriegen muss??? > Lass doch den armen kerl endlich sein zeug programmieren wie ER es will > und nicht wie DU es bestimmen MUSST... > ich sag doch immerwieder diese scheiss gesetzgebung von allen, jeder > will es besser wissen... > > Wie ihr sehn könnt, gibt es DOCH noch leute, die sich WAHNSINNIG GERN > mit dem BASCOM-SCH***-Dreck beschäftigen.... > Ihr seit unmöglich ey... Der einzige der hier sofort unfreundlich wird und sich bekriegen will bist ja wohl DU ALLEINE!
G. G. schrieb: > Vin dir kam bis jetzt NULL, außer Gemäcker... Wenn du das so siehst. Ich seh zwar nicht wo ich da rumgemäckert hätte. Als ich einstieg stand eine Aussage von 'roboter' im Raum, die ich ein wenig abschwächen wollte, weil man sie tatsächlich als Gemäcker misverstehen könnte, und ich der Überzeugung war, dass 'roboter' genau das nicht ausdrücken wollte, Thomas aber auf dem besten Wege war genau das zu tun. Wie man zb > Nicht falsch verstehen. > Super Arbeit. misverstehen kann, ist mir ehrlich gesagt ein Rätsel. Oder > Es ist ok so wie du das machst. Solange du nicht auf > die Grundlagen vergisst. Und ab da an ist mir alles Mögliche unterstellt worden. Aber wir können gerne einen Deal machen. Ich halte mich in Zukunft aus BASCOM Threads raus, die betreust du. Und du hältst dich aus C-Threads raus.
>Aber wir können gerne einen Deal machen. >Ich halte mich in Zukunft aus BASCOM Threads raus, die betreust du. >Und du hältst dich aus C-Threads raus. tut mir leid, wenn DU dich angegriffen fühlst... Das "DU" von mir bezog sich eigentlich auf die Mehrheit, die hier den armen jungen versucht alles andere als bascom aufzuschwätzen... Ich will hier keinen nieder machen oder sonst irgendwie persönlich angreifen... Ich seh es mal so... wir sind hier in einem Forum wo es um Hilfe geht... Ich frag dich, du fragst mich, ich helf dir und du hilst mir... wenn du irgendwo in einer bank bist und geld abheben willst, versucht man dir ja auch keine würstchen zu verkaufen, sondern man gibt dir entweder sofort das geld oder man sagt dir wenigstens warum man es dir nicht sofort gibt... Ich will damit sagen... Er hat ein schönes projekt aufgebaut, eigenständig, sinnvoll, funktionsfähig und und und... dieser meinung sind wir alle glaube ich... es geht hier einzig und allein darum IHM bei seinem Vorhaben zu helfen oder meinungen auszutauschen und nicht um andere würstchen... deshalb wird man manschmal falsch verstanden... Ich möchte hier nirgendswo in den threads als betreuer fungieren, sondern einfach nur da wo ich kann meine hilfe anbieten... ich selbst halt mich IMMER aus deiner Wahl, deinem Vorhaben oder DEINER Idee, ganz egal mit was oder wie du es macht, es ist DEINS... Und das scheinen manche menschen nicht sofort zu kapieren... Also im Guten sinne, wie wärs denn endlich mal wieder mit einem "Vorschlag"??? :-)
Uh...jetzt ist bald Krieg hier....-D nun was andres Frage an G.G....( Nix Assembler und Molekularebene ) Verständnis Checken.. In meinem Projekt ist der Timer1 belegt. also ich muss für die PWM "Test" Timer2 nehmen... Mit Timer2 kann ich PWM mit 8 Bit auflösung erzeugen... Also bei 16Mhz nehme ich 1024 Prescaler also kommt erstmal 15625 Hz an den Timer2 an. Nach dem Formel (Quarz/Prescaler)/Timerauflösung*2 bekomme 976 Hz als PWN Signal....nun mit dem Compare ( ist glaube ist ein register, habe mal gelesen ) definiere dann das Tastverhältnis, also wo der Timer2 diese Compare trifft wird der PWM Ausgang geschaltet..hoffe habe richtig verstanden... Also wenn man den Wert Compare verändert dimmt man die LED... Nun aber zum "blinken" braucht man einige Hz ... PS: es wäre wirklich gut, wenn jemand zu einem Problem frage hat, egal was daß man Tipps geben kann wie er es lösen kann und nicht wie mit was komplett anderen Sachen...Ich habe ein Problem mit Atmega..Antowrt, nehme PIC dann geht es..suppa...
>Nach dem Formel (Quarz/Prescaler)/Timerauflösung*2 bekomme 976 Hz als >PWN Signal....nun mit dem Compare ( ist glaube ist ein register, habe Ansatzweise hast du das auch wie ich seh verstanden, nur das ganze soll jetzt noch in eine tolle schleife gepackt werden und dann läuft es auch ganz alleine hoch und runter das dimmen... das was du verstanden hast ist ein fester helligkeitswert den du da erzeugstm, aber les dich mal weiter ein, du bist auf dem besten wege es fast vollständig kapiert zu haben :-)
Meine "Trockengedanke" war ( ich probiere immer gleich auf dem Steckbrett aus, was genau passiert ) Ich muss mal sehen ob ich für den Compare eine Variable definieren kann z.B I. dann könnte ich mir vorstellen dass ich eine schleife mache For I = 1 to 255 ( ist 8 Bit bei Timer2 )Step 1 .. Next I ( Theorie - Pulsweite = Helligkeit ) mal gucken...
darf ich dir vielleicht an diesem punkt das Multifunktionsboard von myAVR ans herz legen? is denk ich mal praktischer, als alles aufn steckbrett zu brutzeln... du hast den ansatz und die umsetzung kapiert mein lieber :-D viel erfolg, lass uns wissen...
Thomas Kiss schrieb: > Also bei 16Mhz nehme ich 1024 Prescaler also kommt erstmal 15625 Hz an > den Timer2 an. Yep > Nach dem Formel (Quarz/Prescaler)/Timerauflösung*2 bekomme 976 Hz als > PWN Signal.... Wie hast du das gerechnet?
1 | 16000000 / 1024 / 256 = 61Hz und ein paar Zerquetschte |
256 weil der Timer2 ein 8 Bit Timer ist. Das *2 greift hier nicht, weil du mit jedem Timerdurchlauf eine komplette "Welle im Sinne einer Frequenz" erzeugst. > Du bekommst > nun mit dem Compare ( ist glaube ist ein register, habe > mal gelesen ) richtig > definiere dann das Tastverhältnis, auch richtig > also wo der Timer2 > diese Compare trifft wird der PWM Ausgang geschaltet..hoffe habe richtig > verstanden... richtig Wenn der Timer bei 0 wieder anfängt, geht der Pin auf High Beim Compare geht er wieder auf Low (wenn die PWM so konfiguriert ist. Man kann das auch umgekehrt konfigurieren. Da gibt es ein paar Möglichkeiten) > Also wenn man den Wert Compare verändert dimmt man die LED... genau > Nun aber zum "blinken" braucht man einige Hz ... Der Schlüssel besteht darin, dass man den Timer ganz normal weiter verwenden kann. Insbesondere erzeugt er natürlich auch weiterhin Overflow-Interrupts. Wenn du dich daher in diesen Overflow Interrupt klemmst, kannst du dort den Wert der Compare Registers ein klein wenig verändern. Auf die Art 'dimmt' sich der Timer im Interrupt selber hoch, bzw. wenn man den Comparewert wieder verkleinert dimmt er sich selber mit jedem Overflow Interrupt wieder ein kleines Stückchen runter. Der Vorteil: Deine LED blinkt ganz von alleine, indem sie auf und wieder runter dimmt. Das Problem bei deiner Lösung: Solange der µC in der for Schleife steckt, macht er nichts anderes. Zb bearbeitet er auch nicht die LCD Anzeige. Daher ist diese Lösung eher schlecht. Sie ist gut genug um mal PWM auszuprobieren, aber für deine Uhr taugt sie nichts.
danke..G.G ich habe das Board vom Pollin mit LCD Add-on....Pollin Board habe mit Nullkraft Sockel bestückt...geht relativ gut, einfache Sachen wie jetzt mit PWM kann ich direkt auf dem Pollin Board machen, habe dort LEDs und Tasten.... Pollin Board muss ich aber umbauen weil die Tasten auf High schalten..bissle Kacke....Also wenn ich was dort probiert habe, muss ich den Code wieder umfrikeln, wenn es um eine fertige Schaltung geht... Taster Standard auf GND...
Karl Heinz..danke... Shit hast recht, verrechnet... "Der Schlüssel besteht darin, dass man den Timer ganz normal weiter verwenden kann. Insbesondere erzeugt er natürlich auch weiterhin Overflow-Interrupts. Wenn du dich daher in diesen Overflow Interrupt klemmst, kannst du dort den Wert der Compare Registers ein klein wenig verändern. mit einfachen Wörter ????? nicht ganz verstanden... Auf die Art 'dimmt' sich der Timer im Interrupt selber hoch, bzw. wenn man den Comparewert wieder verkleinert dimmt er sich selber mit jedem Overflow Interrupt wieder ein kleines Stückchen runter."
>Also wenn ich was dort probiert habe, muss ich >den Code wieder umfrikeln, wenn es um eine fertige Schaltung geht... >Taster Standard auf GND... Genau deshalb gibt es ja diese EvaBoards auch, damit du deine Schaltung so gerecht wie möglich erstellen kannst und sie nicht unbedingt an das board anpassen musst, oder jedesmal den code zu ändern... bei dem vorgeschlagenem Board is jeder Pin des AVRs auf stecksockeln rausgeführt und du kommst so ganz simple an jede funktion ran, ohne lästiges umstecken oder so... Oder du arbeitest direkt ein ISP auf deine Platine ein :-) weiter so...
Thomas Kiss schrieb: > Karl Heinz..danke... > > Shit hast recht, verrechnet... > > "Der Schlüssel besteht darin, dass man den Timer ganz normal weiter > verwenden kann. Insbesondere erzeugt er natürlich auch weiterhin > Overflow-Interrupts. Wenn du dich daher in diesen Overflow Interrupt > klemmst, kannst du dort den Wert der Compare Registers ein klein wenig > verändern. > > mit einfachen Wörter ????? nicht ganz verstanden... Du kannst eine Interrupt Routine schreiben, die an den Overflow des Timers gebunden ist. Wir wissen mitlerweile, dass die rund 61 mal in der Sekunde aufgerufen wird. Weiters weißt du, dass die Helligkeit der LED direkt davon abhängt, welchen Wert du ins Compare Register schreibst. Gut. Wenn du eine Variable hast, die sagen wir mal 0 ist. In der Overflow Interrupt Routine zählst du 1 dazu. Da wir wissen, dass die Interrupt Routine 61 mal in der Sekunde aufgerufen wird, nimmt diese Variable daher im Laufe der nächsten Sekunde sukzessive alle Werte von 0 bis 60 an. Wenn du daher diesen Wert gleichzeitig auch noch in das Compare Register schreibst, dann verändert sich dein Compare Wert (der ja die Helligkeit der LED bestimmt) im Laufe einer Sekunde von 0 bis auf 60. Und damit auch die Helligkeit deiner LED. Machst du dir noch eine 2te Variable, dann kannst du zb vereinbaren, dass ein Wert von 0 in dieser Variablen bedeutet, dass hochgedimmt werden soll. Ein Wert von 1 würde aussagen, das runtergedimmt werden soll. Ist diese Variable daher auf 0, dann zählst du bei jedem Interrupt Aufruf 1 zu deiner Dimm-Variablen dazu, ist die Richtungs-Variable auf 1 dann ziehst du immer 1 ab. Und natürlich gehören dann immer noch die entsprechenden Abfragen auf die jeweiligen Dimm Endpunkte mit dazu, an denen die Richtung umgedreht wird. In Pseudocode
1 | Variable Richtung |
2 | Variable DimmWert |
3 | |
4 | Interrupt-Routine bei Timer Overflow: |
5 | |
6 | if Richtung = 0 then ' aufdimmen |
7 | DimmWert = DimmWert + 1 |
8 | if DimmWert = 61 then ' Ende erreicht? |
9 | Richtung = 1 ' dann richtung umdrehen |
10 | end if |
11 | |
12 | else ' abdimmen |
13 | DimmWert = DimmWert - 1 |
14 | if DimmWert = 0 then ' Ende erreicht |
15 | Richtung = 0 |
16 | end if |
17 | end if |
18 | |
19 | Compare Register mit dem DimmWert laden |
20 | |
21 | Ende Interrupt |
Hinweis: Da wir wissen, dass diese Funktion 61 mal in der Sekunde aufgerufen wird, wissen wir auch das einmal aufdimmen ziemlich genau 1 Sekunde dauern wird. Denn DimmWert muss ja 61 mal erhöht werden, bis die 61 bei der if Abfrage erreicht werden. Aus genau dem gleichen Grund dauert auch das Abdimmen ziemlich genau 1 Sekunde Aber: Niemand sagt, dass man immer nur um 1 erhöhen bzw. erniedrigen darf. Und niemand sagt, dass man von 0 bis 60 gehen muss. :-) Und dann kann man ja auch noch einen kleineren Vorteiler nehmen. Da gibt es ein paar Schrauben an denen man drehen kann und auch darf.
ISP Wannensteker, könnte ich einbauen, später wenn die Schaltung OK ist..nun welchen MyAvr nehmen....hmm... Brauche für Atmega8 und Atmega32..alle Pins ausgeführt...oder mit irgendwelche Steckmöglichkeiten, Variable,,LED, Taster, Buzzer, 7 Segment.. oder bastele selber einen...naja..eins nach dem anderen..keine Hektik, keine 3 Baustellen gleichzeitig...-D
Super Danke Karl Heinz, jetzt habe verstanden !!!.... nun jetzt fahre langsam nach Hause, mal sehen ob ich heute noch dazu komme etwas zu probieren, möchte erstmal noch den Schaltplan für mein Projekt erstmal komplett fertigmachen..und die Platine dazu. und den Bascomcode noch verfeinern... dann probiere separat die PWM aus...( Nichts kaputt machen was schon fertig ist...)
Thomas Kiss schrieb: > Super Danke Karl Heinz, jetzt habe verstanden !!!.... gut. Das ist nämlich ein wichtiges Grundprinzip in der µC-Programmiererei. Der Schlüssel zu jeglicher Parallelaktion (wenn also der µC scheinbar mehrere Dinge gleichzeitig machen muss, wie hier bei dir nebenbei noch eine LED auf und ab dimmen), liegt nämlich in den Timern und ihren Interrupt Routinen und nicht in for-Schleifen. In dem Moment, in dem du in so einer Situation sagst: Och da nehm ich eine for-Schleife, hast du meistens schon verloren. Stattdessen brauchst du eine Interrupt Routine, von der du weißt das sie regelmässig aufgerufen wird. Dieser regelmässige Aufruf ist sowas wie eine 'uhr' oder ein 'Basistakt' in deinem Programm, der von einem Zeitpunkt zum nächsten Zeitpunkt reicht. Dein Denken muss dann dahingehend gehen, dass du dich frägst: Eine gewisse Zeitspanne ist vergangen, was gibt es jetzt zu tun. Und erst viele Aufrufe hintereinander (die alle regelmässig kommen) lösen dann das Problem. Bei jedem Aufruf immer nur ein bischen machen (hier um 1 Stufe auf/abdimmen) und in Summe ergibt sich das gewünschte komplexere Verhalten.
"Der Schlüssel zu jeglicher Parallelaktion (wenn also der µC scheinbar mehrere Dinge gleichzeitig machen muss, wie hier bei dir nebenbei noch eine LED auf und ab dimmen), liegt nämlich in den Timern und ihren Interrupt Routinen und nicht in for-Schleifen." Ja das habe ich bemerkt, bei der aller aller erste Uhr..wildes flattern im Display....dachte Atmega 16Mhz, genügend Power vor eine einfache Uhr, aber wenn der Code schlecht ist, dann macht das Ding auch nicht...Smile... Noch SUUUUUUUUUUUUUUUUPPPPPPPPPPPPPPEEEEEEEEEERRRRRRRRRRRR Danke an alle die hier nette und vernünftige Tipps und Beispiele gemacht haben !!! Klasse !!!
Hmm..erste Probleme mit PWM.... Folgendes gedacht ( falsch gedacht ) Dim A As Byte Config Pinb.2 = Output 'led an pin 16 über R nach GND Config Timer2 = Pwm , Prescale = 1024 , Compare Pwm = Clear Up , Pwm = On 'Die Timer starten Enable Timer2 Start Timer2 Do Compare1b = A A = A + 1 Waitms 10 Loop End LED müsste bisschen leuchten, bleibt aber dunkel
Thomas Kiss schrieb: > Config Timer2 = Pwm , Prescale = 1024 , Compare Pwm = Clear Up , Pwm = > On Timer 2 > Do > Compare1b = A Compare 1 b Hust. Timer 2!
Jetzt funzt aber.... Config Portb.2 = Output Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up , Pwm = On Enable Timer2 Start Timer2 Dim A As Byte Do Ocr2 = A A = A + 1 Waitms 10 Loop End Nach lange Sucherei habe ich herausgefunden dass man bei Timer2 ocr2 benutzen muss, aber weiss nicht warum ????? ------------------------------------------------ Bei Timer1 geht es so : Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Enable Timer1 Start Timer1 do Compare1a = A loop
Thomas Kiss schrieb: > Nach lange Sucherei habe ich herausgefunden dass man bei Timer2 ocr2 > benutzen muss, aber weiss nicht warum ????? Ich denke du bist jetzt soweit, dass du ohne Datenblatt zu deinem Prozessor nicht mehr weiterkommst. Im Datenblatt steht drinnen, wie die zu einem Timer zugehörigen Register heissen und was sie bewirken.
Werde morgen mal nach ein verständliches Datenblatt suchen.. weiterhin ist interesant, daß ich am Ausgang LED 30,5 Hz messe..6 Messgereät ( http://www.avr-asm-tutorial.net/avr_de/fcount/fcount_m8.html) Nachgebaut - D Config Timer2 = Pwm , Prescale = 1024 , Compare Pwm = Clear Down , Pwm = On 16000000/1024 = 15625 / 255 müsste nach Karl Heinz 61 HZ rauskommen, ich dachte 15625/ (255x2) = 30.6 Hz verständnisproblem....
> Nach lange Sucherei habe ich herausgefunden dass man bei Timer2 ocr2 > benutzen muss, aber weiss nicht warum ????? Man muss nicht. Man könnte auch Compare2 verwenden. Liegt daran, daß Timer2 nur eine Compare Unit besitzt, und es damit kein ..a oder ..b gibt. Außerdem, so wie ich das sehe, möchtest Du nur eine PWM nutzen, nicht aber die passende Interruptserviceroutine (ISR) zum Timer2, also lass das Enable Timer2 raus, denn das erlaubt genau diese ISR. Mit C würdest Du jetzt schon im Nirvana landen, da Du bei undefinierter ISR eine Sprung auf den Resetvektor bekommst. Bascom schreibt in die Interruptvektortabelle freundlicherweise für Dich ein RETI bei nicht deklarierter ISR rein. Allerdings, wenn Du den Takt für den Zähler nur schnell genug machst, dann verbrennst Du auf dies Art und Weise Deine komplette CPU Leistung. Und ansonsten ist, gar nicht verkehrt, was Dir Karl Heinz so geraten hat.
Thomas Kiss schrieb: > Werde morgen mal nach ein verständliches Datenblatt suchen.. Es gibt nicht "ein verständliches Datenblatt", es gibt nur DAS Datenblatt zum Controller. Und auch das muss man nicht Suchen, das gibts vom Hersteller.
Thomas Kiss schrieb: > ich dachte 15625/ (255x2) = 30.6 Hz > > verständnisproblem.... Weil du nicht darüber nachgedacht hast, warum da in der Formel eine Multiplikation mit 2 steht. Wenn du in einer ISR einen Ausgang nur umschaltest, brauchst du 2 ISR Aufrufe um 1 Welle einer Frequenz zu erzeugen. Beim ersten Aufruf schaltest du den Pin von 0 auf 1, beim nächsten Aufruf von 1 auf 0. Und damit toggelt der Pin mit der halben Frequenz der ISR Aufrufe. Will man daher am Pin eine Frequenz von 100 Hz erreichen, muss die ISR mit einer Frequenz von 200 Hz aufgerufen werden. Aber den Fall hast du nicht. Dich interessiert nicht, welche Frequenz an einem hypotetischen Ausgangspin erzeugt wird, wenn man in der ISR einen Pin toggeln würde. Dich interessiert die Aufruffrequenz der ISR selber. Dein Timer zählt mit 16000000 / 1024 = 15625 Hz jedesmal wenn der Timer seinen Maximalwert (255) erreicht, was alle 256 Timer-Zählzyklen der Fall ist, gibt es einen Aufruf der ISR. Daher wird die ISR mit 15625 / 256 = ~61 Hz aufgerufen. Nicht einfach nur Formeln planlos abschreiben, sondern auch darüber nachdenken wie sie zustande kommen!
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.