• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Wählscheibentelefon, bräuchte da mal Hilfe

geoWuscht

Geocacher
Hallo zusammen,

hab auch noch ein W48 aufm Speicher gefunden. Wollte das Projekt jetzt auchmal angehen. Kann mir vielleicht jemand sagen, wie ich NSI und NSA klemmen muss? versteh das nochnicht ganz.

Gruß
geoWuscht
 

upigors

Geowizard
na wenn du 4 drähte von der wählscheibe hast sind 2 nsi und 2 nsa.
die musst du ausklingeln.
dann kommen je einer auf grd und je einer auf Pinb.0 und Pinb.1
welcher jetzt welcher ist musst du mal testen. hast ja 50% chance und kaputt kannst nix machen ;)
die beiden schalten quasi als potenzialfreie kontakte grd auf die beiden pins.
war die erklärung jetzt zu verstehen?
 

Geomane

Geocacher
Wenn es wirklich ein W48 ist, hast Du möglicherweise die Aderfarben weiß, braun, gelb und grün. Mit großer Wahrscheinlichkeit ist dann weiß/braun am nsa und gelb/grün am nsi.
 

geoWuscht

Geocacher
Hat inzwischen alles funktioniert. Alles soweit fertig und jetzt musst ich feststellen, dass mein Batteriehalter kaputt ist. Testen kann ich also erst nächste Woche.

Trotzdem schonmal danke.
 

nhedgehog

Geocacher
Nachdem ich mich fleissig hier durchgearbeitet habe, dachte ich: versuchs doch mal.
Leider hänge ich fest und komme nicht weiter.
Grundlage ist der Code von Peter51d http://www.geoclub.de/viewtopic.php?f=57&t=60705&start=13#wrapheader

Mein Problem ...
liegt in der Subroutine "Impulse:". Bei der Addition der Variablen A beim Wählen wird scheinbar nur jeder 2. Impuls gezählt, obwohl alle Impulse ankommen (angezeigt durch die zweite LED an Portb.2).
Der Versuch das Ganze künstlich zu verlangsamen (Waitms 80) hat ebensowenig gebracht wie die Verstellung der Fuses oder die Erhöhung der Betriebsspannung auf 4,5V oder die Spielerei mit Debounce.
Die Fuses:
Fabrikeinstellung (9,6 MHZ 64ms ...) nur der achtfache Teiler ist ausgeschaltet. hwstack, swstack und framesize wurden auch mit den verschiedensten Einstellungen ausprobiert.

Und zuguterletzt habe ich sogar noch einen brandneuen Attiny13V ausprobiert, dasselbe Problem.

Anschlüsse wie hier im Forum beschrieben, NSA PB.0 - NSI PB.1 - aber die Impulse werden ja richtig angezeigt und entprellt, nur die Addition der Variable A klappt nicht zuverlässig.
Heraus kommt:
Gewählt - A
1-1
2-1
3-2
4-2
5-3
6-3
7-4
8-4
9-5
0-5


Hier der Code:
Code:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 2
$swstack = 5
$framesize = 20


'Codeabfrage über Wählscheibentelefon


'Ein und Ausgänge konfigurieren

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output

'Alias Namen zuweisen
Falsch Alias Portb.2                                        'rufzeichen "kein Anschluss unter dieser Nummer"
Nsi Alias Pinb.1                                            'Impulsleitung vom Nummernschalter
Nsa Alias Pinb.0                                            'Nummernschalterkontakt, für Wählscheibe dreht oder steht
Ansage Alias Portb.3                                        'Ansage der Informationen
Bereit Alias Portb.4                                        'Wählbereitschaft anzeigen

'Interne pullups zuschalten
Portb.0 = 1
Portb.1 = 1

'Variablen zuweisen
Dim A As Byte
Dim Temp As Byte                                            'Anzahl der Impulse pro Wahlvorgang
Dim Nummer As String * 10                                   'Der String in dem die gewählte Nummer geschrieben wird
                                                             ' !!genau so gross wie der String "Rufnummer"!!
Dim Rufnummer As String * 10                                'Der String in dem die zu wählende Nummer festgelegt wird
                                                             'die max länge ist hier auf 10 Nummern beschränkt


'Alle Variablen auf Null setzen
A = 0
Nummer = ""                                                 'Sicherstellen, das String leer

'Alle Ausgänge auf 1 setzen
Falsch = 0
Ansage = 0
Bereit = 0

Config Debounce = 15
'Hauptprogrammschleife

 Rufnummer = "7634528109"                                   'Hier die zu wählende Nummer eintragen

'Abfrage des Nummernschalters
Do
                                                  'Wählbereitschaft anzeige

Debounce Nsi , 1 , Impulse , Sub                            'Impulsschalter entprellen und Sprunganweisung
Debounce Nsa , 1 , Auswerten , Sub                          'Wählscheibe abgelaufen entprellen und Sprunganweisung

Loop

'Impulse hochzählen
Impulse:
Bereit = 1
Incr A
Waitms 80
Bereit = 0
Return

Auswerten:
Gosub Kontrollzeichen
A = 0
Return

Kontrollzeichen:
For Temp = 1 To A
   Falsch = 1
   Waitms 500
   Falsch = 0
   Waitms 500
   Temp = Temp + 1
Next Temp
Wait 1
Return





End                                                         'end program

Vielleicht hat ja einer von euch noch eine Idee, mir brummt nur noch der Schädel von all dem Debouncing. :???:
 

rainmuel

Geocacher
Spontan sehe ich das Problem hier:
Do
Debounce Nsi , 1 , Impulse , Sub
Debounce Nsa , 1 , Auswerten , Sub
Loop

