Hi Leute, ich würde gerne für eine kleine Bastellei mit hilfe eines TINY13 einen I2C to UART Converter bauen. Das Problem ist nun das dieser keine der beiden Schnittstellen in Hardware hat. Ich weiss ich könnte einen anderen Chip nehmen ,aber ich möchte gerne den kleinen 13er verwenden. Das ganze soll so laufen das er per I2C ein Byte bekommt und dieses dann per uart weiterleitet. Zu anfang soll dies erstmal nur in eine Richtung funktionieren. Mein problem ist nun das ich keinen Plan habe wie ich das am besten mache. Ich habe hier zwar vom ELEKTOR den Bascom Quelltest für einen I2C Slave aber ich bekomme in einfach nicht in C Portiert wegen dem Assembler teil. Kann mir eventuell jemand dabei helfen sonst kann ich mein kleines Projekt knicken. Danke im Vorraus Alexandra
Hi, warum ATTiny13 geht kein ATTiny85? Beides im Dil8. Beitrag "I2C (TWI) Sniffer mit AVR" GRuß Rene
Würde schon gehen hab aber hier 25 Stück von den 13ern liegen. Die sind mir durch eine Pleite in die Hände gefallen :-)
Man muß trotzdem keine Klimmzüge machen deswegen. Alleine der etwas knappe Flash des 13ers wird Dich bei Deinem Vorhaben ausbremsen. Beim Tiny2313 hättest Du beide Interfaces in Hardware.
Der ATtiny13 ist von allen AVRs am schlechtesten geeignet, weil er weder USI noch Quarzoszillator (für UART wichtig!) hat. Schon der standard 100kHz I2C-Takt ist kritisch, Du mußt innerhalb 4µs auf den Mastertakt reagieren. 38 CPU-Takte sind schnell verbraucht (ein leerer Interrupt sind schon 10 Takte). Nimm den ATtiny25 und nem Quarz dran. Peter
Nein bleibe beim 13er :-) okay lassen wir den uart teil erstmal weg.Mit dem Elektor Code klappt I2C richtig gut aber ich hätte den gerne in C.Habe versucht den Assembler teil in eine Extra *.S Datei zu verfrachte und dann aus dem C Programm heraus die entsprechenden funktionen aufzurufen aber das Problem ist das ich nicht so versiert in Assembler bin. Das grösste Prblem ist das ich bei dem Tiny die Stack Init nicht hinbekomme. Kann mir wenigstens dabei jemand helfen? Gruss Alexandra
Von nix ne Ahnung und beratungsresistent. Andere sollen Deine Arbeit machen und noch zu Deinen schlechten Vorgaben. Gehts noch? Du erwartest doch nicht im Ernst eine Hilfe bei solchen Forderungen?
Sach mal gehts noch? Ich habe nur gefragt ob mir jemand sagen kann wie ich den Stack Initialiesiere weil ich den Bisher nicht gebracuht habe bei meinen Assembler Programmen weil ich größere sachen in C Programmieren. Wenn mir bei der Hauptfrage keiner helfen will weil es halt zu kompliziert ist dann stört es mich das nicht ich würde gerne schauen ob es nicht doch klappt. Schließlich hat man am anfang auch gesagt das ein Pal-Video Signal mit einem Atmega8 nicht zu realisieren sei, aber es klappt doch. Ich will nicht das mir einer die Abeit abnimmt ich hätte nur gerne ein paar tipps. Ich muss ja sagen das Forum hier war immer super aber in letzter Zeit sind immer mehr leute Unterwegs die nur die Welle machen und motzen können aber wahrscheinlich selber zu Blöd sind ne LED Leuchten zu lassen. mfg Alex
> Nein bleibe beim 13er Nunja, Kunst kommt von Können, käme es von Wollen, würde es Wulst heißen... ;-) > aber das Problem ist das ich nicht so versiert in Assembler bin. Anscheinend nicht nur in ASM, sondern auch im Verständnis der benötigten Ressourcen. Ich wage es, zu behaupten, dass ich die Architektur der kleinen AVRs halbwegs kenne und ich würde es mir nicht zutraun, Dein Projekt mal so nebenher mit einem Tiny13 zu realisieren. Und wenn PeDa schon meint, die Chancen stünden schlecht, dann kannst Du ihm das ruhig abnehmen, denn er kennt die Architektur exakt und ist in ASM uns C sehr kompetent. > Das grösste Prblem ist das ich bei dem Tiny die Stack Init nicht > hinbekomme. Der Tiny13 initialisiert seinen (für ASM nötigen) Stack während des Hardware-Reset selbst, siehe Datenblatt Seite 9. Aber vermutlich meinst Du den für C nötigen Softwarestack für die Argumentübergabe der Funktionsaufrufe, oder? Aber da halte ich mich raus, da fehlt mir die Kompetenz. Viel Erfolg... ...
>Mein problem ist nun das ich keinen Plan habe wie ich das am besten mache. >Kann mir eventuell jemand dabei helfen sonst kann ich mein kleines Projekt knicken. >Würde schon gehen hab aber hier 25 Stück von den 13ern liegen. Die sind mir durch eine Pleite in die Hände gefallen :-) >>Der ATtiny13 ist von allen AVRs am schlechtesten geeignet, weil er weder USI noch Quarzoszillator (für UART wichtig!) hat. Das sagt doch ne Menge aus. >... aber wahrscheinlich selber zu Blöd sind ne LED Leuchten zu lassen. Mach ich nicht selber, sondern dazu nimm ich Strom, der kann das besser. Guten Nacht.
Ja genau den Softwarestack. Ich nehme eure Tipps schon an aber wie gesagt scheinbar ist I2C ja möglich, von der uart habe ich mich schon verabschiedet. Aber ich mag Bascomm nicht und würde gerne das Programm Portieren.Das einzige Problem ist halt der Stack den ich nicht hinbekomme.Aber trotzdem danke schonmal dafür das es noch ein paar Leute gibt die sich auch mit aussichtslosen dingen befassen und nicht versuchen unter falschem Namen einen fertig zu machen. Gruss Alex
> und nicht versuchen unter falschem Namen einen fertig zu machen.
Aha??? Deshalb werde ich wohl den Gedanken nicht los... (siehe Anhang)
...
HeHe :-) nein bin wirklich eine Frau und Studiere in Bochum ET Technik.Aber das lässt sich woll so einfach nicht beweisen.
Noch vergessen:
> Ja genau den Softwarestack.
Den brauche ich in ASM nicht. In ASM verwaltet man die Ressourcen (und
damit auch Register und SRAM) selbst, da geht das ohne Stack besser. Es
steht Dir natürlich frei, dafür den "dümmsten" Pointer (also den
Pointer, dessen Verlust aufgrund seiner eingeschränkten Fähigkeiten am
wenigsten schmerzt, also den X-Pointer) zu benztzen und damit einen
Stack (LiFo) zu realisieren. Das wäre mir aber zu umständlich, ich
übergebe die Parameter meist in dafür reservierten RAM-Zellen oder
Registern.
...
Mhh okay das hört sich besser an, dann werde ich das mal so versuchen. Das läuft doch dann über die STS und LDS Befehle nachdem ich das ganze mit ".dsed" initialisiert hab oder?
> HeHe :-) nein bin wirklich eine Frau und Studiere in Bochum ET > Technik. Dann wäre es vielleicht sinnvoll, Deine Arbeiten selbst zu erledigen, anstatt sie von Anderen machen zu lassen. Oder teilst Du dann auch den Lohn für die Arbeit (gute Noten, Abschluss, Diplom) mit den Helfern? Was ist Dein Abschluss noch wert, wenn Du Deine Aufgaben nicht selbst erledigst? Nein, das ist kein Neid, nur etwas Gerechtigkeitssinn. ...
> Das läuft doch dann über die STS und LDS Befehle
Nööö, LDS/STS braucht keinen Pointer.
Vielleicht solltest Du Dir mal die Liste mit den ASM-Befehlen (ziemlich
am Ende des Datenblattes) ausdrucken und aufs Klo hängen...
...
Hannes Lux wrote: > Und wenn PeDa schon meint, die Chancen stünden schlecht, dann kannst Du > ihm das ruhig abnehmen, denn er kennt die Architektur exakt und ist in > ASM uns C sehr kompetent. Ich hab mir den Originalcode mal angesehen. Man kann natürlich für immer und ewig auf den I2C-Start warten, wenn das die einzige Task ist. Dann ist man auch schnell genug. Und wenn man dann die I2C-Daten verarbeitet, stellt man sich solange tot. Bis man dann wieder auf ewig auf den nächsten Start wartet. Der I2C-Master muß eben immer wieder versuchen, was zu senden, wenn er NACK bekommt. Schöner ist es natürlich, wenn I2C als Interrupt immer bereit ist, auch wenn die UART als 2.Task derweil noch sendet. Oftmals sollen Projekte auch wachsen und dann ist der Ansatz "ich bin die einzige Task" mausetot und man muß nochmal ganz von vorne anfangen. Ich nehme immer nen Quarz für die UART und hatte noch nie Probleme mit der Baudrate. Oder eben Autobauding (1-wire-LCD, Bootloader). Peter
Das sollte einfach ne art Proof of Concept werden. Aber das hat sich woll erledigt. Trotzdem danke Hannes und Peter.
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.