Attiny45 INT0 benötigt, aber auch I2C bzw. Two Wire Bus

Gast #4110363
Lesenswert?

Hallo,
ich benötige unbedingt den Interrupt Eingang INT0 da dieser auf negative 
und positive Flanke reagiert.

Jetzt will ich aber gleichzeitig den Two Wire Bus verwenden, der SCK und 
SDA Pins benötigt.  Der SCK liegt aber am gleichen Pin wie der INT0.

Wie löse ich Dies am elegantesten (ist es richtig, dass der Clock für 
den Two Wire Bus per Software erzeugt werden muss)?

Am liebsten hätte ich ein 8-Pin uP von Atmel... es muss nicht der 
Attiny45 sein.
Gast #4110736
Lesenswert?

epikao schrieb:
> ich muss wissen ob es eine negative oder positive Flanke ist...das kann
> ich mit Pinchange nicht erkennen oder?

In der Pinchange-ISR abfragen, ob der Pin high oder low ist. Dann weiß 
man, mit welcher Flanke der Interrupt ausgelöst wurde und kann 
entsprechend agieren.
Gast #4110754
Lesenswert?

naja mit dem INT0 kann ich gezielt nur auf eine Flanke agieren, beim 
Change muss ich bei beiden Flanken was machen.
Wenn ich jetzt noch den Clock für den Two Wire Bus softwaretechnisch 
lösen muss,
habe ich ein Zeit Problem...oder ist der Clock doch hardwareseitig?
Gast #4111075
Lesenswert?

es ist ein periodischer Impuls, wobei ich die Zeit zwischen jeder 
positiven Flanke messen will...
so um die 100kHz...

Peter Dannegger schrieb:
> AIN1 kann auch Interrupts auslösen.
> Das USI kann mit T0 getaktet werden.

hmm also ist es richtig, dass ich mich für den Two Wire Clock selber 
kümmern muss, indem ich z.B ein Timer einsetze....
Gast #4111194
Lesenswert?

ich muss messen, je kürzer die Zeit zwischen den Flanken, desto höher 
muss die Ausgangsspannung sein, d.h. ich gebe die Ausgangsspannung mit 
einem DA-Wandler aus, der eben den I2C Bus benötigt...
Gast #4111583
Lesenswert?

Peter Dannegger schrieb:
> Kann Dein DAC überhaupt mehr als 100kBit?

MCP4725 ... denke schon

Peter Dannegger schrieb:

> I2C macht man natürlich in der Mainloop, dann ist es dem Meßinterrupt
d.h. ich kann den SCL theoretisch auch an einem anderen PIN herausgeben? 
(ich muss nur schicken, nicht lesen)

ich hab gedacht, dass der I2C komplett hardwaretechnisch integriert ist. 
Also wenn ich ein Wert übergebe, wird dieser automatisch mit CLK und 
Daten richtig ausgegeben...
#4112263
Lesenswert?

epikao schrieb:
> Also wenn ich ein Wert übergebe, wird dieser automatisch mit CLK und
> Daten richtig ausgegeben...

Weit gefehlt.

Das I2C ist sehr flexibel, daher muß man die verschiedenen Aktionen 
(Start, Stop, ACK, Data) in der gewünschten Reihenfolge selber aufrufen.
Als Master kann man alle Aktionen mit 2 IO-Pins in Software machen.
Im Datenblatt des MCP4725 steht das I2C ganz ausführlich drin und was 
man alles implementieren muß.

Das USI enthält nur rudimentäre Slavefunktionen: Start-/Stop-Erkennung, 
Clock-Stretching, 8Bit Schieberegister.
Gast #4112468
Lesenswert?

Peter Dannegger schrieb:
> Das I2C ist sehr flexibel, daher muß man die verschiedenen Aktionen
> (Start, Stop, ACK, Data) in der gewünschten Reihenfolge selber aufrufen.
> Als Master kann man alle Aktionen mit 2 IO-Pins in Software machen.

nützt dieses USI überhaupt was?! Da schreibe ich lieber alles per 
Software und kann die eigene PINs selber wählen. Zudem bin ich dann 
sicher das es funktioniert...

inwiefern entlastet das integrierte USI den uP überhaupt?

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