probiere mal das hier statt dessen:
Do
Debounce Nsi , 1 , Impulse , Sub
gosub Auswerten
Loop

So wie ich es vermute wartet Debounce, bis Impulse ankommen, z.B. steigende Flanke und Auswerten anschließend wartet auf fallende Flanke. Wenn jetzt die Flanke schon gefallen ist, bevor die Routing Impulse zurück kommt, würde das genau diesen effekt erklären.
 

rainmuel

Geocacher
Haaaalt, nochwas:
Kontrollzeichen:
For Temp = 1 To A
Falsch = 1
Waitms 500
Falsch = 0
Waitms 500
Temp = Temp + 1
Next Temp
Wait 1
Return

Hier ist etwas doppelt, das erklärt die zu wenigen Kontrollzeichen:
Die For-Anweisung zählt A schon von selbst hoch. Wenn du noch zusätzlich Temp mit Temp=Temp+1 hoch zählst, kommt es zu halb so vielen Blinken...
Das wird es mit allerhhöchster Wahrscheinlichkeit gewesen sein.

Schönen Happy-Cadaver
 

nhedgehog

Geocacher
rainmuel schrieb:
Haaaalt, nochwas:
Kontrollzeichen:
For Temp = 1 To A
Falsch = 1
Waitms 500
Falsch = 0
Waitms 500
Temp = Temp + 1
Next Temp
Wait 1
Return

Hier ist etwas doppelt, das erklärt die zu wenigen Kontrollzeichen:
Die For-Anweisung zählt A schon von selbst hoch. Wenn du noch zusätzlich Temp mit Temp=Temp+1 hoch zählst, kommt es zu halb so vielen Blinken...
Das wird es mit allerhhöchster Wahrscheinlichkeit gewesen sein.

Schönen Happy-Cadaver


Danke für den prompten Support, genau das war es. Nun geht alles!
Gruß Uwe
 

Teddy-Teufel

Geoguru
rainmuel schrieb:
Spontan sehe ich das Problem hier:
Do
Debounce Nsi , 1 , Impulse , Sub
Debounce Nsa , 1 , Auswerten , Sub
Loop

probiere mal das hier statt dessen:
Do
Debounce Nsi , 1 , Impulse , Sub
gosub Auswerten
Loop
Das Problem besteht überhaupt nicht. Habe keine Probleme mit dem Code von Peter gehabt, bei mir war es damals die Wählscheibe, welche mich zur Verzweiflung gebracht hat. Sie gab die Impulse nicht sauber raus. Kontakte gesäubert und erledigt, allerdings ist hier Feingefühl notwendig.
 

stonewood

Geowizard
englishfire schrieb:
Hallo,
eine Frage: Kann ich den Code von peter51d irgendwie auf einen Arduino übertragen?
Ist das möglich?
Grundsätzlich sind die arduinos ja 'nur' AtMega mit ein wenig weiterer Beschaltung rundum. Aber dann ist die Frage wie Du den bascom hex-code auf den Chip kriegen willst? Per SPI-Programmer den Bootloader zu überschreiben geht natürlich, aber dann brauchst Du auch wieder einen Programmer. Außerdem ist dann natürlich noch die Frage welcher AtMega nun auf Deinem Arduino ist - wenn der pin/funktionskompatibel zum AtMega8 ist sollte das grundsätzlich gehen, ansonsten mußt Du das Programm entsprechend auf die Gegebenheiten anpassen.

Und nein, ich hatte noch keinen Arduino in der Hand, das oben hab ich mir aus ein wenig Hörensagen und ein paar Webseiten zum Thema zusammengereimt. Kann also auch ein wenig am Thema vorbei sein. Sind die arduinos vielleicht sogar zu bascom kompatibel?
 

englishfire

Geomaster
Danke für die Beantwortung meiner Frage. Am einfachsten scheint es zu sein, wenn ich den Code einfach für den Arduino umschreibe. Kann mir jemand vielleicht Hilfestellung leisten?
 

speerwerfer

Geocacher
Also ich habe seit gestern auch zwei Wählscheibentelefone zu Hause.

Erste Versuche werde ich ziemlich sicher mit meinem Arduino Uno machen. Bei Interesse werde ich die Sketches hier posten ...
 

speerwerfer

Geocacher
Kein Problem, aber macht Euch keine Hoffnung, dass es heute Abend schon Code gibt. Bei mir kann so was immer dauern :)

Es muss sozusagen erst in mir reifen, bis der Drang etwas zu basteln so groß wird, das ich mich an die Werkbank setze :D
 

speerwerfer

Geocacher
@all: welche Soundmodule setzt ihr ein, um die Nachricht oder Besetztzeichen oder "Kein Anschluss unter dieser Nummer" auszugeben?

Reagiert von Euch jemand auf 110 oder 112 - fänd ich noch ne lustige Idee ...
 

hcy

Geoguru
Ist nicht eilig. Ich benutze am Ardunio das Lady Ada Wave shield. Aber eher aus historischen Gründen.
Eigentlich wollte ich mein Telefon komplett über die 2-Draht-Schnittstelle steuern (d.h. die Elektronik auch nicht einbauen sondern nur über 2-Draht anhängen), also darüber wählen, den Ton ausgeben (erst Freizeichen und nach dem Wählen die jeweilige Ansage) und auch klingeln lassen. Aber das scheint mir nicht so einfach...
 

hcy

Geoguru
Ne, war auch mehr 'n Bastelprojekt. Ich sag ja, aus historischen Gründen.
Hast Du evtl. 'ne Idee mit dem Klingeln und wie man gleichzeitig Ton ausgeben und Wählimpulse einlesen kann ohne das Probleme zu kriegen?
 
Oben