PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro IR bockt



mayokleckz
16.10.2009, 17:01
Hi,
habe seit 2 tagen meinen Asuro fertig und auch schon fleißig programmiert.
Hat bis vor ner Stunde auch alles geklappt.
Habe dann ein Programm drauf gespielt um den Asuro mit der Fernbedienung zu steuern.

/
************************************************** *****************************
*
* Description: Asuro lässt sich per IR-Fernbedienung steuern
*
************************************************** ***************************/
#include "asuro.h"
#include <stdlib.h>

#define CH_DN 0x21
#define CH_UP 0x20
#define VOL_DN 0x11
#define VOL_UP 0x10
#define FULL_SCRN 0x2E
#define ZERO 0x00

#define OFFSET 100
#define STEP 60

int speedLeft,speedRight;
volatile unsigned int rxdata;
volatile unsigned char rxbits;

SIGNAL (SIG_OVERFLOW0)
{
rxbits++;
rxdata<<=1;
rxdata |= (PIND & (1 << PD0)); // liest Datenbits
TCNT0 = 34; // Timer auf 1778µs
if(rxbits==14){
TCCR0 &= ~((1 << CS01) | (1 << CS00)); // stoppt Timer
}
}

void Driver(void)
{
unsigned char leftDir = FWD, rightDir = FWD;

leftDir = rightDir = FWD;
if (speedLeft < 0) leftDir = RWD;
if (speedRight < 0) rightDir = RWD;

if (speedLeft > 240) speedLeft = 240;
if (speedLeft < -240) speedLeft = -240;
if (speedRight > 240) speedRight = 240;
if (speedRight < -240) speedRight = -240;

MotorDir(leftDir,rightDir);
MotorSpeed(abs(speedLeft),abs(speedRight));
}

void IRFwd(void)
{
speedRight += STEP;
speedLeft += STEP;
if (abs(speedLeft) < OFFSET) {speedRight += STEP; speedLeft += STEP;}
FrontLED(ON);
BackLED(OFF,OFF);
}

void IRRwd(void)
{
speedRight -= STEP;
speedLeft -= STEP;
if (abs(speedLeft) < OFFSET) {speedRight -= STEP; speedLeft -= STEP;}
FrontLED(OFF);
BackLED(ON,ON);
}

void IRLeft (void)
{
FrontLED(OFF);
BackLED(ON,OFF);
if (speedLeft != 0){
speedLeft /= 4;
Driver();
Msleep(80);
speedLeft *= 4;
}
else{
speedLeft = -150; speedRight = 150;
Driver();
Msleep(80);
speedLeft = speedRight = 0;
}
}

void IRRight (void)
{
FrontLED(OFF);
BackLED(OFF,ON);
if (speedRight != 0){
speedRight /= 4;
Driver();
Msleep(80);
speedRight *= 4;
}
else{
speedLeft = 150; speedRight = -150;
Driver();
Msleep(80);
speedLeft = speedRight = 0;
}
}

void IRStop(void)
{
speedRight = speedLeft = 0;
FrontLED(OFF);
BackLED(OFF,OFF);
}

int main(void)
{
static unsigned int cmd;

Init();
for (;;) {
rxbits = 1; rxdata = 0;
TIMSK |= (1 << TOIE0); // Interrupt scharf
while(PIND & (1 << PD0)); // warte auf 1. Flanke
TCNT0 = 90; // Timer auf 1333µs
TCCR0 = (1 << CS01) | (1 << CS00); // Start Timer
while(rxbits < 14); // warte bis alle Bits empfangen

cmd = (rxdata & 0x3F); // 6 Command-Bits werden verwertet

switch (cmd) {
case CH_DN : IRRwd(); break;
case CH_UP : IRFwd(); break;
case VOL_DN: IRLeft(); break;
case VOL_UP: IRRight(); break;
case ZERO :
case FULL_SCRN : IRStop(); break;
}
Driver();
}
return 0;
}


Hat auch halbwegs gut geklappt.
Tja, und dann... wollte ich wieder ein normales "Fahr den Raum ab" drauf flashen, aber dann kam folgendes

Open COM1 --> OK !
Bulding RAM --> OK !
Connect to ASURO --> OK !
Sending Page 001 of 029 --> v.v.v.v.v.v.v.v.v.v.
TIMEOUT !
Not successful, Flash contents will be invalid!

Was ist passiert??? Auf dem Hyperterminal die IR vom Transceiver gecheckt. Läuft. Nur mit dem flashen geht garnix mehr.

Was kann ich machen ???
HELP plz

grüße mayo

