Peter Fleury's I2C libs

Gast #3025427
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!!
#3025430
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.
Gast #3029356
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
Gast #3032720
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
Gast #4028160
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren