Forum: Projekte & Code RS232 <-> TWI / I2C INTERFACE (Assembler) ATmega8


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

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

von Hanspeter F. (efly2005)


Lesenswert?

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

von Fabian (Gast)


Lesenswert?

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

von King D. (kingdude)


Angehängte Dateien:

Lesenswert?

@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

von Ranni (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.