021aet04
16.10.2009, 17:42
Könnte es sein, dass die Batterien (Akkus) leer sind?

mayokleckz
17.10.2009, 00:54
ÄH, ich glaub nicht. Die microAkkus zeigen nen Wert von 4.86 an!?
Is wohl nicht leer.
Was passiert eigentlich wenn cih die AA-Akkus anschließe? Haben ja auch nur 1.2V aber 30mA mehr. Macht das was aus??
SRY (noob)

radbruch
17.10.2009, 01:18
Hallo

Ob AAA oder AA ist beim asuro egal. Die 30mA beziehen sich auf die Kapazität der Akkus, die wirkliche Stromabgabe hängt von der Belastung ab.

Bei einer echten VL-Meldung (Voltage_Low=Unterspannung) sollte die StatusLED wild flackern und auf dem Terminal VLVLVLVL.. angezeigt werden.

"V" beim Flashen bedeutet einen Verizifierungsfehler, die Prüfsumme nach dem Datenpaket war falsch. 4,86V sind recht wenig. Der TSOP (IR-Empfänger) reagiert ziemlich empfindich auf niedrige Spannung. Ich vermute, der asuro "versteht" nicht, was ihm gesendet wird, weil die Spannung beim Flashen zusammenbricht. Deshalb erster Versuch: Akkus laden (oder geladene AAs verwenden) und den Batteriehalter, den Schalter und den Jumper überprüfen.

Alternative: Bei langsamen Rechnern reagiert das Flashprogram empfindlich auf zuviele Hintergrundprozesse (bei meinem 850er W2k-PC merke ich das extrem). Um das als Ursache auszuschliesen solltest du neu booten und nur das Flashen starten. Zu schnelle Rechner haben gelegentlich auch Probleme, das würde aber wohl nur Rechner mit Multicore-Prozessoren betreffen. Hier hilft dann ein Ausbremsen mit einem rechenintensiven Prozess (Festplatte formatieren (haha), nein, defragmentieren, ein Virenscan, Explorer öffnen oder ein Bremstool für alte Spiele) beim Flashen.

Gruß

mic

mayokleckz
17.10.2009, 01:35
Hm, dass versteh ich jetzt überhaupt nicht.
Dachte gerade bei Akkus (1,2V) sollte das ding gesteckt werden damit nicht 0,6 abgezwackt werden. Ich hab ihn nämlich drinne. So hab ich das verstanden. Naja, hoffe nr dass es an den Akkus liegt(gerade im lader)und nicht am atmel.
Hoffe ich hab da keinen misst gebaut.
<-- absoluter mikrotechnik und elektronikanfängeranfänger!!

radbruch
17.10.2009, 01:43
Hm, dass versteh ich jetzt überhaupt nicht.
Ich verstehe es auch nicht :) Irgendwie habe ich Akkus und Batterien verwechselt. Die jetztige Version meines Beitrages sollte nun stimmen. Jumper drin mit Akkus ist richtig. Mein Fehler, sorry, es ist schon spät und ich bin alt...

Ich denke, mit frisch geladenen Akkus wird es wieder funktionieren.

Gruß

mic

mayokleckz
17.10.2009, 01:44
I hope so

thx 4 reply

mayokleckz
17.10.2009, 10:47
Hi,
also die Akkus warens nicht. Hab sie geladen und grad versucht zu flashen - geht nicht.
akt. stand:
Asuro ON -ohne flash- Satus LED grün
mit flash StatusLED rot und gleicher Fehler wie oben.
Mit der TV Fernbedienung - funktioniert.
Was kann ich machen um rauszubekommen was da schief gelaufen ist ?
gruß mayo

radbruch
17.10.2009, 11:37
Hallo

Schade, die Akkus waren mein Favorit. Ohne Flashen grün, mit Flashen rot und selbe Meldung: Der asuro erkennt das Flashen und antwortet. Wenn das Flashprogramm keine Anwort bekommen würde, wäre die Meldung "t" (timeout). Das kann man testen indem man den asuro beim Flashen (nach den ersten Vs) ausschaltet.

