drehregler am joyport des atari800xl

1, 2

drehregler am joyport des atari800xl

von robbifan » Mo 21. Jan 2008, 09:49
hallo, am joyport vom atari800xl kann man ja irgendwo einen drehregler anschliessen, womit man werte von 0 - 255 darstellen kann? oder wie sind die werte?

ich habe ein atmegaboard32.

da kann ich über ein pwm-signal 0-5 volt als ausgang steuern.
die stromstärke beträgt ungefähr 20mah.

an welchen pin vom joyport des atari800xl könnte ich jetzt das pwm-signal anklemmen und dann die werte mit dem atari auslesen?
reichen die 5 volt aus um das zahlenfeld des drehreglers auszunutzen?

mfg

von HardwareDoc » Mo 21. Jan 2008, 23:48
Hallo @robbifan,

an welchen pin vom joyport des atari800xl könnte ich jetzt das pwm-signal anklemmen


ich würde vorschlagen das Handbuch des Rechners zu lesen...

Es können Potis abgefragt werden d.h. Widerstandswerte.

Mit freundlichen Grüßen

HardwareDoc :wink:

von robbifan » Di 22. Jan 2008, 08:50
ich würde vorschlagen das Handbuch des Rechners zu lesen...


da auslesen ist zur zeit nicht das problem. ich muss erst einmal den ersten schritt richtig machen.

wo schliesse ich +5v und masse an vom atmega-ausgang um den widerstandsteiler effekt zu erzielen ohne etwas zu zerstören.

ich finde auch keine angabe über die voltzahl die max enigespeisst werden kann und bei wieviel volt der max-wert erreicht wird.

ich habe so ein buch nicht.

von HiassofT » Di 22. Jan 2008, 13:49
robbifan hat geschrieben:wo schliesse ich +5v und masse an vom atmega-ausgang um den widerstandsteiler effekt zu erzielen ohne etwas zu zerstören.

Am besten garnicht. An den Paddle-Eingang gehört ein Dreh-Poti (wenn ich mich richtig erinnere 100k oder 220k gegen +5V, bin mir da aber nicht 100% sicher). Ich hatte auch schon mal versucht dort direkt eine Spannung anzulegen und musste mir dann einen neuen Pokey besorgen...

so long,

Hias

von Sleepy » Di 22. Jan 2008, 17:06
Ich würd´ auch keine Spannung direkt einspeisen.

Wenn Du den Mikrokontroller über die Paddleeingänge koppeln willst könnte das eher über ein digitales Poti gehen. Da kannst Du den Potiwert in digitaler Form vorgeben und für den XL sieht der Wert dann wie ein Widerstand aus.

Ob der Aufwand sich aber lohnt (Genauigkeit, Aufwand)?

Es dürfte einfacher sein Daten digital über den Joystickport in den Rechner zu schieben. ;-)

Sleepy

von HiassofT » Di 22. Jan 2008, 18:34
Sleepy hat geschrieben:Es dürfte einfacher sein Daten digital über den Joystickport in den Rechner zu schieben. ;-)

ACK, zB per I2C. Guus hat mal eine I2C RTC mit EEPROM auf eine kleine Platine gesetzt, inkl. 9-poligem Stecker für den Joystick Port. Ich habe dann für den Atari einen einfachen I2C Stack implementiert.

Wenn die Geschwindigkeit nicht allzu wichtig ist, klappt das hervorragend. Ausserdem ist es recht flexibel, Du kannst damit dann ja beliebige Daten austauschen. Einfach 2 I/Os am ATmega nehmen und als I2C Slave konfigurieren (ggf noch Software dazu, weiss nicht ob der ATmega das schon selber in Hardware kann). Oder gleich einen (oder mehrere) I2C A/Ds dranhängen.

so long,

Hias

von robbifan » Di 22. Jan 2008, 20:45
Wenn die Geschwindigkeit nicht allzu wichtig ist, klappt das hervorragend. Ausserdem ist es recht flexibel, Du kannst damit dann ja beliebige Daten austauschen. Einfach 2 I/Os am ATmega nehmen und als I2C Slave konfigurieren (ggf noch Software dazu, weiss nicht ob der ATmega das schon selber in Hardware kann). Oder gleich einen (oder mehrere) I2C A/Ds dranhängen.



atmega ist meine welt, i2c kein thema. tausche damit auf 3 atmega daten gegenseitig aus.

nur wo bringe ich die leitungen des i2c am atari-port an.

irgendwo musst doch auch stehen im atarifachbuch, mit welchen spannungswert die höchste zahl am paddleport wiedergegeben wird. da er meistens mit 5v arbeitet , könnten es die doch eigentlich nur sein, oder?

wie oder was für spannungen werden denn kurzgeschlossen wenn ich den joy zb nach oben bewege oder nach links.

von FlorianD » Di 22. Jan 2008, 21:48
Joystickpinbelegung:
http://www.epanorama.net/documents/joys ... games.html

Ganz einfach 5 Schalter für alle 4 Richtungen (Pin 1-4) und Feuerknopf (Pin 6) gegen GROUND (Pin 8).

