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!!
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.
Danke, also muss ich mein Programm folgende Dateien einbinden: i2cmaster.h twimaster.c und halt mein Sourcefile???
Ja musst du und dazu vllt noch ein paar C Tutorials lesen sowie das AVR GCC Tut auf dieser Webseite hier.
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?
So weit ich mich erinnere, muss nur noch die Adresse des I2C Slaves angepasst werden. Steht aber alles im Header File, gut dokumentiert.
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.