mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATTiny12 mit 3xPWM und Slave I2C machbar?


Autor: klk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Clemens (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: klk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Clemens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guggst du meinen Anhang??

viel Erfolg! Clemens

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm wenigstens den ATTiny13, der läuft mit 8MHz intern.

Trotzdem funktioniert Software I2C, wenn überhaupt, nur gaaanz gaaanz
langsam (max 10kBit).


Peter

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: klk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.