Archiv verlassen und diese Seite im Standarddesign anzeigen : Clock=Soft Uhr läuft nicht, was ist falsch?
Habe einen Uhrenquarz an Atmega16 Anschlüsse PortC.6 und 7 angelötet.
Ich verwende folgendes testprogramm (vollständig):
$regfile = "m16def.dat"
$crystal = 12000000
Config Porta = Output
Config Portb = Output
Config Portd = Output
Config Lcd = 20 * 2
Config Lcdpin = Pin , Port = Portb , E = Portd.4 , Rs = Portd.2
Config Lcdbus = 8
Enable Interrupts
Config Date = Dmy , Separator = .
Config Clock = Soft , Gosub = Sectic
Date$ = "14/02/11"
Time$ = "12:00:00"
Porta = 1
Initlcd
Do
Cls
Lcd Time$
Waitms 500
Loop
End
Sectic:
Toggle Porta.0LCD zeigt 12:00:00 und bewegt sich keine Sekunde...
Sauerbruch
28.04.2011, 13:55
Na ja - Du weist Time$ ein einziges mal den Wert "12:00:00" zu, und veränderst ihn danach nicht mehr. Folglich zeigt er Dir immer das gleiche an...
Ohne die Softclock in Bascom zu kennen vermute ich mal, dass das Hochzählen der variablen Time$ in der Gosub "Sectic" passieren soll. Die müsste dann noch mit ´nem Return abgeschlossen werden...
Ich dachte Time$ verändert sich automatisch, bei jeder Sekunde?
Ich habe jetzt noch das return eingefügt, doch auch meine LED leuchtet nicht im Sekundentakt!
Das müsste doch wenigstens funktionieren!?!
Muss ich was an den Fusebits ändern, beim Uhrenquarz an TOSC1/TOSC2?
Wie könnte ich den Uhrenquarz prüfen?
MagicWSmoke
28.04.2011, 20:56
Definiere Stacks und Frame, wird bei Sectic in verstärktem Maß benötigt.
Es muss nix an den Fuses geändert werden, Bascom schaltet selbst den Timer 2 auf asynchron.
Hab' Deine andere Post gesehen, selbstverständlich funktioniert Sleep mit der Bascom-Uhr, verwende z.B. mit einem ATM32 Power PowerSave in einer Schleife. Jede Sekunde weckt dann der asynchrone Timer den µC auf, stellt die Sekunde eins weiter und geht wieder schlafen. Spart enorm Strom.
Funktioniert immer noch nicht.
der code sieht jetzt so aus:
$regfile = "m16def.dat"
$crystal = 12000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Porta = Output
Config Portb = Output
Config Portd = Output
Config Lcd = 20 * 2
Config Lcdpin = Pin , Port = Portb , E = Portd.4 , Rs = Portd.2
Config Lcdbus = 8
Enable Interrupts
Config Date = Dmy , Separator = .
Config Clock = Soft , Gosub = Sectic
Date$ = "14/02/11"
Time$ = "12:00:00"
Porta = 1
Initlcd
Do
Cls
Lcd Time$
Waitms 500
Loop
End
Sectic:
Toggle Porta.0
return
MagicWSmoke
28.04.2011, 21:26
Der Code ist ok, simuliert auch ok. Quarz könnte defekt sein, bei mir auf dem Steckbrett sind keine ext C's nötig. Befindet sich der Quarz an Pin 28/29 (PDIP) TOSC1/TOSC2 ?
Alternativ, versuch' das hier: https://www.roboternetz.de/community/showthread.php?52761-Uhrzeit-ohne-externen-Uhrenquarz, wobei der async. Timer mit 32kHz Quarz wegen des PowerSave-Modus vorzuziehen ist.
Es sind Pin 25/26 = C.6 und C.7 (quadratische Bauform, nicht PDIP)
Hab jetzt auch einen anderen Uhrenquarz verwendet, auch Fehlanzeige!
(beide Uhrenquarze sind jedoch recycelte, d. h ausgelötete, vielleicht sind auch beide kaputt !?! Morgen kauf ich neue.)
An meinem Oszi (mein "Spielzeug", bin aber eigentlich elektronischer Laie) kann ich aber keine Schwingung erkennen. Am Hauptquarz (12 MHz) schon.
Warum schwingt der Uhrenquarz nicht?
Es muss doch funktionieren. Da kannst du echt verrückt werden.
MagicWSmoke
28.04.2011, 22:00
Pins sind ok, mit Multimeter auf Schluss geprüft ? Evtl. ein Entwicklungsboard, bei dem die Leitungen länger sind, d.h. eine zusätzliche Kapazität besitzen oder noch woanders hingehen ? Wenn ja, Typ angeben oder Link auf Schaltbild.
so sieht das Board aus.
Kann der Abstand zu groß sein?
18666
MagicWSmoke
28.04.2011, 23:00
Kann der Abstand zu groß sein?
Nicht optimal.
Außerdem mochten die Quarze zu enge Knicke ihrer Beinchen nicht und quittierten dann den Dienst. Gibt's 'nen Schaltplan ?
Nein, den hab ich nicht. Das Board ist von ebay, aus China:
http://www.sureelectronics.net/gallery.php?id=244&img=4973
Man sieht, dass an PortC.6 tatsächlich auch noch was dran hängt, es geht eine Leiterbahn dort weg.
Ich werde diese mal kappen. Oer wie macht man das am besten? Cutter?
Dann sehen wir weiter.
MagicWSmoke
28.04.2011, 23:28
Hab'mir den Schaltplan angesehen, PC6 geht über Widerstand R4 auf eine Kombination aus C2/R2 zu SW2, offenbar zum Entprellen, schaltungstechnisch eher nicht so der Hit.
Aber klar, dadurch wird jedwede Oszillation im Keim erstickt. Ein Cutter wirkt Wunder :D
ach, verdammt. Er will nicht anlaufen.
Ich hab die Leitung gekappt.
Das Wunder blieb aus...
Ich hab versucht - mehr recht als schlecht - den Oszillator direkt an die Atmega Pins zu löten.
Kein Erfolg.
Jetzt hab ich ihn wieder an seinem alten Platz - klar, auch ohne Erfolg.
Gibts noch eine Möglichkeit was los sein könnte?
MagicWSmoke
29.04.2011, 00:17
Softwaremäßig sieht alles einwandfrei aus, gerade nochmal mit AVR-Studio geprüft. AS2 in ASSR wird gesetzt, also der asynchrone Modus ist eingeschaltet. Du kannst Dir mit:
Do
LCD TCNT2
Loop
laufend den Zustand des asynchronen Zählers anzeigen lassen. Wenn Du da immer die gleiche Zahl und nicht ein Zahlengewusel bekommst, läuft der nicht.
Das ist dann eine Hardwaregeschichte.
Übrigens, welche Bascom Version wird verwendet ?
Hallo xrider,
Config Date = Dmy , Separator = .
...
Date$ = "14/02/11"
sollten da nicht Punkte bei Date$ stehen?
Gruß, Michael
Ich habe die Version 2.0.5.0
Bei deinem Code erscheint nur das ganze Dispay mit 0 -ern. Also dann wird er wohl nicht laufen.
Danke jedenfalls für die Hilfe und gute Nacht.
Vielleicht gibts ja morgen eine neue Idee...
Ich werde auf alle Fälle einen neuen Uhrenquarz kaufen.
Hallo xrider,
sollten da nicht Punkte bei Date$ stehen?
Gruß, Michael
ich glaub das ist jetzt auch schon egal!
Aber ich werds ändern.
MagicWSmoke
29.04.2011, 00:35
sollten da nicht Punkte bei Date$ stehen?
Ja, hast Recht, bleibt aber ohne Auswirkung auf die Funktion, bzw. Nichtfunktion.
Ich habe die Version 2.0.5.0
Bei deinem Code erscheint nur das ganze Dispay mit 0 -ern. Also dann wird er wohl nicht laufen.
Ich werde auf alle Fälle einen neuen Uhrenquarz kaufen.
Kauf' > 1, die sollten günstig sein.
Auch mit neuem Quarz funzt es nicht.
Leitungen hab ich nochmal überprüft. Es besteht Verbindung Quarz / TOSC1/2.
Die Verbindung Pin6 zu Widerstand wurde gekappt.
Controller funktioniert.
Uhr geht nicht.
Sind wir jetzt am Ende?
Soll ich direktes Anlöten nochmal probieren, bevor ich aufgebe?
Übrigens hab ich das Programm mit einem anderen Board und einem ATmega32 ausprobiert
(war etwas umständlich da die Pins C.6 und C.7 fürs Display waren).
Dort funktioniert alles.
Ich hab noch vor ein paar Tagen ein 2. China-Board bestellt, da bin ich schon gespannt ob das dann gehen wird.
MagicWSmoke
29.04.2011, 21:00
Wenn Du magst kannst Du den Timer2 noch von asynchron auf normal zurückstellen, Du wirst dann bei 12MHz / 1024 / 256 ~ 46 Hz einen viel zu schnellen Sekundentakt haben, aber es sollte etwas passieren.
Porta = 1
TCCR2 = Bits(CS22 , CS21 , CS20)
ASSR = ASSR And NBits(AS2)
Initlcd
Außerdem hab' ich mir die Bilder der Platine auf der SE-Website angesehen, so wie das aussieht verschwindet Pin26/TOSC2 unter dem µC, TOSC1 & TOSC2 gehen beide über Widerstände an eine R/C/Schalter Kombination.
Würde ich sicher gehen wollen, daß da nicht noch Verbindungen bestehen die ich vielleicht nicht sehe, so würde ich R3 und R4 auslöten.
Das ist m.E. der Fehler, eine HW-Geschichte, aber nicht weil was defekt ist, sondern weil irgendwo immer noch eine Verbindung existiert, die den Oszillator ausbremst.
Ja das stimmt!
wie kann man so blöd sein.
Da gibt es tatsächlich auch eine Leitung, die ins Nirvana (wohl auf ein R) führt.
Werde ich gleich nochmal zu Cutter greifen.
Hey MagicSmoke,
du bist echt der Held!
Jetzt läuft die Uhr.
Ich danke dir dass du so beharrlich bei der Sache geblieben bist.
Und jetzt hast du mich schon fast hellseherisch (nur mit diesem dürftigen Internetbild) mit der Nase auf den (2.) Fehler gestoßen.
Ganz schön magic.
MagicWSmoke
29.04.2011, 21:29
Danke für die Blumen ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.