Display zeigt komische Symbole an...

Ja, das NG sollte reichen. Du solltest aber, wenn nicht schon gemacht, nach den Sicherungen, denn die haben ja auch nicht 0 Ohm, für beide Spannungen noch einen Elko >100µ und einen Kondensator 100n spendieren.
 
Ich habe direkt nach der Sicherung einen 220uF für den 5V Teil angeschlossen, somit sollte das jetzt auch passen.
Für den 12V Teil muß ich das noch nachholen, wird aber wohl nicht so relevant sein für das Display, das arbeitet ja nur mit 5V wie auch der AVR.

Seit dem einlöten der Elkos spinnt der DS1307..
Auslesen und schreiben der Zeit geht, aber sie läuft nicht mehr.
Weder der AVR zählt die Zeit hoch, noch der DS1307. Batterie ist angeschlossen und hat 3.2V..

Kann es an den Timern liegen, ich habe neuerdings den Timer0 noch in Benutzung,
bin mir nicht mehr ganz sicher ob die Zeit danach noch weiterlief, meine aber schon.:confused:
 
Hi,

Seit dem einlöten der Elkos spinnt der DS1307..
Auslesen und schreiben der Zeit geht, aber sie läuft nicht mehr.
Weder der AVR zählt die Zeit hoch, noch der DS1307. Batterie ist angeschlossen und hat 3.2V..

also wenn ich nicht weiß ob es an der Hardware oder an der Software liegt, dann kopier ich das Programm und schmeiß alles raus was für eine Funktion (zB DCF77) nicht benötigt wird. Das einzige was bleibt ist die Initialisierung vom LCD. Dann kann ich diese eine Funktion testen und die Ergebnisse anzeigen lassen. Danach gehts dann weiter.

Das mache ich auch wenn ich was neues zusammengebaut habe. Das erste Programm was da drauf kommt testet erstmal alle LEDs, Taster, UART, LCD, ... (was eben drauf ist) durch und zeigt die Ergebnisse an. Zum Beispiel lassen die Taster dann einfach ne LED aufleuchten und fertig ist. Dann hab ich von der Hardwareseite die Gewissheit das da alles läuft.

Noch was zu diesen Lötstreifenrastern ... da bin ich gar kein Freund von. Die verwende ich nur wenn ich zB ne Elkobatterie bauen muß. Im Normalfall nehme ich nur Lötpunktraster oder Lötstreifen mit diesen 3er Gruppen (also 3 Löcher zu nem Streifen zusammengefaßt). Die langen Lötstreifen bilden mit den quergelegten Drähten auf der Bauteilseite für HF-Schaltungen sehr schlechte Voraussetzungen. Die Leitungslängen sind einfach zu lang. Das mag meißtens funktionieren aber nicht immer. Mit den Lötpunkten werden die Schaltungen um einiges kompakter und die Leitungen kürzer. Das ist für Schaltungen mit hohen Frequenzen ein entscheidender Vorteil. Zur Verdrahtung nehme ich Drahtreste von Bauteilen oder Fädeldraht. Bei mir hätte ich nur etwa 1/3 von dem Platinenplatz belegt gehabt.

Gruß
Dino
 
Ja, die Hardware hatte ich vorher schon komplett durchgetestet, hatte alles funktioniert, danach kamen halt mal wieder kleine Veränderungen....

Habe bereits angefangen alles raus zu schmeißen, es liegt soweit wohl nicht an der Hardware.
Als ich in meinem DS1307 Demo Programm die Sekunden _Sec manuell mit einem Wert beschrieben hab, dann ging die Uhr wieder.
Die hatte vorher nur 80 angezeigt.

Jetzt such ich nur noch den Fehler im Hauptprogramm, dann gehts erst weiter mit dem Display----:cray:
 
So, die Uhr läuft wieder.
Nach dem setzen der Sekunden im Demo Programm läuft sie jetzt auch wieder im Hauptprogramm.
Bin mal gespannt ob die Display Fehler wieder auftreten.

Mit den Platinen hast du wahrscheinlich recht, wir haben die früher in der Ausbildung immer benutzt, daher habe ich die halt wieder benutzt.
Speziell was das Bohren von den Löchern zwischen den ICs angeht, sollte die von dir genannte um einiges einfacher sein :)

Ich wollte eigentlich bei der nächsten Version eine Platine bestellen, gibt ja Händler die einem für ein paar € die Dinger machen, allerdings kämpfe
ich da noch mit dem Layout... learning by doing dauert bei der CAD Software etwas länger oO. :)
 
Hi,

