PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tiny12 V.S. GetRC5



Goblin
04.07.2006, 10:58
Tag!

Ich hatte vor meinem Langeweile-Bot (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=19006) (gesteuert von einem Attiny12) einen IR-Empfänger zu spendieren, um ihn fernzusteuern. Ich habe kurzerhand Code von einem meiner Atmega8-Projekte recyclet, der einst mit dem gleichen IR-Empfänger beleuchtung ein/ausschaltete. Hat damals wunderbar funktioniert. Das Problem ist, dass der Tiny sich scheinbar nicht mit GetRC5 verträgt. Aber seht selbst:



$regfile = "at12def.dat"
$crystal = 1200000
$tiny
Config Portb = Output
Config Portb.0 = Input 'als Input konfigurieren
Portb.0 = 1 'Pullup aktivieren


Config Rc5 = Pinb.0
Enable Interrupts
Dim Adress As Byte , Command As Byte

'Empfangsschleife

Do
Getrc5(adress , Command)

Waitms 5

If Command = 2 Then Gosub Vorwaerts
If Command = 130 Then Gosub Vorwaerts
If Command = 8 Then Gosub Rueckwaerts
If Command = 120 Then Gosub Rueckwaerts
If Command = 4 Then Gosub Links
If Command = 124 Then Gosub Links
If Command = 6 Then Gosub Rechts
If Command = 122 Then Gosub Rechts

Loop

' Die folgenden Subs wollen noch gefüllt werden

Vorwaerts:

Return

Rueckwaerts:

Return

Links:

Return

Rechts:

Return



Wenn ich das compiliere krieg ich nen ganzen A*sch voll Fehler. Anfangen tuts damit, dass die Zeile mit "Dim Adress As Byte , Command As Byte" den Fehler "[NOT possible with $Tiny]" schmeisst. Den Fehler hat er aber auch schonmal auf die Zeile "Config Rc5 = Pinb.0" gelegt. Ist es so dass der Tiny kein GetRC5 kann? Kann ich mir nicht vorstellen. Was will der Compiler von mir? Wieso geht das nicht? Oder ist der Fehler wieder dämlicher als Atmel erlaubt und liegt zwischen meinen Ohren?

€dit1:

Im Datenblatt las ich gerad, dass PB5 nur Input sein kann und es bei PB3-4 Limitierungen für den Input gibt. Aber PB0-2 scheinen ganz normale I/O's zu sein, und ich nutze ja PB0 für den TSOP.... SELTSAM

€dit2: Die Lösung scheint in der Variablendeklaration zu liegen. Da der Tiny kein SRAM hat muss eine Variable mit

Dim Blub As Iram Byte
definiert werden. Zumindest compiliert er es dann. Mal sehen ob der Bot auch das tut was ich will....

Goblin
04.07.2006, 12:50
Ok, ich bin mir nicht sicher, ob ich den PB0 korrekt auf Input gesetzt hab. Der Sensor schmeisst zwar nen Signal raus (Wenn man ne LED anschliesst), aber der Tiny reagiert nicht...

Goblin
05.07.2006, 07:26
Irgendwie scheint er die Abfrageschleife nur 1x zu durclhaufen und bleibt dann stehen. Mysteriös

Hanni
05.07.2006, 12:02
Nix gegen dich oder Basic ... aber diese Aufgabe dürfte mit Bascom auf einem ATtiny12 nicht lösbar sein.

Der Grund:
Der ATtiny 12 hat keinen RAM.
Damit funktionieren nur noch die wenigsten BASCOM Konstukte.

Des weiteren hat der Tiny 12 nur einen kleinen Hardwarestack.
Damit dürften bei der Verwendung von Bascom weitere Probleme vorprogrammiert sein.

Mein Tip: Versuchs in Assembler ... weil Bascom dürfte mit diesen Einschränkungen nicht wirklich klar kommen.

Grüße,
da Hanni.

Goblin
05.07.2006, 12:52
Hallo!

Das ist ja doof. Mittlerweile bin ich recht sicher, dass er wirklich nur in die Schleife reingeht, sie bis zum Ende abarbeitet und dann steht. Nen Do...Loop sollte doch selbst der Tiny12 schaffen...

Hanni
05.07.2006, 14:31
Ich denke mal, das Hund liegt da begraben ...



If Command = 2 Then Gosub Vorwaerts
If Command = 130 Then Gosub Vorwaerts
If Command = 8 Then Gosub Rueckwaerts
If Command = 120 Then Gosub Rueckwaerts
If Command = 4 Then Gosub Links
If Command = 124 Then Gosub Links
If Command = 6 Then Gosub Rechts
If Command = 122 Then Gosub Rechts

Ich meine mal gehört zu haben, das diese Struktuen auf einem Tiny ohne RAM nicht funktonieren ...

Grüße,
Hanni.