PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interruptfreie Routine für I2C gesucht



Dani-Bruchflieger
05.09.2007, 21:33
Hi,

ich benötige für ein Projekt eine Interruptfreie Routine mit der man einen I2C Slave realisieren kann. Sollte auf einem Tiny13 oder Tiny15 lauffähig sein.

Ein Freund sagte mir, ich soll rgelmäßig pollen aber hab da momentan keine Idee, wie ich das umsetzen kann.

Hat von Euch schon jemand mal so etwas geschrieben und kann / will mir helfen?

PicNick
06.09.2007, 07:12
Für den 2313 gibt es eine bascom-soft-lösung f. slaves
https://www.roboternetz.de/wissen/index.php/Bascom_Soft-I2c_Library
Vielleicht hilft dir das

Dani-Bruchflieger
06.09.2007, 21:58
Wenn ich das richtig interpretiere hilft das wahrscheinlich nur begrenzt weiter.
Ich möchte bei meinen Servos die analoge Steuerung rausschmeißen und durch eine digitale Version ersetzen, die per I2C Bus ihre Sollpositionsdaten erhält. Dabei muß der Prozessor ständig prüfen, ob das Servo noch in der aktuellen Sollposition ist und eben gegebenenfalls das Servo entsprechend bewegen. Dazu brauche ich kürzestmögliche Zyklenzeiten, die nicht durch unendliche Interrupts der Soft I2C Slave ausgebremst werden.
Die für Bascom käufliche I2C Slave Lib hatte zB den effekt, daß das Servo ständig über den Sollpunkt hinweg fuhr und darum ständig hin und her fuhr, wenn Daten am Bus übertragen wurden (auch wenn die Daten nicht für dieses Servo gedacht waren).
Da die Schaltung extrem klein und leicht werden muß, wollte ich einen µC in SO8 Bauform haben, darum Tiny13.
eventuell muß ich dann eben eine andere Lösung finden zB einen Mega8 zu nutzen, der dann gleich mehrere Servos kontrolliert, da dieser µC den i2C Slave als Hardwarefunktion eingebaut hat - oder täusche ich mich da?

PS: in den letzten Tagen hab ich es endlich geschafft meine alte FC16 RC-Fernsteuerung auf 2,4GHz zu pimpen. Darin werkelt jetzt ein Mega2561 mit einem 2,1" Grafikdisplay und überträgt die Steuerdaten per Xbee Pro zum Empfänger-Baustein - einem Mega8, der die gesamte Modellspezifischen Daten über Trimmung Failsafe und demnächst auch Mischerfunktionen im Eeprom ablegt und verarbeitet. Im Gegenzug wird der Empfängerbaustein Meßdaten samplen über Akkuspanung, Stromverbrauch, Flughöhe etc. und diese zur FC16 zurücksenden, wo dieses am Display erscheint... Dadurch kann man auch eine Variometerfunktion realisieren - werde dazu nächste Woche bei Hyline den SCP1000 Drucksensor mit einer Auflösung von 10cm bestellen, den ich ebenfalls am I2C Bus betreiben kann.

izaseba
06.09.2007, 22:14
Hallo,
Muß das unbedingt T13/15 sein ?
Ich halte es für ziemlich schwierig auf 1kB Flash i2c slave in Software zu schreiben und dazu noch Servos ansteuern...
Was hälst Du von T25/45/85 ?
Sind auch 8 Beiner, haben aber erstens mehr Flash und zumindest USI, was zwar auch eine Krücke ist, hat aber ein paar Hilfen, wie Start/Stop Erkennung usw.

Gruß Sebastian

Dani-Bruchflieger
07.09.2007, 03:39
HI,

ähm muß ich mir mal anschauen - mir war eben hauptsächlich die größe entscheidend, daß ich den t13 genommen hatte - obwohl vom Flash her hatte es reingepaßt, nur daß die routine bei Datenverkehr auf dem Bus den Prozessor so extrem ausgebremst hat...