DCF77 Uhr mit Nixie Röhren

TubeFiebig

Mitglied
30. Jan. 2012
34
0
6
Delmenhorst
Sprachen
Moin zusammen,
Ich habe bei dem Bascom Code für meine Nixie Uhr ein Problem wo ich nicht mehr weiter kommen.
In der:
Subroutine zur Ausgabe im BCD-Code wird der Shift Befehl benutzt.

Shift Bcd_byte , Left , 4

Es sollen beim Port D 4 Bits nach links geschoben werden.
Das geht auch.

Aber die Ports Portd.0 und Portd.1 sind nicht mehr ansprechbar.
Ob es bei den Portd.1 und Portd.2 auch so ist weiß ich noch nicht.
Diese beiden Ports sollten die Nixie HV und eine LED-Beleuchtung Aus / Ein schalten.
Was mache ich da falsch.
Hänge den Code hier mit dran,
Schönen Tage noch,
Wolfgang
Anhang anzeigen dcf77_nixie_in8-2_v1.2.zip
 
Hallo Wolfgang!

Ich weiß jetzt nicht, warum du den Programmcode nicht direkt hier ins Forum eingestellt hast.... aber OK. :wink:

Es wäre vorteilhaft, wenn ich noch einen Anschlussplan bekommen könnte.
Das Programm habe ich mir schon angesehen und einige Dinge wollen sich mir zur Zeit noch nicht erschließen.
Ich habe mir das Programm aber auch eben nur mal fünf Minuten angesehen.
Um es komplett zu verstehen, brauche ich wohl noch etwas länger. :wink:

Nun aber mal zu dem, was mir gleich aufgefallen ist.
Da ist z.B. dieser Passus hier, in der Sub BCD_AUSGABE:
Code:
Bcd_byte = Wert                                          'Umwandlung String --> Byte

Hier erfolgt KEINE Umwandlung ins Byte!
Die Variable WERT ist ein String * 1
Die Variable BCD_BYTE ist ein Byte

Wenn WERT (als String) nun den Ziffer 5 hat, dann steht in dem Speicherbereich des AVR die ASCII-Nummer.... also 35hex !
Diese 35hex werden dann in den Speicherbereich von BCD_BYTE kopiert.
Mehr passiert da nicht!

Du hast also hinterher weder die Zahl 5 als Byte vorliegen, noch als BCD-Format (wobei das bei Zahlen von 0-9 egal ist :wink: )!
Dies müsste auch der Grund sein, warum dein SHIFT 4 nicht den gewünschten Effekt hat.


Wenn wir bei meinem Beispiel bleiben, dann würde aus der 5 (als String) also nur eine 35hex (als Byte) kopiert.
35hex sind dezimal 53 (binär= 0011_0101)!

Mit SHIFT, LEFT, 4 multiplizierst du lediglich die 53dez mit 16 !
53dez * 16 = 80dez im Byte (binär= 0101_0000)
Naja eigentlich sind es 848!
Da du aber nur ein Byte hast und kein Word, fallen die beiden Werte 256 und 512 heraus!
Also.... 848 - 512 -256 = 80 :wink:

Na, fällt dir nun insgesamt etwas auf? :D



Ich hoffe, du hast verstanden was ich meine. :cool:

Grüße,
Cassio
 
Oder meintest du damit das Einstellen in die Code-Tags ?


Moin Dino!

Jepp!
So war es gemeint!
In der ZIP-Datei befindet sich nämlich nur die BAS-Datei! :wink:

Ist aber OK, wenn er das so möchte!
Habe das Programm ja letzte Nacht schon kurz durchgesehen......

Mir fallen da noch so einige Dinge ein/auf, aber darum geht es jetzt erst mal nicht. :cool:


Grüße,
Cassio
 
Hallo Cassio und dino03,
Danke für die schnelle Antwort.
Ich habe mich nicht mit den Regeln und Möglichkeiten hier im Forum
( wie was wo ) ich eingeben , einstellen könnte beschäfigt.
Mit meinen 60 Jahre setze ich andere Piroitäten.
Wie dem Röhrenverstärker Bau oder diese Nixie Uhr.
Der Code ist nicht von mir. Ich möchte ihn aber an meine Bedürfnisse
anpassen. Das Schaltbild zeigt die original Schaltung.
Ich habe aber eine eigene Platine angefertigt. Die Erzeugung der 170Volt
mache ich mit einem Schaltnetzteil mit dem IC NE555.
Anstatt des Weckers möchte ich die NixieRöhren Aus / Einschalten können.
Mus kucken ob ich die Anregung des SHIFT, LEFT, 4 umsetzen kann.
Anbei der Schaltplan der Uhr.
Grüße,
Wolfgang

dcf_77_IN-8-2_Schaltbild.jpg
 
Hallo Wolfgang!

Na, dann will ich dir mal eben kurz einen Tipp geben....

Wenn du einen numerischen Wert in Form eines Strings in ein Byte umwandeln möchtest, dann musst du VAL verwenden. :wink:

In deinem Fall wäre das dann also:
Code:
Dim Wert As String * 1
Dim Bcd_byte As Byte


Wert = "5"
Bcd_byte = Val(wert)

Nun würde in der Variable Bcd_byte die Fünf in binärer Form vorliegen.... also => 0000_0101

Wenn du nun das SHIFT , LEFT , 4 einsetzt, dann werden die unteren vier Bits nach "Oben" (links) geschoben.
Code:
Shift Bcd_byte , Left , 4

Damit würde das Byte nun so aussehen => 0101_0000
Nun sollte die Ansteuerung der AVR-Pins D4 bis D7 auch wieder passen.


Grüße,
Cassio
 
Hallo Cassio,

Habe es heute mit dem Val Befehl mit der Hardware getestet.
Das mit dem Verschieben mag wohl gehen. das konnte ich noch nicht testen.
Aber das Problem was auch schon vorher war ist das ich die Port's D0 / D1
nicht mit Set / Reset oder Toggle Ein oder Ausschalten kann.
Das gleiche wird auch wohl bei D2 / D3 .
D3 ist der Eingang für den DCF77 Empfänger.
D2 ist der Ausgang für den 1 wire Temperatursensor DS1820.
Das wäre meine nähste Frage:
Muß der PortD.2 am Controler als Ausgang oder Eingang für den DS1820 eingestellt werden.

Code:
' *************** Hauptprogramm Schleife

Do

If Pinb.5 = 0 Then                                          ' LED°s Aus / Ein Schalten
Waitms 300
   If Pinb.5 = 0 Then
   Toggle Portd.1
   Waitms 300
   End If
End If

Habe diesen Code ins Progamm eingefügt. Wenn ich die Subroutine: Bcd_Ausgabe
blockiere kann der Portd.1 geschaltet werden.

Ich glaube zu verstehen woran es liegt.
Bei dem Beispiel:

Wert = "5"
Bcd_byte = Val(wert)
Shift Bcd_byte , Left , 4
ist ja dann 0101_0000

Es wird aber jede Sekunde ein BCD Code zum Port d4 - D7 gesendet.
Denn das IC 74141N ist ein Bcd zu dezimal Wandler.
Für die Nixie-Ziffern 0 bis 9
Somit wird wohl auch die Port's D0 bis D3 immer wieder auf 0 gesetzt.
Wie mache ich es nur den BCD-Code an die Port's D4 bis D7 zu schicken.
Dann werden die unteren 4 Bytes wohl nicht mitgesetzt

Viele Grüße,
Wolfgang
 

Ü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)