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

Gast #4110363
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.
#4110372
epikao schrieb:
> ich benötige unbedingt den Interrupt Eingang INT0 da dieser auf negative
> und positive Flanke reagiert.

Das tut der Pinchange-Int auch.

> 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.

Nimm also irgendeinen anderen Pin.

mfg.
Gast #4110723
Walter schrieb:
> epikao schrieb:
> Da geht nur der INT0 oder?
>
> ja, das schon, aber kannst Du nicht beim Pinchange Interrupt die eine
> Flanke ignorieren

ich muss wissen ob es eine negative oder positive Flanke ist...das kann 
ich mit Pinchange nicht erkennen oder?
Gast #4110736
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
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
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
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...
#4111478
epikao schrieb:
> Wenn ich jetzt noch den Clock für den Two Wire Bus softwaretechnisch
> lösen muss,
> habe ich ein Zeit Problem

Warum das denn?

I2C macht man natürlich in der Mainloop, dann ist es dem Meßinterrupt 
vollkommen schnurz, wie lange es dauert.
Kann Dein DAC überhaupt mehr als 100kBit?
Gast #4111583
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
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
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.