PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GetRC5 macht Attiny langsam



cas
10.12.2007, 13:18
Hallo,

ich experimentiere gerade mit dem Befehl GetRC5 mit einem Attiny25.
Der Attiny erkennt wunderbar die gesendeten Befehle meiner Fernbedienung.
Aber:
Sobald der Befehl im Programm vorkommt, wird der Attiny fürchterlich langsam.
Ich habe das Muster aus der BASCOM-Hilfe genutzt.

Woran kann es Scheitern.
Als In-Pin for den Sensor nutzte ich den Pb3.
Danke für die Hilfe, falls es noch welche gibt.
Bis dannnnn
CAS

stefan_Z
10.12.2007, 13:30
Das liegt glaubich daran, dass der original Bascom-Befehl das Programm anhält und auf eine RC5-Code wartet. Die Routine ist eh ziemlich für den Sack, nimm lieber die hier: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=20209&highlight=getrc5
Habe ich gestern auch mal getestet, ist hervorragend (brauch allerdings ziemlich viel RAM glaubich)

cas
10.12.2007, 14:45
aha, dachte ich mir schon fast...

Hab den code also mal kopiert.
Aber beim Attiny25 meckert das bascom nur.
Habe zwar die def geändert aber für den Rest bin ich zu doof.

Kannst du mir den code für nen Attiny25 oder Attiny45 zurechtbasteln ??

Danke, falls ja.

MfG CAS

stefan_Z
10.12.2007, 15:42
ändern musst du eigentlich nur das PORTB.0 in einen Port den der T45 hat. Ob der auch die passenden Timer hat, kann ich nicht sagen..
Was sagt bascom denn?

cas
10.12.2007, 17:14
er meckert zum Beispiel, weil es den INT1 nicht gibt. ???
:-s

stefan_Z
10.12.2007, 21:23
Hmm du hast sicher das 2. Codebeispiel im 1. posting genommen?
Das benutzt nur Timer0 als Zähler, der dann jedes mal auf Flankenwechsel am TSOP prüft.
INT1 kommt da garnicht vor ;-) Aber vielleicht gibts den Prescaler nicht o.Ä.

cas
11.12.2007, 14:43
ich brauche doch nur eine Interrupt-Routine fur den Attiny45, die mir den den Command der Fernbedienung ausließt. Das alles ohne den Prozessor zu belasten.

Kann ich irgendwo ein fertiges Skript herbekommen ?

MfG CAS

stefan_Z
11.12.2007, 15:11
Ähhh.. das IST die "beste" Routine soweit...
Der Timer0 produziert alle paar mS einen Interrupt und schaut, ob sich was am Pin getan hat. Das wird dann alles ausgewertet, bis der RC5 komplett ist und fertig.

Ein Umstricken des Codes auf einen externen Interrupt anstelle des regelmäßigen Interrupts fände ich in der Tat auch gut, weil ich Timer0 für was anderes nutzen will.. Dazu muss ich mir den Code aber nochmal sehr genau ansehen ;-)

cas
16.12.2007, 12:18
hallo nochmal

ich experimentiere wieder der dem .o.g. code.

Da mein attiny45 mit den internen 1Mhz läuft, müßte doch eigentlich nur der prescale von 8 auf 1 gesetzt werden, oder ?
Falls ja: geht nicht !

An was kann es liegen ?

Danke

cas
18.12.2007, 12:25
Hallo nochmal,

wollte nur sagen, dass es jetzt geklappt hat.

Zum einen kann der Attiny25 kein "Print" ](*,)
und zum Anderen mußte die Freuenz auf 4000000 Hz eingestellt werden.

Jetzt geht es.

Vieleicht hilft es ja jemand anderen =P~

stefan_Z
18.12.2007, 16:57
OK, dass er keine UART hat, das sagt einem doch der Compiler auch, oder?
Der Takt muss natürlich stimmen bei sowas ;-)

cas
18.12.2007, 21:08
nö, der compiler meckert nur und springt in die erste Programmzeile.
Warum er das macht, sagt er nicht. :^o

Das mit der Frequenz hab ich nur durch Zufall rausbekommen, da der GetRC5 Befehl auch nicht funktionierte.

Jetzt passt das schon mal gut zusammen.

Danke für die Unterstützung.

stefan_Z
19.12.2007, 17:42
Hmm gibts nicht eine Funktion für Software-UART?