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 ! :-)
Hi, @El Jeffe funktioniert das prog auch ohne große änderungen auf einem at90s2313?? MFG Jörn
hab noch was vergessen.. Ist der quellcode für einen 1Mhz Quarz gedacht?
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.
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.