Ich hätte da mal ne Fräge! Und zwar habe ich vor mir eine Art RGB Fading Modul zu machen, wie der Name Modul schon andeutet soll das ganze modular sein! Am liebsten wäre mir zur ansteuerung der i2c Bus und um die 3 Kanäle zu regel ist wohl pwm am besten geeignet! Da der ATTiny12 relativ billig ist (und ich einen zum ausprobieren rumfahren habe*G*) Daher meine Frage: Ist es möglich auf nem ATTiny12 (auf internem Quarz) 3 Software PWM laufen zu lassen und gleichzeitig das Teil per Software zum i2c slave device zu machen? Ich habe noch nicht allzuviel mit MCs gemacht (das übliche, ATMega8 mit LCD,i2c,UART,PWM und 'n bissle rumgespielt*G*) und kann das daher nicht einschätzen. Hoffe ihr könnt mir da weiterhelfen! MFG klk
Hallo klk, ich habe mal versucht einen I²C Slave per Software zu implementieren, der nebenbei die Zeit halten soll und ein DCF-77 Signal empfangen soll. Also eine Art Funkuhrmodul. Das I²C-Interface hat dabei maximale Priorität, was in etwa 20 sekunden Zeitverlust bei der Zeitzählung resultiert. Meine Erfahrung mit I²C Slaves ist folgende: exterm schwierig, sobald du etwas höhere Geschwindigkeiten realisieren willst (also 100kHz sind schon anspruchsvoll) und nebenbei noch Zeitkritische Operationen verlangst. Vielleicht ist an deiner Stelle ein Regler mit entweder HardwarePWM oder HardwareI²C sinnvoller. (z.B. ATTiny26 der hat beides) Ich habe dir mal meinen SW-I²C angehangen. Vielleicht hilfts ja was ;-) Du musst folgende Macros verändern: .macro i2c_putByte ; store a recieved byte, could be a call .endm .macro i2c_getByte ; get a byte for transmittion, could be a call .endm .macro i2c_addressed ; this device has been addressed, could be a ; call ; and take more than only a few clock cycles .endm schöne Grüße, Clemens
wird in allen Belangen recht eng werden (kein RAM, nur die Register, ROM ist auch nicht gerade berauschend, nur 1MHz Takt möglich). Könnte klappen bei geschickter Programmierung, ist aber sicher auf Kante gestrickt. Mein Rat: nimm was grösseres.
@crazy horse: Jepp, da stimme ich dir zu! Müsste das ganze ja dann auch in asm schreiben (sonst schreib ich nur c)! Aber wenn ichs mit nem ATTiny hinbekommen kann wäre das das geschickteste (soll möglichst klein werden) Kennt irgendwer eine Asm implemtierung von einem i2c Slave device für den AVR? Oder eher gesagt: Was für resourcen brauche ich für den i2c bus (timer,register etc.)? Also für mein Software PWM brauche ich nen laufenden 8bit Timer (die interrupts kann von mir aus der bus benutzten, die brauch ich für mein pwm nich...)! Von den resourcen her sollte das fürs pwm allein dicke langen....werde das ganze demnächst mal in asm schreiben und in dein ATtiny einspielen...mal gucken...(teste meine Software in C mit nem ATMega8) Thx für die Antworten! MFG klk
Nimm wenigstens den ATTiny13, der läuft mit 8MHz intern. Trotzdem funktioniert Software I2C, wenn überhaupt, nur gaaanz gaaanz langsam (max 10kBit). Peter
vielleicht solltest du lieber eine Art SPI als Interface nehmen? Takt an den Int-Eingang, einen beliebigen Portpin als Dateneingang. Brauchst ja nur einen Datenframe, der irgendwie slave-Adresse, Kanaladresse und Datenwert überträgt. Alle empfangen, wenn die Adresse mit der eigenen übereinstimmt, werden die Daten übernommen. Ok - hast keinen Rückkanal, aber brauchst du ja auch nicht unbedingt. Wird deutlich schneller und benötigt weniger Programmspeicher/Rechenzeit als ein I2C-Interface.
@Clemens: Sry...war ein bisschen in Eile beim lesen...ich hab deinen Beitrag (wirklich ernst gemeint) irgenwie überlesen! Auf jedenfall mal vielen Dank dafür, werde mir den code mal angucken (wird mir auf jedenfall helfen, obs nun geht oder nicht*G*Eigentlich isses ja nur zum lernen!)! Hm...also attiny13 wär ne möglichkeit (der scheint ja relativ billig und ist auch noch klein), bringt das wirklich was dafür (ich glaub ich guck mal was mein attiny12 dazu sagt*rofl*)? Aber ist echt ärgerlich, laut Datenblatt hat das Ding 2 pwm channels*grml*Einen mehr und ich müsste mich nur noch ums i2c bemühen! Is aber wohl nicht! Also wenn einer ne Hardwarelösung kennt mit der man 3pwm channels über nen i2c bus ansteuern kann wäre toll (und noch besser wäre wenn man das als Normalsterblicher auch irgendwo in Deutschland bestellen kann, ich hätte schon was passendes gefunden: http://www.semiconductors.philips.com/pip/PCA9531PW.html aber das kriegt man ja niergendwo)*G* Zu den anderen Interfaces, i2c wäre halt praktisch weil man da alles dranhängen kann und ich nur 2 Kabel rumlegen muss! Das SPI als Interface...ist das überhaupt ein bus (bin nooblike)? Wie auch immer, das wär dann ja wohl quasi improvisiert also siehts mit erweiterungen eher schlecht aus. Zur Bus geschwindigkeit, also die Geschwindigkeit jukt relativ wenig! Ich muss nur ab und zu mal 32bit (8x8bit für jeden PWM Channel) zu den einzelnen Modulen schieben bzw. auslesen! Ich bräuchte eigentlich nur eine Funktion Schreiben mit 32bit und eine mit 32bit auslesen! Danke für alle Antworten MFG klk
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.