Hallo, ich habe ein kleines Problem in der I2C Slave implementation bei dem Tiny26 Controller, ich will den Controller als I2C Slave über eine feste adresse ansprechen, aber irgendwie komme ich aus den grundlagen nicht raus. ;//Start Condition IE, Couner Overflow IE, Sel. Two Wire Moder 10, ext. Clock Source, I2C_Init: ldi temp0, (1<<USISIE)|(1<<USIOIE)|(1<<USIWM1)|(0<<USIWM0)|(1<<USICS1)|(0<<USICS0)| (0<<USICLK)|(0<<USITC) out USICR, temp0 sei ;// Global IRQ Enable damit initalisiere ich die USI Schnittstelle, PB0 und PB2 sind als eingänge mit PullUp Widerständen konfiguriert. Wie kann ich nun Feststellen das ich bereits 8 bit vom master empfangen habe? es sind ja bit 1-7 die adresse und bit 0 gibt die Datenrichtung an. Ich will nur ein paar datenbytes an den master senden. wenn ich erkannt habe das mein Controller gemeint ist müsste ich ja ein ACK senden und meine Daten in das USIDR register legen und dann müsste ja vom master ein ACK kommen. wie merke erkenne ich das? um die ganze kommunikation zu beenden gibt es ja die Stop Condition, die ja auch ein Flag auslöst. Ist es überhaut sinvoll die USI Schnittstelle für ne I2C slave implementation zu benutzen? Könnte mir mal jemand mit ein paar zeilen Code zb. für die Adress erkennng aushelfen? Die Atmel Appnotes habe ich bereits gelesen , aber die waren mir wenig hilfreich da dort nur von kompletten Software I2C oder kompletten HW I2C (TWI) die rede war. Danke Sebastian
@Beda Ruedi danke die PDF datei ist sehr hilfreich. Aber ne kleine fage habe ich dazu noch, warum muss man die SCL Leitung, also die Clock Leitung im Slave Betrieb als ausgang betreiben. Müsste man nicht die Clock leitung als eingang konfigurieren? Lt. PDF wird in Step1 die SCL leitung als Output im DDRx Register geschalten und der ausgang im Portx Register auf 1 gesetzt. könnte mir das mal jemand plausibel erklären? Danke Sebastian
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.