Forum: Mikrocontroller und Digitale Elektronik ATTINY13 I2C to Uart converter


von Alexandra (Gast)


Angehängte Dateien:

Lesenswert?

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

von ich (Gast)


Lesenswert?

Hi,

warum ATTiny13 geht kein ATTiny85? Beides im Dil8.

Beitrag "I2C (TWI) Sniffer mit AVR"

GRuß Rene

von Alexandra (Gast)


Lesenswert?

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 :-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von Alexandra (Gast)


Lesenswert?

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 was-willst-du (Gast)


Lesenswert?

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?

von Alexandra (Gast)


Lesenswert?

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

von Hannes Lux (Gast)


Lesenswert?

> 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...

...

von was-willst-du (Gast)


Lesenswert?

>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.

von Alexandra (Gast)


Lesenswert?

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

von Hannes Lux (Gast)


Angehängte Dateien:

Lesenswert?

> und nicht versuchen unter falschem Namen einen fertig zu machen.

Aha??? Deshalb werde ich wohl den Gedanken nicht los... (siehe Anhang)

...

von Alexandra (Gast)


Lesenswert?

HeHe :-) nein bin wirklich eine Frau und Studiere in Bochum ET 
Technik.Aber das lässt sich woll so einfach nicht beweisen.

von Alexandra (Gast)


Lesenswert?

Sorry natürlich nur ein "Technik"

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

ET-Technik: ...nach Hause telefonieren... lol!

von Hannes Lux (Gast)


Lesenswert?

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.

...

von Alexandra (Gast)


Lesenswert?

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?

von Hannes Lux (Gast)


Lesenswert?

> 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.

...

von Hannes Lux (Gast)


Lesenswert?

> 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...

...

von Peter D. (peda)


Lesenswert?

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

von Alexandra (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.