Servus.;) ich habe vor, die uhr von http://www.mikrocontroller.net/articles/Uhr zubauen. es entstehen leider folgende fehler. Warning 1 #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed" Error 2 'TCCR1C' undeclared (first use in this function) Error 3 each undeclared identifier is reported only once for each function it appears in hat einer eine idee, was es sein könnte.?;;;wie man diese beheben kann.? danke schonmal... mfg.: jo.
Johannes Adler schrieb: > Warning 1 #warning "Compiler optimizations disabled; functions from > <util/delay.h> won't work as designed" Compiler Optimierung anschalten. > Error 2 'TCCR1C' undeclared (first use in this function) Richtiger Prozessor ist eingestellt?
quarz stimmt... wie mach ich das.? "Compiler Optimierung anschalten."
Johannes Adler schrieb: > quarz stimmt... Das war nicht die Frage, die du übrigens immer noch nicht beantwortet hast.
ja nein...ich meinte auch den µc...der stimmt...somal man den einfach ändern könnte... ich habe die lösung schon gefunden... man musste bei der Registerinitialisierung, TCCR1C rausnehmen...dann geht es auch...
Ja. Ey. Wenn der Motor stottert, einfach ausbauen. Dann fährt sichs besser. Diese Initialiserung von TCCR1C wird der Programmier nicht deswegen reingesetzt haben um die Leute zu ärgern sondern weil das einen Sinn macht. Also, Initialisierung wieder rein und das Problem beheben, nicht das Symptom bekämpfen. Meine Güte. Hier wird es immer abstruser.
es geht aber auch ohne...wie ich es vor mir habe...dann sag mal an, wie man dieses problem lösen könnte.
Noname schrieb: > Diese Initialiserung von TCCR1C wird der Programmier nicht deswegen > reingesetzt haben um die Leute zu ärgern sondern weil das einen Sinn > macht. In dem Fall leider schon. Schau dir das Programm an. Da hast du nichts verpasst. Wenn ich Dieter Bohlen wäre, würde ich wahrscheinlich sagen: Das ist doch Scheisse, du. Johannes: Nimm dir dieses Programm nicht als Vorbild. Das ist ziemlich mies geschrieben. Es ist maximal ein Anschaungsobjekt, wie man es nicht macht. Das einzige was ok ist, ist die Auswahl des CTC Modus als Taktgeber. Aber das wars dann auch schon. Der Rest passt überhaupt nicht.
Hallo,
warum ist dann das Programm in der Artikelübersicht überhaupt
vertreten ?
Sehe ich das richtig das du "nur" Moderator im Forum bist und den
entspechenden Beitag (Link) nicht entfernen oder zumindest direkt dort
kommentieren kannst ?
Eigentlich schade da doch das µC.net eine der Anlaufstellen der
deutschrachigen "Elektronik und µC Gemeinde" ist.
mfg
"Bastler"
Karl Heinz Buchegger schrieb: > Johannes: Nimm dir dieses Programm nicht als Vorbild. Das ist ziemlich > mies geschrieben. Es ist maximal ein Anschaungsobjekt, wie man es nicht > macht. Das einzige was ok ist, ist die Auswahl des CTC Modus als > Taktgeber. Aber das wars dann auch schon. Der Rest passt überhaupt > nicht. was ist daran falsch.? bzw. mies.? ich finde es ist kurz und knapp geschrieben, sehr verständlich eigentlich, und funktionieren tuts auch... was meinst du.?
Bastler schrieb: > Hallo, > > warum ist dann das Programm in der Artikelübersicht überhaupt > vertreten ? Weil jeder Artikel anlegen kann. Und der Rest der Community das nicht mitkriegen muss. Programme in dieser Qualität tauchen normalerweise zuerst in der Codesammlung bzw. überhaupt im regulären µC-Forum auf, wo sie dann auch kritisiert und besprochen werden. Da hat dann auch der Autor etwas davon. > Sehe ich das richtig das du "nur" Moderator im Forum bist und den > entspechenden Beitag (Link) nicht entfernen oder zumindest direkt dort > kommentieren kannst ? entfernen kann ich ihn nicht. Aber genauso wie jeder andere kann ich ihn pimpen. Nur kannte ich den Artikel, wie wahrscheinlich die meisten anderen regulär hier herumhängenden, nicht.
Johannes Adler schrieb: > Karl Heinz Buchegger schrieb: >> Johannes: Nimm dir dieses Programm nicht als Vorbild. Das ist ziemlich >> mies geschrieben. Es ist maximal ein Anschaungsobjekt, wie man es nicht >> macht. Das einzige was ok ist, ist die Auswahl des CTC Modus als >> Taktgeber. Aber das wars dann auch schon. Der Rest passt überhaupt >> nicht. > > was ist daran falsch.? bzw. mies.? Das fängt schon mit gewisen Schreibweisen an, von denen wir seit Jahren hier im Forum predigen: Macht das nicht. Und geht weiter mit einem Multiplexing, das man auch nicht so macht. Das perverse ist, dass er einen Timer benutzt in den das Multiplexing aber sowas von wunderbar reinpassen würde. > ich finde es ist kurz und knapp geschrieben, sehr verständlich > eigentlich, und funktionieren tuts auch... Davon geh ich schon aus, dass es funktioniert. Das reicht aber nicht. Ein mit Klebeband zusammengehaltener Auto-Scheinwerfer funktioniert auch und reicht trotzdem nicht. Wenn du das so machst, ist das in Ordnung, wenn dir aber eine Lehrwerkstatt beibringen will, dass das die Reparaturmethode wäre, dann stimmt da was nicht. Das Multiplxing muss umgebaut werden, das kann da so nicht bleiben. Die Schreibweise mit den binären Bytes bei den Registern kann auch nicht so bleiben. So wie das jetzt ist, ist das genau nach dem Muster: Genau so macht man das nicht. Schau dir die äussere Form an. Einrückungen, Schreibweisen, etc. Bei jedem Code-Review würde dir der Reviewer eine derartige Codequalität ohne weiteres Hinsehen sofort nach 2 Sekunden zurückschmeissen mit der AUfforderung, doch erst mal die primitivsten Hausaufgaben zu machen.
Johannes Adler schrieb: > was ist daran falsch.? bzw. mies.? Das Programm wartet 3ms beim Multiplexen bis es das nächste Segment anzeigt. Dadurch wird sehr viel CPU verbraten und zusätzlich wird die Anzeige dunkler, da keine an ist, wenn der µC nicht gerade in der Anzeige() ist. Beim Multiplexen gibt (wenn man es richtig macht) eine Variable an, welches Segment gerade an ist. In der ISR wird zum nächsten umgeschalten.
Damit keine Missverständnisse aufkommen: Ich greife nicht den Autor an, sondern das Programm. Natürlich sind wir alle nicht auf die Welt gekommen und waren perfekte Programmierer. Natürlich verstehe ich, dass jeder im Inneren einen Tom Hanks hat: "Ich habe Feuer gemacht, seht euch nur mein Werk an". Der springende Punkt ist aber, dass man als Einsteiger besser beraten ist, wenn man erst mal die Leute mit mehr Erfahrung um Durchsicht bittet, ehe man eine Veröffentlichung macht. Daran ist nichts Schlechtes.
Karl Heinz Buchegger schrieb:
>In dem Fall leider schon.
Mein Fehler. Tut mir leid.
Tatsächlich hat der Tiny2313 gar kein Register namens TCCR1C.
Johannes Adler hat also keinen Fehler gemacht als er dies Register
einfach herausnahm. Zu meiner Entschuldigung möchte ich sagen, dass eine
Begründung an dieser Stelle hilfreich gewesen wäre. Aber dennoch wäre es
vor einer Antwort meine Pflicht gewesen das nachzuprüfen.
ich hab grad den atmega8 im gebrauch...selbst der hat keinen...
Noname schrieb: > Mein Fehler. Tut mir leid. > Tatsächlich hat der Tiny2313 gar kein Register namens TCCR1C. Aber selbstverständlich hat der attiny2313 ein TCCR1C-Register. Die alten atmega8 und Co. haben das nicht. mfg.
das weiß ich gar nicht...habe mich noch nie mit tiny beschäftigt... wenn ich im avr 5 den µc einstelle, sehe ich, dass TCCR1C nicht makiert ist, bedeutet, den gibt es im µc nicht.
Johannes Adler schrieb: > das weiß ich gar nicht...habe mich noch nie mit tiny beschäftigt... Genau genommen müsste man jetzt im Datenblatt des Tiny Anweisungen wie diese hier
1 | TCCR1A = 0b00000000; //Timer im CTC-Mode; Prescaler 256; CPU-Clock |
2 | TCCR1B = 0b00001100; //Timer im CTC-Mode; Prescaler 256; CPU-Clock |
3 | TCCR1C = 0b00000000; //Timer im CTC-Mode; Prescaler 256; CPU-Clock |
4 | TIMSK = 0b01000000; //Interrupt bei Compare Match |
auseinanderdröseln um zu sehen, welche Bits da beim Tiny gesetzt wurden. Danach muss man hergehen und die gleichwertigen (und im Regelfall auch gleihnamigen) Bits im Datenblatt des Mega8 suchen und nachsehen an welchen Bitpositionen sie beim Mega8 sitzen. Ziemlicher Aufwand, der auch nicht dadurch besser wird, dass die Belegung binär hingeschrieben wird. Mach das mal und du wirst sehen, dass du in den Datenblättern ständig hin und her scrllen musst. Und genau aus diesem Grund ist diese Schreibweise Müll und wird auch durch den Kommentar nicht besser. Die Bitnamen zu benutzen ist zwar auch nicht der Weisheit letzter Schluss (weil es immer noch Fehlermöglichkeiten gibt), aber sie ist zumindest insofern besser, dass das dauernde Rumscrollen in den Datenblättern welches Bit denn nun welches ist, wegfällt. Mann kann sich auf die Bitbeschreibungen konzentrieren.
Meine Güte. Thomas hat recht.
Es gibt das TCCR1C Register. Ich habe bei Timer 0 geguckt.
Ist da überhaupt Koffein in meinem Kaffee? :-{
Zum AVRStudio 5 kann ich nichts sagen. Verwende noch Version 4.
Willst Du uns verarsc..., Johannes? :-) Mega8 nicht Tiny2313! OK. Da hat Timer 1 kein TCCR1C Register.
ja sorry...hatte echt nicht dran gedacht, bzw. gelesen, dass auf der seite attiny2313 stand.
ja und was macht der.? brennen wahrscheinlich, von da her.
bei der belegung, steht hinter PD0(anode von den anzeigen) pnp transistor... da werde ich Standard bc557 nehmen...doch wie muss ich den schalten.?
Ja, natürlich. Du kannst jeden Transistor nehmen, der den Strom mindestens abkann und schnell genug ist. Bei den Frequenzen, um die es hier geht, ist aber jeder Bipolar-Transistor schnell genug. Bleibt also nur noch die Frage des Stroms. Wenn der Transi auf der C_E Strecke mehr Strom abkann schadet das ja nicht.
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.