Ich würde da nichts mit Spannung anschließen, sonst siehe oben: POKEY frittiert.

Für ein Paddle klemmst du ein lineares Poti mit 100k oder 220k zwischen Pin 7 (+5V) und Pin 4 oder 9 je nachdem ob Du PADDLE(1= oder PADDLE(2) willst.

von HiassofT » Mi 23. Jan 2008, 02:23
robbifan hat geschrieben:atmega ist meine welt, i2c kein thema. tausche damit auf 3 atmega daten gegenseitig aus.

nur wo bringe ich die leitungen des i2c am atari-port an.

Einfach 2 Pins der Joystick-Ports nehmen. Den PIA im Atari kann man (pro Pin) von Input auf Output umschalten, damit kann man dann leicht SCL und SDA treiben (bzw. auslesen).

Wenn Du Interesse hast, krame ich mal meinen Sourcecode für den I2C Stack raus.

so long,

Hias

von robbifan » Mi 23. Jan 2008, 19:27
Wenn Du Interesse hast, krame ich mal meinen Sourcecode für den I2C Stack raus.


das wäre super, wenn du das machen würdest.

mfg

von HiassofT » Do 24. Jan 2008, 15:51
robbifan hat geschrieben:
Wenn Du Interesse hast, krame ich mal meinen Sourcecode für den I2C Stack raus.

das wäre super, wenn du das machen würdest.
mfg

So, habe jetzt noch ein paar Kommentare hinzugefügt und den Sourcecode hochgeladen:
http://www.horus.com/~hias/tmp/atari-i2c-0.10.zip

Der Code ist im ATasm Format, Du kannst ihn direkt am PC assemblieren (siehe auch das Makefile, oder einfach direkt auf der Kommandozeile "atasm -r -otest.atr test.src" eingeben).

Das "test.src" File ist ein einfaches Test-Programm für den RTC Chip den Guus verbaut hat. Nimm es einfach als Beispiel-Programm her (auch wenn Du damit nicht direkt was anfangen kannst).

Die eigentlich wichtigen Files sind "i2c.inc" und "i2c.src".

Im i2c.inc sind die PIA Port-Bits für SDA und SCL definiert. Default ist PA7 (Pin 4 des 2. Joystickports) für SCL und PA6 (Pin 3 des 2. Joystickports) für SDA. Wenn Du andere Pins verwenden willst musst Du die Definitionen "SCLBIT" bzw "SDABIT" ändern. Falls es Probleme mit der I2C Kommunikation gibt, probiere mal "DELAYC" etwas zu erhöhen, dann wird etwas langsamer übertragen.

Die SDA und SCL der I2C Slaves kannst Du nun einfach an die Pins des Joystickports anschliessen. Vergiss aber nicht die Pull-Ups in den Leitungen (10k oder 4k7 gehen gut).

Nun zum wesentlichen, den Routinen in "i2c.src". Am Anfang des Files habe ich die wichtigsten Sachen beschrieben, hier noch mal eine kurze Zusammenfassung auf Deutsch:

Ganz zu Beginn musst Du "INIT" aufrufen. Damit werden die beiden PIA Leitungen auf Output geschaltet.

Nun kannst Du mit "RDBYT" bzw "WRBYT" Daten übertragen. Beim Senden musst Du die Bytes im "I2CDATA" Buffer ablegen (der ist in i2c.src definiert und fasst zZt maximal 8 Bytes, Du kannst ihn aber natürlich irgendwo anders hin verschieben uder auch grösser machen). Beim Empfangen werden die Daten ebenfalls in diesem Buffer abgelegt.

Vor dem Aufruf von RDBYT/WRBYT musst Du folgende CPU-Register setzen:
- A = Anzahl der zu übertragenden Bytes
- X = Slave Addresse des I2C Geräts (das unterste Bit sollte 0 sein, wird von den Routinen dann automatisch gesetzt, je nach dem ob gelesen oder geschrieben wird)
- Y = (Start-) Adresse des I2C Registers im I2C Gerät.

Nach dem Aufruf von RDBYT/WRBYT zeigt das Carry Flag an, ob die Übertragung erfolgreich war. War alles OK, so ist das Carry Flag gelöscht, bei einem Fehler ist es gesetzt.

Wenn Du Dein Programm beendest rufe vorher noch die Routine "EXIT" auf, damit werden dann die PIA Pins alle wieder auf Input zurück geschaltet.

so long,

Hias

von robbifan » Do 24. Jan 2008, 19:15
jup, danke für deine hilfe. werden es morgen testen.

mfg

von Mathy » Do 24. Jan 2008, 22:10
Hallo Matthias

Hättest Du etwas dagegen, wenn ich deine I2C Files auch meiner Interseite veröffentliche?

Tschüß

Mathy

von HiassofT » Fr 25. Jan 2008, 12:11
Hallo Mathy!

Mathy hat geschrieben:Hättest Du etwas dagegen, wenn ich deine I2C Files auch meiner Interseite veröffentliche?

Garkein Problem, stelle die Files einfach online! Je mehr Sites im Netz die Dateien spiegeln desto besser. Irgendwann werde ich die Files auch mal auf meine Site stellen, muss da eh mal eine eigene Hardware-Seite anlegen.

so long,

Hias

von robbifan » Fr 25. Jan 2008, 12:39
wenn ich die atr erstellt habe kann ich keine ladbare datei mit dem totalcommander drauf finden, wo istdiese versteckt?

mfg

von HiassofT » Fr 25. Jan 2008, 15:33
robbifan hat geschrieben:wenn ich die atr erstellt habe kann ich keine ladbare datei mit dem totalcommander drauf finden, wo istdiese versteckt?

Das Testprogramm (test.src) erstellt ein ATR-File das Du direkt booten kannst, also ohne Directory etc. drauf.

Wenn Du ein .COM File möchtest, musst Du das test.src entsprechend ändern: das "* = ORG - 16" durch "* = ORG" ersetzen und den ATR-Header und den Boot-Header (die .BYTE/.WORD statements) zu beginn löschen. Den ".IF" Block ganz am Ende kannst Du auch entfernen. Da fällt mir auf, daß da ein .ENDIF zu viel ist - scheint aber bisher nichts ausgemacht zu haben :-)

