atari-home.de - Foren

Software => Coding => Thema gestartet von: guest2696 am So 18.10.2015, 17:22:42

Titel: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest2696 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

Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Börr am Mo 19.10.2015, 13:10:05
Nimm Arduino und dann Seriell.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: mfro 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).
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: KarlMüller 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 (http://harbaum.org/till/atari/videotxt.html) ist der Quellecode in C dabei. Es zeigt zumindest das es geht.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest2696 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? -
Gruß soldermaSTer
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Börr 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 (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 (http://www.horter.de/shop24/de/i2c-hutschienen-module/29-bausatz-i2c-rs232-modem-2-4260404260707.html?gclid=CJinvLXW1cgCFQpAGwodNFABCQ)
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Börr 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: mfro am Fr 23.10.2015, 11:48:25
Bei der genannten Seite (http://harbaum.org/till/atari/videotxt.html) 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.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Lynxman 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.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest2696 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Börr am Do 29.10.2015, 14:14:14
Man kann einen Arduino auch mit BASIC Programmieren, dann brauchst du nur einen UNO
BASCOM (http://www.kh-gps.de/bascom_arduino.htm)
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: guest3744 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
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Ptermres 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.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Latz am Do 15.08.2019, 10:36:47
Hi,

...und ich grabe den Thread nochmal aus.
Ein paar konkrete Fragen:
- Hat mittlerweile jemand i2c mit GFA Basic (am Parallel-Port) realisiert?
- Wenn nicht, kann mir jemand bei der "Übersetzung" von C in Basic helfen?
  Es geht "nur" um die Routinen in der Datei "i2cfast.c" aus T.Harbaums
  Sourcen; als GFA-Anfänger brauche ich aber ein wenig Unterstützung.

Mein Ziel ist die Ansteuerung und Auswertung von "einfachen" Sensoren/i2c Chips
am Falcon, z.B. Temperatur, Druck, 4-fach analog->i2c (PCF8574) bis hin zum
IR-Entfernungsdetektor mit SI1143.
All die Sensoren senden/empfangen nur wenige Bytes, max. 10 Byte wenn man
den SI1143 zur "Wischgesten-Erkennung" (à la Minority Report) einsetzt;
Geschwindigkeit dürfte also kein Problem sein. Die "Sensoren" habe ich mir
bereits für den Lego NXT gebaut, auch die Auswertung der Daten sind dann
kein Problem wenn die i2c-Kommunikation läuft.

Wer kann mir dabei helfen? "Umwege" (z.B. über Arduino) möchte ich nicht
gehen, auch andere Programmiersprachen fallen mangels Kenntnis aus.
Einzig noch die Frage ob die serielle Schnittstelle (MODEM2) einfacher
wäre...mit HSMODEM (TOS) oder SCC.XDD (MiNT) gehen ja 115200...?

Gruß,
Latz
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Latz am Mo 19.08.2019, 10:43:57
Oje, vielleicht hätte ich meine Frage doch als skurriles EBay-Angebot
kaschieren sollen, da sind die Reaktionen immer sehr schnell... ;)  :P

Ist die Anfrage zu dumm oder (mal wieder) zu speziell?
Zur Not würde mir auch eine detailierte Beschreibung der C-Aufrufe in
i2cfast.c genügen (was passiert genau, besonders bei den "Register-Befehlen"
cgwrite...).

Irgendjemand?

Latz
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: czietz am Mo 19.08.2019, 11:41:45
Wir müssen unterschiedliche Versionen von i2cfast.c haben. Irgendwas, was "cgwrite" heißt, kommt in meiner Datei nicht vor: http://harbaum.org/till/atari/videotxt/videotxt.zip. Eigentlich ist das eine super-simple Bitbanging-Implementierung von I2C. Wenn Du das I2C-Protokoll verstehst (Du sagst ja, Du hast schon vorher damit gebastelt), ist eigentlich sofort klar, was passiert. Letztlich werden SDA und SCL entsprechend dem Protokoll "low" und "high" gesetzt und SDA wird natürlich auch gelesen.

Zu klären wäre, wie der Anschluss bei Dir aussieht: hast Du wirklich Tills Schaltung dazwischen, die einen Drucker "entkoppelt"? Oder nur den simplen Aufbau mit 2 Dioden? In letzterem Fall kannst Du Dir alle Teile mit if(prt_adap) wegdenken.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Latz am Mo 19.08.2019, 15:02:32
Sorry, in meiner "Verzweiflung" habe ich es falsch geschrieben.
Wie Till das eigentliche i2c Protokoll realisiert hat ist mir klar, ich habe nur Probleme den Parallelport
anzusteuern, sprich im Verständnis (der Umsetzung) der #DEFINE Zeilen giwrite..., giselect...
usw.

Die "einfache Lösung" mit nur zwei Dioden habe ich gar nicht gesehen...ohne Bustreiber (74xx244)?

...und klar, "IF !prt_adapt" versteht auch ein GFA-Anfänger  ;D

Danke schonmal für die Antwort,
Latz
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Thorsten Otto am Mo 19.08.2019, 15:14:31
Vlt ne dumme Frage, aber wenn du die Routinen schon in C hast, und dich mit GFA nicht gut auskennst, warum willst du es dann unbedingt in GFA realisieren? ;)
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: czietz am Mo 19.08.2019, 15:49:21
Wie Till das eigentliche i2c Protokoll realisiert hat ist mir klar, ich habe nur Probleme den Parallelport
anzusteuern, sprich im Verständnis (der Umsetzung) der #DEFINE Zeilen giwrite..., giselect...
usw.

In BASIC wären das einfach POKE- und PEEK-Befehle auf die angegebenen Adressen: Du willst Leitungen am Druckerport setzen und auslesen.

Die "einfache Lösung" mit nur zwei Dioden habe ich gar nicht gesehen...ohne Bustreiber (74xx244)?

Es kann sein, dass Du weiterhin einen Treiber brauchst -- je nach Leitungslänge. Der Parallelport des Atari ist ziemlich schwach. Aber Du brauchst keine trickreiche Umschaltung zwischen Drucker- und I2C-Betrieb. Wenn Du Open-Collector-Treiber nimmst, sind wahrscheinlich dafür die Dioden nicht nötig. Aber ich nehme an, Du weißt, wie man hardwareseitig einen I2C-Bus anbindet.
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: Latz am Mo 19.08.2019, 16:38:55
Hi,

@Thorsten Otto: Ich hab´s ein paar Mal mit C probiert und bin kläglich gescheitert, mit GFA Basic
dagegen konnte ich mehr oder weniger "aus der hohlen Hand" bereits zwei komplette funktionierende
Programme in einem Monat erstellen. Und wie in meinem 1. Post erwähnt will ich ja nicht den
Videotext-Dekoder bauen sondern andere i2c Geräte lesen+steuern.

Danke, czietz, das ist schonmal ein Hinweis. Wenn ich mal weiß wo ich anfangen (suchen) kann...
Melde mich wieder!

Latz
Titel: Re: I2C-Bus-Steuerung mit GfA-Basic?
Beitrag von: czietz am Mo 19.08.2019, 17:42:23
Denkt man sich Umschaltung Drucker/I2C weg, dann wird SDA auf der Datenleitung 0 des Parallelports ausgegeben und SCL auf der Datenleitung 1. Gelesen wird SDA über die BUSY-Leitung. Mithilfe z.B. des Profibuchs sollte so klar werden, welcher Zugriffe (d.h. PEEK/POKE [1] in BASIC) es bedarf.

[1] Wimre in GFA-Basic eher SPOKE, da die HW-Register nur im Supervisor-Modus erreichbar sind.