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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.