mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RC5 Sender auf einem ATTiny11L


Autor: El Jeffe (Gast)
Datum:

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

Danke ! :-)

Autor: El Jeffe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hoppla, hier der Quellcode.

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@El Jeffe

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

MFG Jörn

Autor: Jörn (Gast)
Datum:

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

Autor: El Jeffe (Gast)
Datum:

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

Autor: Dieter B (Gast)
Datum:

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

Autor: Dieter B (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Dieter B (Gast)
Datum:

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

Autor: El Jeffe (Gast)
Datum:
Angehängte Dateien:

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

Autor: ulrich strobel (Gast)
Datum:

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

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.