Forum: Mikrocontroller und Digitale Elektronik RC5 Sender auf einem ATTiny11L


von El Jeffe (Gast)


Lesenswert?

Hi!

Dies ist mein erster Versuch in Assembler auf einem Atmel, ich hoffe
ihr habt daher etwas nachsicht mit mir.

Ich möchte gerne auf Basis des ATTiny11L einen IR-Sender für den RC5
Code programmieren. Eines meiner Probleme ist das der ATTiny11 nur
einen Timer hat.

Im Anhang befindet sich mein bisheriger Quellcode der nur leider nicht
so funktioniert wie er soll. Hat jemand schoneinmal ein ähnliches
Projekt gestartet und kann mir helfen meine Fehler zu finden ?

Die Spezifikationen zum Code habe ich von dieser Seite:
http://home.t-online.de/home/Holger.Heinemann/homepage.htm?rc5.htm

Danke ! :-)

von El Jeffe (Gast)


Angehängte Dateien:

Lesenswert?

Hoppla, hier der Quellcode.

von Jörn (Gast)


Lesenswert?

Hi,

@El Jeffe

funktioniert das prog auch ohne große änderungen auf einem at90s2313??

MFG Jörn

von Jörn (Gast)


Lesenswert?

hab noch was vergessen.. Ist der quellcode für einen 1Mhz Quarz gedacht?

von El Jeffe (Gast)


Lesenswert?

Ja, ist für ein 1MhZ gedacht. Funktioniert nur bisher nicht recht. Ich
suche noch nach einer Möglichkeit die Takte im AvrStudio zu zählen da
es per Hand etwas kompliziert ist da der Code durch den Interrupt
unterbrochen wird.

Ich denke auf einem at90s2313 sollte der Code auch laufen, du musst
halt nur die richtige .INC Datei wählen, die Portnamen mit der
Zuordnung zu den Speicherstellen werden ja darin definiert. Da der
Attiny11 jedoch keinen Stack unterstützt bin ich ziemlich
verschwenderisch mit Registern umgegangen.

von Dieter B (Gast)


Lesenswert?

Hallo @El Jeffe

Habe mal kurz in den Code geschaut.

Deine Zeiten stimmen meiner Meinung nach nicht.

LED an =  33 us,   LED aus = 30 us = 63 us -->  15,87 KHz Frequenz

Takte kann man doch schön zählen im AVR Studio.

Setze Breakpoints, wo du halten willst. Mit F9 kannst du die setzen,
mit F5 läßt du dein Programm dann laufen und am Breakpoint hält es
dann.

Takte werden unter "Processor" angezeigt, ebenso die Zeiten unter
Stopp Watch. Ein doppleklick setzt die Werte dann zurück.

MFG
Dieter

von Dieter B (Gast)


Lesenswert?

Hallo

Bei einer Taktfrequenz von 1 Mhz halte ich die Verwendung des Timer
Interrupt für nicht so günstig. Da hängt das Teil ja mehr im Int. als
sonst wo. Und bedenke, der braucht ja auch noch ein paar Takte, bis er
im INT ist.

Programmiere das doch mal mit Delayschleifen.

Schau doch mal hier, wie er das Problem gelöst hat.

http://www.sprut.de/electronic/pic/programm/irrc/irrc.html

MFG
Dieter

von Peter D. (peda)


Lesenswert?

Soweit ich weiß, ist der Takt des Tiny11 nicht stabilisiert und kann je
nach Temperatur und VCC 300kHz..1,2MHz sein.

Für RC5 muß es also schon ein Tiny12 sein.


Peter

von Dieter B (Gast)


Lesenswert?

Hallo

@Peter

Habe gerade nochmal das Datenblatt studiert und wie so oft hast du
Recht. Der Tiny 11 wird über den WATCHDOG OSCILLATOR getaktet, der
extreme Schwankungen hat, in Bezug auf Spannung und Temperatur.

Datenblatt Seite 67.

MFG
Dieter

von El Jeffe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

danke ersteinmal für die Zahlreichen Antworten. Ich habe nun aufgrund
eurer Empfehlungen auf den Attiny12 umgeschwenkt.

Nun habe habe ich noch etwas rumgecoded fabriziert das was im Anhang zu
finden ist. Die Timings sind nun "fast" korrekt. Da der Prozessor zum
aufrufen von Unterprogrammen, etc selbst noch etwas Zeit benötigt
stimmt das mit dem Timing nicht ganz.
Zum senden werden 25,06169ms anstatt der angegebenen 24,892 benötigt.
Sollte das trozdem klappen?

Kann ich die IR-LED ohne Vorwiderstand direkt an den ATTINY12
anschliessen? Das Senden klappt bei mir bisher noch nicht, zumindest
schaltet der Fernseher nicht um. Der Attiny12 steckt auf dem STK500 und
ist momentan ohne Vorwiderstand angeschlossen. Dabei ist mir
aufgefallen das die LED wesentlich dunkler ist als die meiner
Fernbedienung. Getestet habe ich dies mit einer CCD Digitalcam.

...und noch eine Frage :-)

Habe ich das mit dem OSCCAL Register richtig verstanden? Ich habe von
meinem ATTiny12 das osccal Byte ausgelesen (0x43 bei meinem µc) und
schreibe das nun wieder in das OSCCAL Register um möglichst nahe an die
1,2MHz zu kommen.

Grüsse

von ulrich strobel (Gast)


Lesenswert?

aber für das geld das da ein ATtiny kostet könnte man schon ein RC-5
Sender IC bekommen.

schätzungsweiße

du sparst dir auf alle fälle schon einmal die progremierarbeit für den
sender.

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.