RS232 <-> TWI / I2C INTERFACE (Assembler) ATmega8

OP #287928
Mit diesem kleinen Interface kann man problemlos einen

TWI (I2C) Bus per RS232 ansteuern und

Daten von einem SLAVE abfragen oder DATEN zu einem SLAVE senden.


Anwendungsmöglichkeiten:
- welche Slaves befinden sich am TWI-BUS
- DATEN-BYTES an den SLAVE senden
- DATEN-BYTES von einem SLAVE empfangen
- einzelne Ansteuerung und Abfrage aller TWI-Register (z.B. TWCR/TWSR)
- mit welcher maximalen TWI-SCL-Frequenz kann gearbeitet werden
- welche Daten befinden sich gerade in einem TWI-EEPROM

Das RS232-Protokoll ist relativ einfach gehalten und besteht im
einfachsten Fall aus 9 Zeichen:

1.Zeichen =>"*" (Vorspann)
2.Zeichen =>Befehl (z.B. 50 für MT+DATEN+STOP)
3.Zeichen =>Reserve
4.Zeichen =>Anzahl der zu sendenden Zeichen (low)
5.Zeichen =>Anzahl der zu sendenden Zeichen (high)
6.Zeichen =>Anzahl der zu empfangenen Zeichen (low)
7.Zeichen =>Anzahl der zu empfangenen Zeichen (high)
8.Zeichen =>"#" (Nachspann)
9.Zeichen =>"#" (Befehlskette-Ende)

Beispiele:
-Ist SLAVE "80" vorhanden: *(50)(80)(0)(0)(0)(0)(0)# #
 Antwort vom Interface: (0)(0)    <= ist vorhanden
 Antwort vom Interface: (0)(110)  <= ist nicht vorhanden

-Zwei Zeichen(3+4)an SLAVE(80)senden: *(50)(80)(0)(2)(0)(0)(0)#(3)(4)#
 Antwort vom Interface: (0)(0)    <= alles ok

-vier Zeichen vom SLAVE(81) emfangen: *(80)(81)(0)(0)(0)(4)(0)# #
 Antwort vom Interface: (0)(BYTE1)(BYTE2)(BYTE3)(BYTE4)(0) <= alles ok

Ein Windows-Programm habe ich auch mit beigefügt, welches
Sondefunktionen beinhaltet z.B.:

-die SCL-Taktrate lesen/setzen
-einen EEPROM auslesen/schreiben
-alle TWI-Register auslesen/schreiben


Bernhard
Angehängte Dateien:
Hallo Bernhard !

Da ich mich erst in letzter Zeit mit AVR's beschäftige, bin ich erst 
jetzt auf deinen sehr interessanten Beitrag gestoßen. Alle Achtung, dein 
angefügtes Windows-Programm spielt alle Stücke !!
Für mich als Einsteiger wäre natürlich der Quell-Code dieses Programms 
von Interesse, da ich dem Programm entnehme, dass es als "Hausbus" zur 
Heizungssteuerung usw. verwendet wurde und ich an einem solchen schon 
einige Zeit arbeite und experimentiere. Ich nehme an er ist in VB 
erstellt.
Gibt es diesen Zugriff ?

Viele Grüße / Hanspeter
Gast
Hallo,
das Windwos-Programm startet bei mir nicht. Startet das nur, wenn es den 
ATmega gefunden hat oder ist das ein anderer Fehler? Im Log stehr nur 
"Start".

Grüße

Fabian
@Fabian

Hatte das selbe Problem, man braucht neben den Installierten Visual 
Basic 5.0-Laufzeitdateien (Msvbvm50.exe) noch die MSCOMM32.OCX (siehe 
Anhang), die Datei einfach in den win\system32 Ordner und schon sollte 
es gehen ;-).

@Bernhard

Geiles Projekt, hat mir sehr geholfen.
Vielen Dank!


MFG Kingdude
Angehängte Dateien:
Gast
Hallo,

wär es möglich den sourcecode für obiges Windowsprogramm zu erhalten.
dann könnte man selber dran weiterentwickeln, bzw ich möchte die Abfrage 
meiner Counter gerne in ein anderes Programm ( Heizungsinterface) 
integrieren.

mfg michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.