So, die Uhr läuft wieder.
Nach dem setzen der Sekunden im Demo Programm läuft sie jetzt auch wieder im Hauptprogramm.
Bin mal gespannt ob die Display Fehler wieder auftreten.
im DS1307 gibt es ein Stop-Bit in einem Register das dir die Uhr anhält. Eventuell war die Uhr dadurch nur angehalten.

Mit den Platinen hast du wahrscheinlich recht, wir haben die früher in der Ausbildung immer benutzt, daher habe ich die halt wieder benutzt.
Speziell was das Bohren von den Löchern zwischen den ICs angeht, sollte die von dir genannte um einiges einfacher sein :)

Ich wollte eigentlich bei der nächsten Version eine Platine bestellen, gibt ja Händler die einem für ein paar € die Dinger machen, allerdings kämpfe
ich da noch mit dem Layout... learning by doing dauert bei der CAD Software etwas länger oO. :)
Einzelstücke sind sauteuer. Das lohnt sich dann nur wenn du nicht auf das Geld siehst und eine "schöne" Schaltung haben möchtest. Dann sollte die Schaltung aber entweder bereits komplett durchdesignd und funktionsfähig sein (es wird also sowieso schon ein Prototyp laufen) oder du bist dir sicher das die Platine so paßt und nicht geändert werden muß. Im Endeffekt wird sich also im Hobbybereich nur eine selbstgeätzte Platine wirklich lohnen.

Die Lochstreifenraster werden gerne in der Ausbildung verwendet weil die Leiterbahnen und die im 90°-Winkel dazu verlaufenden Brücken eher zu den früheren gerouteten Platinen passen. Da hat man das auch ähnlich geroutet oder der Autoroouter hat das so gemacht. Außerdem gibts dafür ja diese Designprogramme für Schaltungen auf Lötstreifenraster.

Manche machen bei Punktraster die Draht-Leiterbahnen auch in diesem Abstand und löten die überall auf jedem Lötpunkt fest. Das ist auch kontraproduktiv weil es auch sehr viel Platz kostet. Für einfache Schaltungen mag das noch gehen. Für komplexere läuft das dann auch gegen die Wand.

Ich denke erstmal drüber nach an welcher Stelle des zentralen Bausteins (hier der Atmel) welche anderen Teile platziert werden müssen. Dadurch kann man ungefähr den Platz an den Seiten des Bausteins erahnen der benötigt wird. Notfalls stecke ich es einfach mal lose auf eine Platine drauf. Dann wird dieser zentrale Baustein festgelötet. Danach werden die umliegenden Bauteile vom zentralen Baustein ausgehend angeordnet. Dabei wird immer im Kopf kurz durchdacht ob die Platzierung so passen könnte und ob man sich dadurch nicht den räumlichen Zugang zu anders benötigten Pins verbaut. Notfalls wird dann einfach noch ne isolierte Leitung quer gezogen :rolleyes:

Aber ich glaube das schweift grad vom eigentlichen Thema ab :eek:

Gruß
Dino
 
hm, ja, damit hast du natürlich auch wieder recht. Wenn es erstmal so läuft wie ich es haben möchte, macht es dann Sinn das nochmal zu machen nur
damit es schöner aussieht? Wahrscheinlich nicht.
Aber ich habe mich bei dieser Platine (eigentlich sind es 2, auf der 2. sind die MOSFets und die SSRs sowie der LM358) schon so verschätzt, das ich den Transistor am
Reset schon auf der Rückseite anbringen musste....
Dann hab ich mich dazu entschieden den Timer0 noch zu nutzen, für PWM, somit musste ich die Pins für die Schalter neu frei verdrahten..
Dadurch ist der Atmega 48 jetzt aber über :)
Ich dachte mir wenn ich alle Änderungen immer schön in meinem Target Schaltplan einpflege, kann ich, falls sich wieder was größeres ändert,
einfach die Platine bestellen und alles läuft wie es soll. (Naja, so die Theorie, das mit dem Layouten sehe ich als etwas komplizierter an und keine Ahnung wie
man das mit mehreren Ebenen macht.. Schon der ISP Stecker an den AVR zu bringen hat mich Zeit gekostet und das Ergebnis is fragwürdig.)

Bei Conrad kostet so ein Ding, ca. 40€ was mir der Spaß sicher nicht Wert wäre..
Bei dem hier kostet das mit Versand 11,40€ aber auf Mails scheinen die nicht zu reagieren...
Den Preis fände ich schon recht gut.
Allemal günstiger als selber zu Ätzen, da hätte ich abgesehen vom Preis auch keinen Platz für..
Aber bis dahin, werde ich mich noch weiter den herkömmlichen beschäftigen.