Tja, dann bleiben noch die üblichen Ursachen: Schlechte Lötstellen, Poti verstellt oder schwachbrüstiges USB-RS232-Wandlerkabel bei RS232-Transceiver, Fremdlicht (Halogenstrahler, Leuchtstoffröhren, LCDs...), falscher Abstand, altes Flashprogramm (Update auf v1.51 (http://arexx.com/downloads/asuro/ASURO_flash_v151.zip), manche Rechner funktionieren allerdings mit den älteren Versionen besser). Mein Transceiver ist übrigends temperaturabhängig:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=26559

Oder hast du irgendetwas geändert? Andere Schnittstelle, anderer Aufbau beim Flashen, neues Zubehör oder Software am Rechner, Kabel beschädigt, Stecker locker, Schmutz auf asuroplatine, ...

Als Alternative zum Flashprogramm gäbe es noch die eierlegende Wollmilchsau von Osser, allerdings wäre das mein allerletzter Versuch weil es bisher mit dem orginalen Flashprogramm ja funktioniert hatte:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=25249

Gruß

mic

mayokleckz
17.10.2009, 16:17
Hi

Dein Tempabhängiger Transceiver zeigt ja dass alles möglich ist :-)
Werd ich heut mal etwas rumprobieren - kalte Lötstellen suchen,Poti verstellen usw.-
Weil ich da grad vom Weissblatttest gelesen hab - mein Transceiver kann ich hinhalten wo ich will (vorhin richtung draussen) und es zeigt mir trotzdem alle zeichen korrekt an. Deutet das auf nen Fehler hin, oder is das "normal".
Flo

radbruch
17.10.2009, 16:55
Hallo

Das IR-Licht wird von allem reflektiert, deshalb funktioniert der Test auch ohne weises Blatt.

btw ist das lokale Echo im Terminal ausgeschaltet? Denn wenn die eigenen Zeichen alle empfangen werden, ist das Poti richtig eingestellt (Der Transeiver hat den gleichen 36kHz-TSOP wie der asuro) und der Transceiver ist i.O.

Gruß

mic

mayokleckz
17.10.2009, 17:30
Also ist alles i.O. nur es geht halt nicht !? :-k
Das is natürlich das letzte das ich hören wollte.
Damn, weiss wirklich nicht was ich noch versuchen soll. Wie kann ich wieder auf den Asuro zugreifen? Die Verbindung haut ja hin, nur die Übertragung blockt der Asuro ab.

](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,)

021aet04
17.10.2009, 18:18
Software neu installieren. Vielleicht hilft auch schon wenn du die Installation reparierst (wenn es geht).

mayokleckz
17.10.2009, 19:48
Hi,
welche Software meinst du?? Kann ich den Asuro wieder auf "0" setzen !?
Als flash hab ich die aktuelle Version 1.51, als compiler WinAVR.

mayokleckz
17.10.2009, 20:33
Asuro nimmt laut "easyAsuro" keinen Kontakt mit dem Transceiver auf.
Jetzt habe ich gerade den Doctorasuro 1.0 Installiert und etwas mit den Ports rumgespielt während ich Asuro unter den TR gehalten habe. Und er hat bestimmte Signale empfangen und sein aktuelles Programm ausgeführt.
Ist evtl. in dem oben angegebenen Programm irgendwas drinnen was verhindert dass ich ein neues drauf spielen kann ?

Ich bin echt am verzweifeln. Da kann einem echt der Hals platzen .
Noch jemand irgendwelche Ideen ?? Ich bin für jeden Vorschlag dankbar.
Greetz

Flo

Beim letzten Flashversuch hat sich eine 'FlashDatei' mit - x03 x03 - gespeichert ?!?!!?!?!?!?

Kopf :arrow: Tisch

radbruch
17.10.2009, 20:37
Hallo

"Zurücksetzen" kann man den asuro nicht, das zuletzt geflashte Programm (oder Teile davon) ist im Flash, quasi für alle Zeiten. (ISP mal außen vor gelassen).

Die Software (WinAVR und GCC) als Ursache halte ich für sehr unwahrscheinlich, wenn überhaupt wäre es nur sinnvoll, das Flashprogramm neu zu installieren. Um ganz sicher zu gehen solltest du die weiteren Flashversuche mit dem Selbsttest machen (selftest.hex).

Dass die Verbindung zwar aufgebaut wird, dann aber überhaupt kein Block fehlerfrei übertragen wird, ist ungewöhnlich. Ich tippe weiterhin auf ein Problem mit mit den Hintergrundprogrammen/PC-Geschwindigkeit. Wie sieht denn deine PC-Umgebung aus? Rechenleistung, Betriebssystem, Schnittstelle...


Jetzt habe ich gerade den Doctorasuro 1.0 Installiert und etwas mit den Ports rumgespielt
Das sind zwei Teile, ein Programm für den Rechner und eine Hex-Datei für den asuro. Wenn du nicht flashen kannst, kann das nicht funktionieren!

Gruß

mic

