Guten Abend allerseits.
Das mein erster Post gleich eine Frage ist (hoffentlich nichts zu
dämliches), bitte ich zu verzeihen. Ich werde das Forum auch nicht nur
als Fragekasten missbrauchen, versprochen ;-)
Zuerst sei gesagt, dass ich leider keinerlei Erfahrung mit
Mikrokontrollern habe. Ich habe schon zwar ein paar Schaltungen
aufgebaut (XBox USB NAND Flasher und PS3 Jailbreak Dongle), da war aber
eigentlich schon alles soweit fertig vorgegeben. Aber Platinen entwerfen
und ätzen habe ich dabei gelernt. Unklare Ausführungen und eventuell
dumme Fragen bitte ich zu entschuldigen, ich habe immer erst versucht,
selber zu Suchen und zu Finden. Auch ist meine Beschreibung hier
ellenlang, aber nur so gebe ich euch die Möglichkeit, sinnvoll über mein
Problem nachzudenken.
Mein Problem ist folgendes: Ich möchte eine einfach Uhrenschaltung mit
einem ATTiny2313 aufbauen. Ziel ist es, eine Uhr zu haben, die pro Tag
nicht 24 sondern 32 Stunden vergehen lässt. Generell soll das ganze ein
Replikat der folgenden Vorlage sein:
http://blackstrom.derschwarz.de/avr/avr_uhr/index.shtml
Ich habe das ganze allerding ohne das ISP-Element gebaut, da ich den µC
in einem selbstgebauten Programmer beschreiben wollte.
Programmiertechnisch ist das mit den 32 anstatt 24 Stunden kein Problem,
ich muss ja nur die Load_timer Konstante ändern (auf ¾ des aktuellen
Wertes) und die Stundenzählroutine umschreiben, dass bis 32 hochgezählt
wird, nicht nur auf 24. Hab ich noch nicht gemacht, sollte aber kein
Problem sein.
Ich habe aber momentan ein Problem mit der Schaltung an sich. Ich habe
das ganze aufgebaut, und es funktioniert auch, leider nur teilweise. Das
Programm (unveränderte 24-Stunden Version) habe ich mit PonyProg (ja,
schlecht, ich weiß) auf den µC geladen, kein Problem. Wenn ich den µC in
die Schaltung einsetze und eine Spannung anlege, dann wird nichts
angezeigt. Drücke ich allerdings einen der Taster zum Einstellen von
Stunde bzw. Minute, dann leuchten die 7-Segment-Anzeigen auf und
entweder Stunde oder Minute zählen hoch. Flimmert zwar stark, aber
funktioniert. Solange bis ich die Taste loslasse, dann sind wieder alle
Segmente aus.
Fazit bis hier:
-Programm scheint auf µC richtig hochgeladen worden zu sein
-Strom richtig angeschlossen
-Anzeigeelemente richtig angeschlossen (vorher auch überprüft)
-Taster richtig angeschlossen
=> Ergo: Probleme mit dem Quarz
Das Problem ist, das ich einen Quarz mit 2 Beinchen habe, keinen
Quarzoszillator mit 3 Beinen. Hatte den erst so verwendet wie den
Oszillator, also ein Bein an +5V, eins an XTAL1. Dass das nicht
funktionieren kann, habe ich schnell herausgefunden.
Sollte ja auch kein Problem sein, wenn man diesen zwischen XTAL1 und
XTAL2 setzt, dann von jedem Quarzbein jeweils noch einen Kondensator
Richtung Grund und gut ist.
Testen konnte ich das leider nur mit 100nF Kondensaturen, 22pF wie
empfohlen habe ich grade nicht da.
Weitere Alternative: Testen mit einem Keramikresonator.
Hatte grade noch welche mit 12MHz da, zu schnell aber zum Troubleshooten
hoffentlich egal, läuft die Uhr halt drei mal so schnell. Laut
Produktdatenblatt das erste Bein an XTAL2 (Input), das zweite an Gnd,
das dritte an XTAL1 (Output).
=> Das gleiche wie mit dem falsch angeschlossenen Quarz
Nächster Schritt: Testen, was die Schaltung ohne angeschlossene
„Peripherie“ an XTAL1 und XTAL2 tut. Ergebnis: Genau das gleiche wie
bisher
=>Es muss etwas mit dem Taktgeber nicht stimmen.
Weiter nachgelesen, erste Infos zu CKSEL-Werten erhalten. Nachgeschaut,
auf dem µC war 0100 eingestellt, also default. Dass er dann ignoriert,
was ich an den XTALs veranstalte ist klar. Aber sollte er dann nicht mit
dem internen Taktgeber von 8MHz (bzw 1MHz wenn CKDIV8 aktiviert ist)
arbeiten?
Daher hier meine Frage(n):
1.) Hätte die Schaltung nicht trotzdem mit dem internen Taktgeber
funktionieren sollen (Ungenauigkeiten und falsche Taktrate mal außen
vorgelassen)?
2.) Enthalten die HEX-Dateien schon Einstellungen für die CKSEL-Werte?
(Ich hatte früher schon PICs mit WinPic800 beschrieben, der hatte sich
immer alle Einstellungen individuell pro HEX-Datei gemerkt, daher frage
ich)
3.) Welche CKSEL-Werte hätte ich setzen sollen, wollte ich das ganze
noch mal erst mit dem Keramikresonator bzw. dem Quarz testen?
Kann ich leider nicht mehr, habe eine Sache mit den CKSELs ausprobieren
wollen, die ich für die richtige gehalten habe, war aber wohl falsch.
Komme nun mit dem Programmer nicht mehr in den µC und muss erstmal einen
passenden Taktgeber á la
Beitrag "Re: External Clock ATTiny26" besorgen).
Was habe ich eventuell verbockt, daß die Schaltung zwar teilweise
funktioniert, aber nicht ganz?
Vielen Dank schon mal für eure Ratschläge.
Christian S. schrieb:> 1.) Hätte die Schaltung nicht trotzdem mit dem internen Taktgeber> funktionieren sollen (Ungenauigkeiten und falsche Taktrate mal außen> vorgelassen)?
Ja. Schon allein die Tatsache, dass Du flashen konntest, zeigt, dass Du
einen Takt hast. Wenn das Programm trotzdem nicht lief und Flashen +
Verify OK war, hilft nur die Suche nach der Ursache, im Programm und in
der Hardware.
> 2.) Enthalten die HEX-Dateien schon Einstellungen für die CKSEL-Werte?
Nein. .hex ist ausschließlich Flash-Inhalt.
> 3) 3.) Welche CKSEL-Werte hätte ich setzen sollen
Die müsste ich mir auch erst mal aus dem Datenblatt heraussuchen.
Versuch's doch erst selbst, und wenn Dir ein Merkmal unklar ist, kannst
Du ja gerne nachfragen.
So, wie ich das verstanden habe, läuft der AVR, zumindest bei
Tastendruck irgendwie. Ohne irgendeinen verwendbaren Takt, sollte das
nicht sein, daher würde ich mal den Quarz ausschließen. Um's erstmal
an's Laufen zu bekommen, sollte auch der interne Resonator ausreichen
(CKSEL auf 0011 oder 0010 für ca. 4MHz).
Das, was du nachbaust war aber für den AT90S2313 entwickelt und nicht
für den Tiny2313, gerade bei den Timern gibt es Unterschiede. Wenn du
die Software einfach übernommen hast, wird diese die falschen
IO-Register beschreiben und nichts funktioniert mehr, wie es soll. Der
90S2313 hatte bspw. nur TCCR0, der Tiny2313 hat TCCR0A+B, das müsste
dann wohl angepasst werden.
@Mark:
Danke für den Hinweis, das ganze war mir komplett entgangen, da ich
AT90S2313 bei Reichelt eingegeben habe, aber als Ergebnis nur der
ATTiny2313 kam. Da wird wohl der Hund begraben liegen, denn die
Schaltung sollte (bis auf den Quarz) fehlerfrei sein.
Wenn ich das Programm neu kompiliere, muss ich dann nur "$regfile" und
die Ports passend auf den ATTiny2313 ändern? Andere Chip-Spezifische
Variablen/Deklarationen scheint das Programm ja nicht zu haben.
Muss mich da dann noch mal was mehr reinlesen, aber danke schonmal ;-)
Gern geschehen.
Christian S. schrieb:> Wenn ich das Programm neu kompiliere, muss ich dann nur "$regfile" und> die Ports passend auf den ATTiny2313 ändern?
Die Ports dürften geblieben sein, aber die Einstellbits für den Timer
sind vermutlich anders, evtl. muss halt noch ein zweites Byte
eingestellt werden(aus TCCR0 wird TCCR0A+TCCR0B). Wenn du in den
Datenblättern die Angaben zu den Timer-Control-Registern vergleichts,
siehst du die Unterschiede.
Hallo
Ich habe genau diese Schaltung nachgebaut und hatte das gleiche Problem
mit dem flackern.
ich habe den mit dem programm (myAVR Workpad PLUS Demo) verwendet ist
ein gratis programm auf deutsch.
Dort musste ich die Fuse seiten und nahm den hacken bei (Divide clock
bei 8 internally) den hacken rausnehmen und dan noch den externen
Oszillator mit 4MHz anwählen dan gings.
Vieleicht ist das bei deinem Programm anderst. Mit welchem Programierst
du den?
Ich habe auch den ATTiny2313 genommen.
hoffe konnte einwenig helfen
@Fabian:
Danke für das Aufgreifen des doch schon etwas älteren Threads. Leider
stecke ich momentan mitten in einem Umzug, daher habe ich die Bastelei
leider etwas zurückstellen müssen. Hast du quasi das komplett gleiche
Problem wie ich (also das die Uhr nichts anzeigt, und das starke
Flackern beim einstellen der Zeit), oder nur das Flackern (dann
permanent)?
Ich hatte in Ermangelung weiterer Vorkenntnisse einfach mal mit PonyProg
programmiert und hatte mir dazu eine passende Schaltung gebaut.
Werde das ganze aber auf jeden Fall nochmal überprüfen sobald ich meinen
Bastelkrams wieder beisammen habe.
Danke schonmal, werde hier wieder berichten, sobald ich mehr weiß ;-)
hallo
bei mir war nur das mit dem Flakern aber das mit dem nichts anzeigen
verstehe ich nichts.
Ich habe es mit bascom gemacht Pony prog kenne ich leider nicht