Du nutzt nicht zufällig Tagert 3001?
 
Einen wunderschönen guten Abend :)
Alter Thread, altes Thema...

Das Display spinnt wieder rum... s.u.




Wäre super wenn da jemand noch einen Tip hat!



Hallo Tenor!

Ich habe dein Programm eben nur mal schnell durchgesehen und dabei ist dann folgendes aufgefallen:

Code:
Dim _sec_bcd As Byte , [B]_min_bcd[COLOR="#FF0000"] As Byte[/COLOR] , _hour_bcd[COLOR="#FF0000"] As Byte[/COLOR] , _day_bcd [COLOR="#FF0000"]As Byte[/COLOR][/B] , _month_bcd As Byte , _year_bcd As Byte , _wd As Byte

Dim Sekunde As Integer , Zeitabgleich As Integer , Monat As String * 4 , [B]Stunde As String[COLOR="#FF0000"] * 4[/COLOR] , Minute As String [COLOR="#FF0000"]* 4[/COLOR] , Tag As String [COLOR="#FF0000"]* 4[/COLOR][/B]


Später im Programm folgt dann noch dies:
Code:
      Stunde = Str(_hour) : Stunde = Format(stunde , "00")
      Minute = Str(_min) : Minute = Format(minute , "00")

.
.
.

            Tag = Format(tag , "00")


Dies könnte meiner Meinung nach Probleme mit sich bringen.
Du formatierst zwar die Strings auf zwei Stellen, aber an der gesamten Variable ändert das nichts.


Warum musst du die Strings denn vier Zeichen groß dimensionieren?
Würde ein String * 2 nicht ausreichen?


Grüße,
Cassio
 
Hallo Cassio,
besten Dank, ich habe das mal in meinem Code geändert, wäre mir glaube ich nie aufgefallen:rolleyes:
Wobei ich mir nicht sicher bin ob so etwas ein Problem beim Display verursachen kann.
Die Variable mag ja 4 Stellen haben, aber es werden nur 2 an das Display gesendet, so dachte ich mir das zumindest.

Naja, ich habs erstmal angepasst und jetzt muß ich mal wieder warten..
 
Hallo Tenor!

Es war wohl gestern doch schon etwas spät und der Programmcode zu lang.

Ich habe mich da vertan, denn die von mir gemarkerten Bytes sind ja nicht die konvertierten. :banghead:
Sorry, mein Fehler!

Mal nebenbei....
Warum hast du für die Sekunden eigentlich einen Integer verwendet? :hmmmm:


Auf Grund deiner vielen Schleifen und Variablen würde ich die Stack- und Framewerte noch mal etwas hochsetzen.
Code:
$framesize = 128
$swstack = 128
$hwstack = 128


Ich bin aktuell der Meinung, dass deine Probleme eher Speichertechnisch sind und nicht direkt etwas mit dem Display zu tun haben.


Grüße,
Cassio
 
Hallo Cassio,
dennoch lass ich das mit dem string * 2, spart ja auch speicher ;)
Ok, dann setze ich die Werte auch noch mal hoch, da glaub ich dir mal blind, die rühre ich eigentlich nie an :fie:

Da hast du noch alten Programm Code ausfindig gemacht:D
Die Variable Sekunde, hat keine Auswirkung, hab sie eben rausgemacht. Wurde noch im Timer hochgezählt und das war´s.

Die entscheidende ist daysek und die ist ein dword, da ich die gesamten Sekunden des Tages brauch um immer die aktuelle Phase
bestimmen zu können.

Gruß
Tenor
 
So, die ersten 24h ohne Probleme, hoffe mal das das auch so bleibt :)
 
Hallo Tenor!

Wie sieht es mit dem zweiten 24h-Test aus?
Immer noch alles gut? :)


Vielleicht solltest du den Wachhhund mal abschalten.
Nicht das ein anderes Problem sich nicht bemerkbar machen kann, weil der Wachhund den AVR nach dem Hängenbleiben gleich wieder neustartet.

Generell halte ich von diesem Wachhund nicht viel.
Ein Programm sollte grundsätzlich ohne diese Option störungsfrei funktionieren!


Grüße und schöne Weihnachtstage,
Cassio
 
Hi,

Vielleicht solltest du den Wachhhund mal abschalten.
Nicht das ein anderes Problem sich nicht bemerkbar machen kann, weil der Wachhund den AVR nach dem Hängenbleiben gleich wieder neustartet.

Generell halte ich von diesem Wachhund nicht viel.
Ein Programm sollte grundsätzlich ohne diese Option störungsfrei funktionieren!

