Autor Thema: I2C-Bus-Steuerung mit GfA-Basic?  (Gelesen 2458 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline soldermaSTer

  • Benutzer
  • Beiträge: 133
I2C-Bus-Steuerung mit GfA-Basic?
« am: So 18.10.2015, 17:22:42 »
Hallo,

um den ST um einige IO-Ports und andere Hardware erweitern zu können hatte ich an den I2C-Bus gedacht. - Im Web habe ich den Artikel "Videotext-Dekoder für den Atari-ST" von Till Harbaum gefunden, bei dem auch der I2C-Bus beschrieben und eine Schaltung angehängt ist. -

Frage: Hat jemand von euch die softwaremäßige I2C-Steuerung schon mal mit GfA-Basic realisiert?

Gruß soldermaSTer

...es gibt eben Dinge zwischen Plus und Minus, die können Du und ich sich einfach nicht erklären!?

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #1 am: So 18.10.2015, 21:57:09 »
Dazu wird das GFA-basic zu langsam sein auch das compilat.

Um so ein I2C zu steuern muss man es in "C"  oder ASM (Turbo-ASM welches INLINE erzeugt für GFA-Basic) programmieren. Aber die Inline-Aufrufe werden wohl auch vom GFA-Basic zu langsam sein.

Wenn du basteln möchtest, kauf dir einen Arduino mit Netzwerkplatine und steuere diesen vom Atari ST aus an und schon kannst du über den Arduino verschiedene Geräte ansteuern.
Und du ersparst dir evtl einige Kurzschlüsse am schönen ST.

Vielleicht gibt es ein GFA-Basic-Programm welches schon mal Verbindung mit einem Netzwerk aufnehmen kann?

Gruss
« Letzte Änderung: So 18.10.2015, 22:15:41 von peter hold »

Offline Börr

  • Benutzer
  • Beiträge: 631
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #2 am: Mo 19.10.2015, 13:10:05 »
Nimm Arduino und dann Seriell.

Offline mfro

  • Benutzer
  • Beiträge: 884
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #3 am: Mo 19.10.2015, 14:25:01 »
Hab's noch nie probiert, aber zumindest grob überschlägig müsste i2c (im ursprünglichen, langsamen 100 kBit/s Modus) eigentlich mit zwei Pins der parallelen Schnittstelle realisierbar sein.

Die parallele Schnittstelle schafft (lt. Spezifikation, ob das im ST der Fall ist, wäre zu prüfen) 150 kB/s, der i2c-Bus will mindestens 100 kBit/s sehen.
Wenn man's schafft, die PSG-Register schnell genug zu toggeln, könnte es sein, daß man das gerade so hinkriegt (möglicherweise muß man auf clock stretching ausweichen).

Offline KarlMüller

  • Benutzer
  • Beiträge: 170
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #4 am: Mo 19.10.2015, 18:05:43 »
Wenn man's schafft, die PSG-Register schnell genug zu toggeln, könnte es sein, daß man das gerade so hinkriegt.
Bei der genannten Seite ist der Quellecode in C dabei. Es zeigt zumindest das es geht.

Offline soldermaSTer

  • Benutzer
  • Beiträge: 133
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #5 am: Mi 21.10.2015, 19:15:13 »
Hi,
hatte auch schon vermutet, dass ich wenn auf Inline ASMs angewiesen wäre, weil reines GfA-Basic zu langsam ist. -

Nimm Arduino und dann Seriell.

@ Börr,
kannst du mir deinen Vorschlag etwas genauer erläutern? -
  • Arduino an der RS232-Schnittstelle des ST anschließen?
  • Arduino nutzen, um I2C-Teilnehmer anzusteuern?
  • Mittels GfA-Basic Daten zum Ardiuno senden?
  • Dann brauche ich für den Arduino eine SW, die das von RS232 auf I2C umsetzt!?

Gruß soldermaSTer
...es gibt eben Dinge zwischen Plus und Minus, die können Du und ich sich einfach nicht erklären!?

Offline Börr

  • Benutzer
  • Beiträge: 631
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #6 am: Do 22.10.2015, 10:40:32 »
>    Arduino an der RS232-Schnittstelle des ST anschließen?

Dazu brauchst du noch einen Max232 dazwischen.

    Arduino nutzen, um I2C-Teilnehmer anzusteuern?

https://www.arduino.cc/en/Reference/Wire

    Mittels GfA-Basic Daten zum Ardiuno senden?

Ist glaube ich nur ein einfach Befehl, mußt halt die Baut richtig einstellen.

    Dann brauche ich für den Arduino eine SW, die das von RS232 auf I2C umsetzt!?

Ich habe gerade mal gesucht, es gibt auch direkte Adapter z.B HIER

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #7 am: Do 22.10.2015, 23:05:29 »
Es ist Blödsinn , einen  Adapter zu kaufen für knapp 30 Euro.

http://www.ebay.de/itm/like/261603056480?ul_noapp=true&chn=ps&lpid=106

Gruss
.

Offline Börr

  • Benutzer
  • Beiträge: 631
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #8 am: Fr 23.10.2015, 07:37:05 »
Ähm doch, natürlich kann man auch über LAN raus, aber dann mußt du erstmal auf dem Atari LAN zum laufen bekommen. Alles über RS232 geht "out of the Box" oder wie man das nennt, es geht in erster Linie darum etwas sehr einfaches zu empfehlen, was einfach so geht. Ohne da noch Software drauf zum laufen zu bekommen. Ich hatte auch einen RS232 Adapter für 2,30 € gefunden. Aber dann brauchst Du noch ein Arduino der mit Software gefütterert werden will. Ich weis nicht ob man einen Arduino auch mit Basic füttern kann?  soldermaSTer mag nur Basic und ASM, deswegen habe ich so einen Adapter vorgeschlagen, es ist einfacher die passende Hardware zu kaufen, um dann in seiner lieblingssprache zu Coden! Lieber die Hardware verbiegen als die Software  :P

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #9 am: Fr 23.10.2015, 08:56:58 »
Beim Arduino muss du leider "C" können.
Es gibt aber eine Menge Software für den Arduino, unter anderem auch für LAN und auch für die Huckepack-Platinen. Und für den ST gibt es auch Hardware um mit dem LAN zu spielen.

http://www.mats-vanselow.de/arduino-ins-netz-bringen

Es lohnt sich aber den Arduino und das  Arduino Ethernet Shield zu kaufen, kostet knapp 29 Euro.
Wenn du lust am tüfteln hast kannst du über das Netz Daten empfangen mit dem Arduino und einfach mit RS232 an den ST übertragen.

Die Grenzen sind offen für das Experiement.
Ich habe mir jetzt mal den Satz bestellt um meinem MIST-FPGA damit zu betreiben.

Gruss
« Letzte Änderung: Fr 23.10.2015, 11:20:07 von peter hold »

Offline mfro

  • Benutzer
  • Beiträge: 884
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #10 am: Fr 23.10.2015, 11:48:25 »
Bei der genannten Seite ist der Quellecode in C dabei. Es zeigt zumindest das es geht.

... und der Quellcode sieht recht simpel aus. Er schreibt/liest direkt die Hardware-Register des PSG im Supervisor-Mode. Sollte eigentlich in (fast) jeder beliebigen anderen Sprache genauso möglich sein.

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #11 am: Fr 23.10.2015, 12:02:53 »
Ich habe mir die Arduino-IDE runtergeladen und mal das Netzprogramm  compiliert.

Ich hoffe das mein Gerät in einpaar Tagen da ist

Gruss
« Letzte Änderung: Fr 23.10.2015, 12:05:43 von peter hold »

Offline Lynxman

  • Benutzer
  • Beiträge: 1.631
  • Nicht Labern! Machen!
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #12 am: Sa 24.10.2015, 10:00:37 »
Die parallele Schnittstelle schafft (lt. Spezifikation, ob das im ST der Fall ist, wäre zu prüfen) 150 kB/s, der i2c-Bus will mindestens 100 kBit/s sehen.

Nein, der I2C will nicht mindestens 100kbit/s haben.
Es gibt 3 (evtl. inzwischen mehr) Spezifikationen in denen das maximum mit 100k/400k/1Mbit/s angegeben wird. Ein Minimum kann ich auf die schnelle in den mir vorliegenden Datenblättern nicht finden.
Man muss sich, wenn man die minimum Ratings beachtet, noch nicht mal große gedanken zum Thema Symetrie machen. d.h. wenn die Bits unterschiedlich "lang" sind stört das in der Regel nicht.

Auf C oder ASM umsteigen würde ich mir erst mal verkneifen und es einfach mal ausprobieren.
Hat überhaupt jemand einen Handfesten Hinweis das GFA-Basic die Parallele Schnittstelle langsamer anspricht als C?
Nur weil Basic draufsteht ist es nicht zwingend langsamer.
Ich weis es nicht, habe noch nie in GFA-Basic Programmiert.
PM an mich bei Interesse an
4MB ST, 14MB Falcon Memory, 10MB ST-RAM für TT, Lynx Solitaire oder FlashCard.
Unterstütze die OFAM: hier klicken
Aktuelle Lynx FlashCard Firmware: hier klicken

Nerd? I prefer the term INTELLECTUAL BAD ASS

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #13 am: So 25.10.2015, 09:06:46 »
Lass einfach mal eine Schleife laufen in GFA-BASIC mit dem Compilat
Dann siehst du , ob dein Atari es schafft.
Versuche es doch mal mit der MIschung GFA-Basic und dem INLINE.

Wenn du ein Atari hast mit 30MHZ , dann wird es wohl hin hauen mit dem hin und herspringen zwischen dem Programmablauf und dem I2C-Takt.

Gruss

Offline soldermaSTer

  • Benutzer
  • Beiträge: 133
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #14 am: Mi 28.10.2015, 20:47:06 »
Es ist Blödsinn , einen  Adapter zu kaufen für knapp 30 Euro.
.

Hallo zusammen, natürlich sind 30,-Euro für solch ein RS232-nach-I2C-Platinchen schon ziemlich happig. - Andererseits...

...und dies ist natürlich persönliche Geschmacksache, lechze ich ja wie Börr schon ganz richtig erkannt hat danach, nach langer Zeit mal wieder hardwarenah etwas mit GfA-Basic zu machen und nicht, mich mit dem Arduino zu beschäftigen. -

Ich werde mich wohl mal näher mit den Programmbeispielen bei Horter&Kalb beschäftigen und mir überlegen, ob ich deren Modem zur Ansteuerung externer IOs nutze.

Gruß soldermaSTer
...es gibt eben Dinge zwischen Plus und Minus, die können Du und ich sich einfach nicht erklären!?

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #15 am: Mi 28.10.2015, 22:14:23 »
Das Modem ?
http://www.horter.de/i2c/i2c-modem/i2c_modem_1.html

Mein  Arduino MEGA 2560 ist günstiger als so ein Bausatz der oben angeboten wird.
MEGA 2560 für ca. 14 Euro.
http://www.ebay.de/itm/like/401007330651?ul_noapp=true&chn=ps&lpid=106

So schicke ich die Daten über die serielle Schnittstelle vom MIST raus mit GFA-Basic.
Der MEGA 2560 wandelt die um in I2C nach meinem Vorgaben.

Daten zum MEGA 2560
'
FOR a=65 TO 90
  PAUSE 1
  OUT 1,a
NEXT a

Daten vom MEGA 2560
inp_aux$=""
'
DO
  WHILE INP?(1)
    inp_aux$=CHR$(INP(1))
    PRINT inp_aux$;
  WEND
LOOP UNTIL MOUSEK

Gruss
« Letzte Änderung: Mi 28.10.2015, 22:52:01 von peter hold »

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #16 am: Mi 28.10.2015, 22:41:44 »
Zitat
Ähm doch, natürlich kann man auch über LAN raus, aber dann mußt du erstmal auf dem Atari LAN zum laufen bekommen.

Hmm.., ich ging jetzt von meinem MIST-FPGA aus, der den MEGA-ST beschreibt  :
16 MHZ , 8 MB  RAM , 2x Disk je 2,88 MB , 2 Festplattenimage 64MB und 500 MB
Habe da Internet, Server über WLan (DIGITUS) und die serielle Schnittstelle am laufen.
Programme sind : STING, CAB, LITCHI, TROLL die da laufen und ihre Aufgabe auf dem MIST
erfüllen.

Gruss
« Letzte Änderung: Mi 28.10.2015, 22:45:53 von peter hold »

Offline Börr

  • Benutzer
  • Beiträge: 631
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #17 am: Do 29.10.2015, 14:14:14 »
Man kann einen Arduino auch mit BASIC Programmieren, dann brauchst du nur einen UNO
BASCOM

Offline peter hold

  • Benutzer
  • Beiträge: 257
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #18 am: Do 29.10.2015, 22:19:14 »
Hmmm..., das Bascom kostet kapp 90 Euro.

Und mit der Freeware reichen die 4KB Programm nicht.
Weiterhin überspielst du den geflashten Bootloader und du kannst keine Programme mehr mit dem
USB-Anschluss vom Arduino laden. Auch musst du dir ein speziellen Stecker basteln um dein Bascom-Programm zuladen.


Gruss
« Letzte Änderung: Fr 30.10.2015, 13:26:41 von peter hold »

Offline Ptermres

  • Neuer Benutzer
  • Beiträge: 4
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #19 am: Sa 23.01.2016, 17:38:59 »
Ich grabe diesen Thread einfach mal wieder aus.

I2C legt nur die maximale Clock-Frequenz fest, als Mindestwert wird in vielen Datenblaettern von Bausteinen sogar explizit "0 kHz" angegeben.

Aber wenn Du da einen SAA5246 dranhaengst, reden wir ueber 1024 Bytes a 9 Bits pro Seite, d.h. es waere schon wuenschenswert, moeglichst nah an die 100kHz zu kommen.

Mit einem "I2C-Modem" am Standard-MFP ist bei 19200bps Schluss, da dauert der o.g. Transfer schon rund 1/2 Sekunde. Also am besten einfach mal in GFA testen und ggf. auf Inline-ASM schwenken.

Der Druckerport bietet sich fuer sowas an, dort hing bei mir ein modifizierter c't-Decoder (die Standardversion nutzt RS232-Handshake-Leitungen) dran.