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.
epikao schrieb: > ich benötige unbedingt den Interrupt Eingang INT0 da dieser auf negative > und positive Flanke reagiert. Jeder Eingang kann per PCINT positive und negative Flanken erkennen.
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.
ich habe mich falsch ausgedrückt, ich will nur auf eine Flanke reagieren, nicht beide! Da geht nur der INT0 oder?
epikao schrieb: > Da geht nur der INT0 oder? ja, das schon, aber kannst Du nicht beim Pinchange Interrupt die eine Flanke ignorieren
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?
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.
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?
AIN1 kann auch Interrupts auslösen. Das USI kann mit T0 getaktet werden.
epikao schrieb: > habe ich ein Zeit Problem Ist das ein Impuls? Wenn ja, wie oft kommt der und wie lang ist er? Oder handelt es sich um kontinuierlichen Wechsel? mfg.
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....
epikao schrieb: > es ist ein periodischer Impuls, wobei ich die Zeit zwischen jeder > positiven Flanke messen will... Mußt Du wirklich messen oder reicht der Vergleich mit einem Schwellwert aus?
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...
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?
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...
die Aussage siehe Bild auf Seite 112 vom Attiny Datenblatt verwirrt mich!
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.
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?
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.