Forum: Mikrocontroller und Digitale Elektronik Peter Fleury's I2C libs


von der Gast (Gast)


Lesenswert?

Hallo, ich hätte eine Frage,
ich möchte ein spezielles Display über
über einen ATMega8 mit Hilfe des I2C-Protokolles
ansprechen, nun ließt man immer die i2cmaster.S
sei für Software I2C und die twimaster.h für
Hardware I2C, wie darf ich Software- und HArdware I2C
verstehen, seh ich das richtig, dass ich in meinem
Fall nur Software I2C benötige, da auf der Hardwareseite
I2C schon durch den ATMega gegeben ist?
Vielen Dank im Voraus!!

von Karl H. (kbuchegg)


Lesenswert?

der Gast schrieb:

> Hardware I2C, wie darf ich Software- und HArdware I2C
> verstehen, seh ich das richtig, dass ich in meinem
> Fall nur Software I2C benötige, da auf der Hardwareseite
> I2C schon durch den ATMega gegeben ist?

Genau deswegen willst du die 'Hardware-Lösung' benutzen.
Eben weil der Mega die Vorausstzungen mitbringt, I2C (oder TWI, wie es 
bei Atmel heißt) in Hardware anzubieten.

Hat ein AVR keine Hardware für TWI, dann muss dieser Teil 
Software-mässig emuliert werden. Dann kommt die 'Software-Lösung' zum 
Einsatz.
Oder aber, wenn der Fall vorliegt, dass die Hardware dazu zwar vorhanden 
wäre, aber aus irgendeinem Grund die Pins dafür nicht benutzbar sind.

von der Gast (Gast)


Lesenswert?

Danke, also muss ich mein Programm folgende Dateien einbinden:

i2cmaster.h
twimaster.c

und halt mein Sourcefile???

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Ja musst du und dazu vllt noch ein paar C Tutorials lesen sowie das AVR 
GCC Tut auf dieser Webseite hier.

von der Gast (Gast)


Lesenswert?

muss denn in den Dateien
i2cmaster.h und twimaster.c
noch was geändert werden um mit
einem ATMega8 zu arbeiten?
Außer das Einstellen der Taktfrequenz?

von Matthias P. (matthias_p65)


Lesenswert?

So weit ich mich erinnere, muss nur noch die Adresse des I2C Slaves 
angepasst werden.

Steht aber alles im Header File, gut dokumentiert.

von Hans Peter B. (Gast)


Lesenswert?

Das makefile muss folgende source-files beinhalten:

# List C source files here. (C dependencies are automatically 
generated.)
SRC = main1.c i2clcd.c

# List Assembler source files here.
#     Make them always end in a capital .S.  Files ending in a lowercase 
.s
#     will not be considered source files but generated files (assembler
#     output from the compiler), and will be deleted upon "make clean"!
#     Even though the DOS/Win* filesystem matches both .s and .S the 
same,
#     it will preserve the spelling of the filenames, and gcc itself 
does
#     care about how the name is spelled on its command-line.
#ASRC = i2cmaster.s

main.c ist deine Haupt-Funktion und und muss den Include-Aufruf i2clcd.h 
enthalten.
i2cmaster.s ist das Assemblerfile für die i2c-Schnittstelle und muss 
folgendermassen angepasst werden:

(Bsp. für Quarz 10MHz)
;*********************************************************************** 
**
; delay half period
; For I2C in normal mode (100kHz), use T/2 > 5us
; For I2C in fast mode (400kHz), use T/2 > 1.3us
;*********************************************************************** 
**
 .stabs "",100,0,0,i2c_delay_T2
 .stabs "i2cmaster.S",100,0,0,i2c_delay_T2
 .func i2c_delay_T2 ; delay 5.0 microsec with 10 Mhz crystal
i2c_delay_T2: ; 4 cycles
 rjmp 1f ; 2 "
1: rjmp 2f ; 2 "
2: rjmp 3f ; 2 "
3: rjmp 4f ; 2 "
4: rjmp 5f ; 2 "
5: rjmp 6f ; 2 "
6: rjmp 7f ; 2 "
7: rjmp 8f ; 2 "
8: rjmp 9f ; 2 "
9: rjmp 10f ; 2 "
10: rjmp 11f ; 2 "
11: rjmp 12f ; 2 "
12: rjmp 13f ; 2 "
13: rjmp 14f ; 2 "
14: rjmp 15f ; 2 "
15: rjmp 16f ; 2 "
16: rjmp 17f ; 2 "
17: rjmp 18f ; 2 "
18: rjmp 19f ; 2 "
19: rjmp 20f ; 2 "
20: rjmp 21f ; 2 "
21: nop ; 1 "
 ret ; 3 "
 .endfunc ; total 20 cyles = 5.0 microsec with 10 Mhz crystal

Hans Peter

von der Gast (Gast)


Lesenswert?

Hans-Peter B.

das ist aber das .S File,
das benötige ich ja nicht wenn ich
Hardware I2C-Programmiere und das
ist ja der Fall bei dem ATMega8

von Hans Peter B. (Gast)


Lesenswert?

Da dein "spezielles Display" doch sicher keine TWI-Slave-Schnittstelle 
hat, empfehle ich dir auf Grund der Beschreibung:
http://www.mikrocontroller.net/articles/AVR_TWI
die Fleury-Bibliothek "I2c" zu verwenden, die eine super dokumentierte 
C-Schnittstelle hat:
http://homepage.hispeed.ch/peterfleury/group__pfleury__ic2master.html
Hans Peter

von ElectricJohnny (Gast)


Lesenswert?

Ich verusche mich zur Zeit auch zum ersten mal mit I2C und möchte mit 
einem Atmega128 einen SHT21 anprechen.

Dazu will ich die Lib von P.Fleury verwenden.

Ich nutze das AtmelStudio und habe die "i2cmaster.h" und die 
"twimaster.c" beriets in mein Projekt eingebunden.

Gibt es sonst noch etwas zu beachten (umzukonfigurieren), wenn ich die 
Lib verwenden will?

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.