mayokleckz
17.10.2009, 22:06
Ich hab die gleiche Umgebung wie zu dem Zeitpunkt als es noch einwandfrei funktioniert hat !?
XPpro SP3
2.0GHz
1024MB RAM
com1 Anschluss
Ich mach dann mal ne Systemwiederherstellung auf vorgestern, nur um ganz sicher zu gehen.
Wenn dass nicht geht, werd ich mir nen neuen Atmel holen und damit versuchen.
FLo

mayokleckz
18.10.2009, 00:44
War wieder ein Satz mit x.
HIIIIIIIIILFE

kann man da garnix machen ?

mayokleckz
18.10.2009, 01:34
Anfängerroboter !?!?! naaaaaja.
Ich weiss was gleich in die Ecke fliegt. Hier gehn Sachen ab, die gibts garnicht !! Müsst ich eigentlich mal Filmen, glaubt mir sonst keiner.
Nur flashen lässt sich der klene nicht.
verzweifel

:Haue

m.a.r.v.i.n
18.10.2009, 09:36
Sieht für mir nach einem defektem Prozessor aus. 'v.v.v.v.v' bedeutet, dass die Übertragung fehlerfrei funktioniert aber der Flash Inhalt nicht korrekt ist (verify error). Bei Übertragungsproblemen gäbe es 'cccccc' oder 'ttttt' crc bzw. timeout errors
Schreib mal eine Mail an Arexx info@arexx.nl oder poste dein Problem im Arexx Forum www.arexx.com.

mayokleckz
18.10.2009, 10:34
Ok mach ich.
und wenn es daran liegt,ist es dann damit getan einen neuen Prozessor drauf zu legen? Oder ist der Asuroprozessor aus dem Lieferumfang irgendwie voreingestellt?

radbruch
18.10.2009, 11:50
'v.v.v.v.v' bedeutet, dass die Übertragung fehlerfrei funktioniert aber der Flash Inhalt nicht korrekt ist (verify error).
Na klar. Ich sollte mal wieder öfter was flashen. Sorry, ich bitte meine Fehlinformationen oben zu ignorieren. Defekte ATMega8 sind recht selten. Beim asuro wird ein Bootlader verwendet der im Ersatz auch drin sein sollte:
http://conrad.de/goto.php?artikel=191359

Gruß

mic

mayokleckz
18.10.2009, 14:19
Ok.
Wie ist es wenn ich einen wie http://www.pollin.de/shop/dt/OTgwOTk4OTk-/Bauelemente/Aktiv/IC/Microcontroller_ATMEGA8_16PU.html kaufe? Da ist dann kein Bootloader drauf, oder gibt es zwischen dem und dem http://www1.conrad.de/scripts/wgate/zcop_b2c/~flN0YXRlPTI5OTY3NjY1Mjc=?~template=PCAT_AREA_S_BR OWSE&glb_user_js=Y&shop=B2C&zhmmh_lfo=&zhmmh_area_kz=&product_show_id=191359&gvlon=&p_init_ipc=X&p_page_to_display=fromoutside&~cookies=1&scrwidth=1680noch weitere unterschiede.
Ist eigentlich schade dass man auf den Prozessor nicht zugreifen und den flash fehler beheben kann. Neukaufen kann ja jeder :-)
Da dies mein erster Schritt in die Elektronik und prozessorwelt ist, finde ich es verblüffend wie schnell man einen Prozessor killen kann.
Wenn ich wenigstens rausbekommen würde was ich falsch gemacht habe.

Wie ist es eigentlich mit dem Evaluationsboard - http://www.pollin.de/shop/dt/MTY5OTgxOTk-/Bausaetze/Diverse/ATMEL_Evaluations_Board_Version_2_0_1_Bausatz.html ? Kann ich da den Prozessor auslesen, bearbeiten etc.
Oder für was ist dieses Board eigentlich da?

Zusatz: Hatte heute Nacht Robbi unter dem IR-TR stehen, nebenbei den Asurodoctor laufen lassen und mich durch diverse Threads und Anleitungen etc. gelesen.
Plötzlich * :shock: * dreht Robbi völlig durch. Vorwärts und Rückwärts jeweils 3stufig.
rechts und links macht er auch sehr schön.
Nur gedrückt wurde nichts.
Asurodoc versucht ja ständig Verbindung aufzunehmen, Connectanzeige grün-rot im wechsel. Verbindung - NEIN - funktion -JA-
Warum funktioniert das Programm noch wenn der Prozessor nen knacks hat ?

grüße

Flo

mayokleckz
18.10.2009, 22:54
Also ich kauf mir dann halt mal den mit Bootloader.

m.a.r.v.i.n
19.10.2009, 08:51
Schreib doch erst mal eine mail an den Arexx Support. Die schicken dir dann einen neuen Prozessor, kostenfrei.