seh ich ähnlich. Ein zickiges Programm mit dem Watchdog zum laufen zu bekommen ist wie nen Marathonläufer auf ner steinigen Piste mit der Peitsche anzufeuern statt ihm vernünftige Schuhe zu geben.

Ein Watchdog ist nur dafür da einen Prozessor wieder in einen definierten Zustand zu bringen wenn er durch äußere Einflüsse (EMV, Spannungsschwankungen, ...) aus dem Tritt gekommen ist. Manche benutzen ihn auch um den Atmel beim Stromsparen zyklisch aus dem Tiefschlaf zu holen.

Gruß
Dino
 
Eure Abneigung gegenüber dem Watchdog kann ich nicht verstehen. Bei mir ist der in jedem Projekt aktiviert, meistens sogar zwangsweise per Fuses.

Es kann ja immer mal etwas passieren. Wie die angesprochenen Spannungsschwankungen, EMV, verbuggtes Programm, ... sodass der Controller nicht mehr so reagiert wie er sollte. Vielleicht weil der PC auf einmal im Datenbereich gelandet ist und sich dort fest fährt. Und bevor nachher womöglich noch was schlimmes passiert (Kurzschluss durch falschen I/O, überdrehender Motor durch hängengebliebenes PWM, ...) ist es besser einfach alles abzuschalten. In der Industrie ist dies sogar für irgendeine ISO Norm zwingend erforderlich. Daher mussten wir immer diese sau teuren Siemens SPS Dinger verwenden statt selber ein paar Relais an einen AVR zu "tackern". Man muss ja nicht den Controller "resetten" lassen (im Sinne von normal danach weiterlaufen) sondern kann das MCUSR Register abfragen wo drin steht wodurch der Controller zurück gesetzt worden ist und denn nur eine Fehler-LED blinken lassen wenn der durch den Wachhund oder BOD, ... aufgeweckt worden ist.

Ich finde den Watchdog genau so Sinnvoll wie eine Sicherung in einem Netzteil. Natürlich könnte man die weg lassen und sich auf die 16A Haussicherung verlassen, aber lieber nicht. :)
Aber so hat jeder seine Meinung :)


(p.S.: Dass der Text hier automatisch gespeichert wird ist auch eine schöne Sicherung. Mir ist grade beim Tippen der Nachricht mein Opera gecrasht)
 
Hallo Zusammen,
du hast mal wieder alten Code gefunden :D
Der config Watchdog war noch drin, aber der Watchdog wird nirgends mehr gestartet.

Das Programm läuft immer noch 1A! Tut was es soll :)

Ich denke auch das ein Watchdog seine Berechtigung hat, ich hatte den in meinem alten Programm aktiv zwecks Übertragung zum Atmega 48 via TWI.
Vor der Sendeschleife, habe ich den gestartet, da ich an der Stelle mehrfach Probleme hatte das die beiden Controller den Wert nicht richtig ausgetauscht hatten.
Da ich aber auf einen AVR reduziert hab, ist der Code rausgeflogen, nur der Config Teil noch nicht :)

Aber das ändere ich erst später, möchte sehen das der wenigstens über Weihnachten sauber durchläuft, da bin ich nämlich nicht zu Hause.
Danach gibts erst wieder Änderungen.

Dann wünsche ich schon mal Frohe Weihnachten!

Gruß
Tenor
 
Hallo!

Damit das hier nicht weiter falsch verstanden wird....

Der Wachhund kann später im echten Dauereinsatz ganz hilfreich sein und seine Berechtigung haben.
Wir befinden uns HIER aber zu 99% bei der Entwicklung von Programmen und..... dessen Problemen. ;)

Da hat der Wachhund meiner Meinung nach einfach nichts zu suchen!
Erst wenn das Programm wirklich störungsfrei läuft, kann er ggf. zusätzlich aktiviert und ins Programm mit aufgenommen werden.

Soll aber jeder so machen, wie er meint. :cool:


Grüße,
Cassio
 
Hallo,
ich hoffe ihr seit alle gut ins neue Jahr gekommen!

Das Display zeigt nach wie vor nur das an was es soll, denke der Spuk ist jetzt vorrüber :)

Viele Grüße
Tenor
 
Das Programm läuft nun immer noch, denke da ist jetzt nichts mehr zu erwarten :)

Ich denke das Cassios Tipp mit den Stack Werten ausschlaggebend war.
Ist der Wert von dir jetzt ein Daumenwert gewesen?
Oder kann man das irgendwie berechnen?
Hat das negativen Einfluss wenn die zu hoch sind? Falls nicht, warum sind die dann nicht immer gleich auf Maximum?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)