so long,

Hias

von robbifan » Sa 26. Jan 2008, 14:43
wie muss das programm aussehen wenn man das program nach dem laden in dem speicher mit dem usr-befehl aufrufen möchte?

du hast ja die pins an dem joy-port angeschlossen.
sind das die pins von den paddles oder die normalen steuerpins?

wenn du das steuersignal vom i2c draufgeben tust (hat es ja 5v signalsteuerung) dann könnte ich doch jeden anderen steuerport vom atmega nehmen um das signal zu übermitteln , oder?

mfg

von HiassofT » Sa 26. Jan 2008, 19:48
robbifan hat geschrieben:wie muss das programm aussehen wenn man das program nach dem laden in dem speicher mit dem usr-befehl aufrufen möchte?

Ich habe das schnell mal implementiert und eine neue Version hochgeladen:
http://www.horus.com/~hias/tmp/atari-i2c-0.11.zip

Ganz wichtig: in der vorigen Version (0.10) war noch ein kleiner, übler Bug: beim Lesen wurden zu viele Bytes übertragen und über das Ende des Buffers hinaus geschrieben. In der aktuellen Version ist das korrigiert.

In dem ZIP-File ist ein kleines Test-Programm in Turbo Basic (PCF8583.TUR), schau da mal rein. Vor dem Start musst Du den I2C Stack für (Turbo-)Basic laden: BLOAD "D:BASIC.OBJ". Aktuell belegt das Assembler-Programm den Bereich von $8000-$8328. Im File "basic.src" kannst Du den Adressbereich aber auch woanders hin legen.

du hast ja die pins an dem joy-port angeschlossen.
sind das die pins von den paddles oder die normalen steuerpins?

Das sind die Pins der Joysticks. Vergiss das mit den Paddles lieber ganz schnell wieder :-)

wenn du das steuersignal vom i2c draufgeben tust (hat es ja 5v signalsteuerung) dann könnte ich doch jeden anderen steuerport vom atmega nehmen um das signal zu übermitteln , oder?

Ja, klar. Du kannst die Joystick-Pins (mit Ausnahme der Trigger, die sind nur Eingänge) beliebig von Input auf Output schalten und damit dann alles mögliche anstellen. Leds dranhängen, Taster, eine RS232 komplett in Software machen oder auch ein beliebiges anderes Protokoll machen (zB 4 bit parallel I/O plus 4 weitere Steuerleitungen).

so long,

Hias

von robbifan » So 27. Jan 2008, 12:21
hallo, danke für deine ausführliche info und verbesserung. super.


mit Ausnahme der Trigger, die sind nur Eingänge)


wo sind die trigger pins am joy-port?


wenn ich jetzt vom atmega32-port 4 leitungen an den joy-port anschliesse als eingang beim joyport. muss ich dann die 5 volt masse auch mitgeben vom atmega?

mfg

von HardwareDoc » So 27. Jan 2008, 13:15
Hallo @robbifan,

wo sind die trigger pins am joy-port?

siehe mein Posting ganz oben... :roll:

wenn ich jetzt vom atmega32-port 4 leitungen an den joy-port anschliesse als eingang beim joyport. muss ich dann die 5 volt masse auch mitgeben vom atmega?


ich würde mal sagen: zurück zu den Grundkenntnissen der Elektrotechnik / Elektronik ! :oops:

atmega ist meine welt


genau ! und da bist du gefangen... ich glaube, dass du in einer Welt lebst zu der Wir kein Zugang haben ... :lol:

Mit freundlichen Grüßen

HardwareDoc :wink:

PS: nicht das jemand denkt "HardwareDoc ist böse", NEIN, mir gehen nur "Luftpumpen" auf die Nerven, nicht richtig lesen und gleich in die Tasten hauen, zudem hat er sich hier nicht gerade beliebt gemacht...
1, 2