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
Die Frage hat mit dem Betreff "speicher fehler atmega8" nichts zu tun. Wie erkennt der ASURO, dass er (über IR?) programmiert werden soll und dass keine IR-Fernbedienungskommandos kommen?
Dein ATmega8 ist mit Sicherheit nicht kaputt. Du hast ein Problem mit dem speziellen ASURO-Programmiertool (welches ich nicht kenne). Gibts bei Asuro keine Hilfe, Troubleshooting, FAQs? Peter
Der Speicher wurde max. 20 mal geflasht. Das Programmiertool kann es auch nicht sein, da ich einen von dem Hersteller zum test mitgeliefertem Code versucht habe zu flashen. Die Verbindung wird laut flashtool hergestellt (Connect to ASURO --> OK !) nur bei der Übertragung scheiterts eben. (Sending Page 001 of 029 --> v.v.v.v.v.v.v.v.v.v.) Und es wird ein flash Fehler im Prozessor gemeldet (Not successful, Flash contents will be invalid!) Soweit ich das verstehe. Wie kann ich ausser über IR, was ja nicht mehr geht, auf den Prozessor zugreifen? Gibts da Adapter o.Ä. zu kaufen ? Bin neu auf dem Gebiet. Flo
Florian schrieb: > Der Speicher wurde max. 20 mal geflasht. > Das Programmiertool kann es auch nicht sein, da ich einen von dem > Hersteller zum test mitgeliefertem Code versucht habe zu flashen. > Die Verbindung wird laut flashtool hergestellt (Connect to ASURO --> OK > !) > nur bei der Übertragung scheiterts eben. (Sending Page 001 of 029 --> > v.v.v.v.v.v.v.v.v.v.) > > Und es wird ein flash Fehler im Prozessor gemeldet (Not successful, > Flash contents will be invalid!) Das Handbuch vom Asuro (http://www.arexx.com/downloads/asuro/asuro_manual_en.pdf) geht im Abschnitt 8.4 auf diese Flash Fehler ein. v bedeutet verify error, d.h. der Bootloader schreibt was ins Flash, liest aber anschliessend was anderes aus! Die Ursache kann ein ausgelutschtes Flash sein (>10000 Flashvorgänge). Bei deinem Asuro ist die Grenze aber noch nicht erreicht, d.h. ein anderer Fehler liegt vor. Eine weitere Ursache könnte sein, dass der Asuro beim Programmieren instabilen Saft hat - hast du das Programmieren schon mit voll aufgeladenen Akkus oder neuen Batterien versucht? Preventing Flash Corruption http://www.ladyada.net/wiki/doku.php?id=microcontroller_annoyances Wenn das nix hilft, würde ich an deiner Stelle Kontakt zum Hersteller aufnehmen, auf die Probleme hinweisen und versuchen den Atmega8 gegen ein neues Exemplar zu tauschen. > Soweit ich das verstehe. Wie kann ich ausser über IR, was ja nicht mehr > geht, auf den Prozessor zugreifen? Gibts da Adapter o.Ä. zu kaufen ? Das ist normalerweise nicht vorgesehen, siehe http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Bootloader Im Wiki steht auch "Die ISP Schnittstelle ist beim Original ASURO Prozessor abgeschaltet und kann nur durch einen Chip Erase wieder eingeschaltet werden. Leider ist durch den Chip Erase aber auch der Bootloader weg." Wenn eine Einigung mit dem Hersteller nicht gelingt, steht ein Austausch deines Atmega8 an. Entweder mit einem bereits bespielten vom Asuro Hersteller mit dem originalen Bootloader oder einen "leeren" von einem beliebigen Elektronikhändler. Im Fall 2 (jungfräulicher Atmega8 oder gleich der fettere Atmega168) brauchst du einen Helfer zum Einprogrammieren eines alternativen Bootloaders oder du baust dir selbst eine kleine ISP Schnittstelle auf. Wie das geht, siehst du auf http://www.asurowiki.de/pmwiki/pmwiki.php/Main/AsuroErweiterung und im AVR-Tutorial. Eventuell gibt es auch eine Asuro-Community, die weiterhelfen kann.
ok, dank dir. Dann werde ich mich mit dem Hersteller in Verbindung setzen und schauen dass ich einen asuro atmel bekomme. Da ich anfänger bin ist es so glaub ich besser. Dieses Problem hat mir eindeutig gezeigt, dass ich nicht gleich mit kompletten Systemen anfangen sollte. Gibt es einstiegs Lernpakete die etwas taugen? Ich hab mittlerweile soviele gesehen aber kann sie als anfänger nicht einschätzen. Ich möchte sogern in die Welt der Mikrocontroller und Elektronik einsteigen. Um später auch eigene Schaltungen Regelungen zu entwerfen. Mit was fängt man da an? Bin für jeden Vorschlag dankbar.
Ich bin Anhänger der Lowcost-und-dafür-mehr-Selbermachen-Lösung. Deshalb mein Tipp: Hier viel mitlesen und das AVR-Tutorial durchackern dann fragen bei Unklarheiten.
ich weiss das hier im forum irgendwo was zum beschiebenen problem steht.... das ding is einfach scheiße
So seh ich das mittlerweile auch. Nur so als anfänger, wenn man überall liest - kauf den !! Kauft ma den :-) Für später evtl ganz witzig mit dem ding weng zu basteln , erweitern etc. Nur im moment macht das noch keinen Sinn. Will ja hauptsächlich die Schaltungs-und Bearbeitungstechnik lernen und nicht vorrangig mit C rumspielen.Hat ich jetzt lange genug im Studium. Mach mich dann doch mal an das AVR-Tut, bei Fragen nerv ich weiter. Danke schonmal. Bis denn.. Flo
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.