Forum: Mikrocontroller und Digitale Elektronik Uhr von http://www.mikrocontroller.net


von Johannes A. (kleinerkeiler96)


Lesenswert?

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.

von Floh (Gast)


Lesenswert?

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?

von Johannes A. (kleinerkeiler96)


Lesenswert?

quarz stimmt...

wie mach ich das.?

"Compiler Optimierung anschalten."

von Hubert G. (hubertg)


Lesenswert?

Im AVR-Studio4 unter Project / Configuration Options

von gaast (Gast)


Lesenswert?

Johannes Adler schrieb:
> quarz stimmt...

Das war nicht die Frage, die du übrigens immer noch nicht beantwortet 
hast.

von Johannes A. (kleinerkeiler96)


Lesenswert?

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...

von Noname (Gast)


Lesenswert?

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.

von Johannes A. (kleinerkeiler96)


Lesenswert?

es geht aber auch ohne...wie ich es vor mir habe...dann sag mal an, wie 
man dieses problem lösen könnte.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Bastler (Gast)


Lesenswert?

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"

von Johannes A. (kleinerkeiler96)


Lesenswert?

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.?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Sam .. (sam1994)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Noname (Gast)


Lesenswert?

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.

von Johannes A. (kleinerkeiler96)


Lesenswert?

ich hab grad den atmega8 im gebrauch...selbst der hat keinen...

von Thomas E. (thomase)


Lesenswert?

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.

von Johannes A. (kleinerkeiler96)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Noname (Gast)


Lesenswert?

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.

von Noname (Gast)


Lesenswert?

Willst Du uns verarsc..., Johannes? :-)

Mega8 nicht Tiny2313! OK. Da hat Timer 1 kein TCCR1C  Register.

von Johannes A. (kleinerkeiler96)


Lesenswert?

ja sorry...hatte echt nicht dran gedacht, bzw. gelesen, dass auf der 
seite attiny2313 stand.

von Johannes A. (kleinerkeiler96)


Lesenswert?

andere frage...was benutzt ihr für ein µc brenner.?

von Noname (Gast)


Lesenswert?

>andere frage

anderer Thread

:-)

von Johannes A. (kleinerkeiler96)


Lesenswert?

ja und was macht der.?
brennen wahrscheinlich, von da her.

von Johannes A. (kleinerkeiler96)


Lesenswert?

bei der belegung, steht hinter PD0(anode von den anzeigen) pnp 
transistor...

da werde ich Standard bc557 nehmen...doch wie muss ich den schalten.?

von Karl H. (kbuchegg)


Lesenswert?


von Johannes A. (kleinerkeiler96)


Lesenswert?

vielen dank...:)

von Johannes A. (kleinerkeiler96)


Lesenswert?

aber bc557 kann ich trotzdem nehmen oder.?

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.