Hallo, wäre das möglich, daß man das Programm per Infrarot in den AVR flasht? Was bräuchte man dafür? Einen IrDA-Empfänger? Oder reicht da ein normales Fotomodul wie TSOP1836 oä? Mich nervt, daß man ständig das Kabel zum programmieren einstecken muß, ich kann in meinem Fall das Kabel aus mechanischen Gründen nicht drin stecken lassen beim Betrieb. Armin.
Mein Gedankengang war der, ein IrDA-Modul am PC habe ich schon, einen virtuellen COM-Port auch, somit müsste PC-seitig das Problem nicht liegen. Nur wie sieht das AVR-seitig aus? In einem anderen Thread habe ich verschiedene Meinungen über RS232 über IrDA gelesen. Armin
Ich setze an einem MSP430 einen IrDA Controller MCP2150 von Microchip ein. Allerdings nicht zum Flashen, sondern zur Datenübertragung. Ich plane, eine In-System-Update Funktion zu integrieren, mit der der Controller sich selber mit einem neuen Programm über IrDA flashen kann. Was Du vorschlägst, wird so einfach wahrscheinlich nicht funktionieren. Du verlierst über IrDA Pakete, d.h. Du must ein Protokoll aufsetzen, um sicherzustellen, dass alle Pakete angekommen sind (es sei denn, es gibt IrDA-Controller, die diesen Part übernehmen können). Dazu must Du auf der PC-Seite Software schreiben und auf AVR-Seite auch Routinen für den Software-Update haben. Möglicherweise sogar einen extra AVR, der das Protokoll und das flashen des eigentlichen AVR-Controllers übernimmt. Wenn Du eine gute Lösung gefunden haben solltest, würde mich interessieren, wie Du es gelöst hast. Gruss Arvid
@Armin: Man könnte das Signal auch mit dem TSOP1836 empfangen, aber nicht per IRDA. Die Übertragungsrate ist wohl deutlich geringer als bei Irda, könnte aber vermutlich mit der normalen ISP-Programmierung mithalten. Wie Arvid schon erwähnt hat, braucht man im Prinzip einen Rückkanal, damit man sehen kann, ob die Programmierung funktioniert hat. Man könnte darauf verzichten, wenn man eine fehlerhafte Übertragung anderweitig erkennen kann, d.h. wenn man z.B. eine sowieso vorhandene LED zur Statusanzeige verwendet. Man muß dann aber eine fehlgeschlagene Übertragung nochmal komplett wiederholen und die Programmiersoftware weis nicht, ob die Übertragung geklappt hat. Nur Hin-Kanal: IR-LED an PC, TSOP an AVR. Hin- und Rückkanal: IR-LED und TSOP an PC und AVR. Prinzipiell mußt Du aber auf jeden Fall einen Bootloader für den AVR schreiben und beim PC ein Programm, daß die Daten übertragen kann. Bei IRDA (mit passendem Chip) könnte es sein, daß Du den RS232-Bootloader verwenden kannst, aber da bin ich mir nicht sicher, da ich nicht weis, wie der Bootloader erkennt, daß Daten anliegen. Markus
Und wie schreibt man so einen Bootloader? Wenn Infrarot Daten -> Dann kopieren ins Flash? Geht das so einfach? Ich habe noch nie mit dem Bootloader gearbeitet und weiß nicht was man dem sagen muß. Aber schonmal Danke für die Tipps. Armin
Vor allem solltest Du erst einmal absolut (soweit wie möglich) sicherstellen, das sich der Bootloader nich alleine aktivieren kann (EMV-Probleme ect.). Sogar Atmel hat ja Probleme damit. Ich habe zwar meinen Bootloader (allerdings PIC) eigentlich fertig, scheue mich aber trotzdem (noch) diesen befehlsgesteuert zu aktivieren. Ich habe schon überlegt einen speziellen Header zu verwenden und die Programmierung nur durchzuführen wenn der stimmt. Aber was ist, wenn aus irgendeinem nichterfindlichen Grund der Programmcounter genau hinter die Abfrage zeigt (besser gesagt durch irgendeine Störung dahingeworfen wird)? Dazu würden mich eure Meinungen interessieren. Zurück zur eigentlichen Frage: Der Bootloader ist im Prinzip nur ein kleines Programm, was in der Lage ist Befehlsgesteuert (vom PC z.B. über RS232) den restlichen Flash des Prozessors zu programmieren. Der Schnittstellentyp zum PC ist dabei eigentlich egal. Wichtig ist nur, das der Prozessor nach dem Schreiben eines Datenblockes ein Prüflesen durchführt und das Resultat an den PC zurückmeldet. Kommt keine Rückmeldung oder ein Fehler, dann wird einfach versucht den Block nochmal zu programmieren. Ohne Bidirektionale Datenübertragung funktioniert das natürlich nicht. Steffen
@Steffen, "Aber was ist, wenn aus irgendeinem nichterfindlichen Grund der Programmcounter genau hinter die Abfrage zeigt (besser gesagt durch irgendeine Störung dahingeworfen wird)?" Das darf einfach nicht passieren ! Also immer schön einen ordentlichen Reset-IC nehmen oder den internen Brown-Out. Ansonsten kannst Du doch jedes Programm vergessen, wenn Du erwartest, daß der PC kreuz und quer an eine beliebige Stelle hüpft. Ich habe mir auch einen Bootloader für den Mega8 geschrieben, funktioniert super. Er ist aber nur für 200ms nach dem Einschalten aktiv und versucht die Baudrate zu erkennen und das Paßwort. Die PC-Software versucht ständig das Paßwort zu senden, d.h. das PC-Programm muß zuerst gestartet werden. Super ist am Mega8, daß auch der Botloader Interrupts benutzen kann, d.h. während eine Page geschrieben wird, können schon die Bytes für die nächste Page empfangen werden. Man muß bloß vor dem Start der Anwendung die Interruptvektoren wieder zurück in den User-Flash setzen. Peter
"Das darf eigentlich nicht passieren !" Sollte es eigentlich auch nicht. Aber was wenn das System irgendwo extremsten Störungen ausgesetzt ist? Ich erwarte nicht, das der PC kreuz und quer springt aber eine 100%-ige Sicherheit habe ich eigentlich nicht. Aus dem Grund sperre ich den Flash gegen Schreibzugriffe. Das hat natürlich den Nachteil, dass ich das System nur über die ICSP-Schnittstelle programmieren kann. Über den Bootloader geht es etwas ellegannter. Steffen
@Steffen: Entweder Deine Schaltung ist für diese "extremsten Störungen" ausgelegt, dann darf der PC auch unter diesen Bedingungen nicht springen. Oder die Schaltung ist nicht dafür ausgelegt, dann sind diese Störungen ganz klar außerhalb des Spezifikation und dann kann eben alles passieren. Außerdem stellt sich die Frage, ob der Schutz gegen Schreibzugriffe überhaupt noch funktioniert, wenn die Störungen so stark sind, daß Register willkürlich verändert werden. Markus
Hallo Markus, das ist soweit richtig. Es ist nur so, das wir teilweise Baugruppen, die ich leider auch nicht in einem geschirmten Gehäuse unterbringen kann, als OEM-Produkte (Platine zum Einbau in andere Systeme) verkaufen. Gerade eine dieser Installationen ist problematisch. Ich habe noich nicht den blassesten Schimmer was da genau passiert. Es ist auch nur eine von mehreren Hundert. Ein EMV-Test wurde natürlich nach allen Normen ohne Probleme durchgeführt. Wie gesagt eigentlich hab ihr beide Recht aber ich bin da lieber vorsichtig. Steffen
Hi ! In der AppNote AVR109 "Self Programming" ist ein Bootloader mit C-Quelltext beschrieben, der über die serielle Schnittstelle läuft. Als Software auf dem PC kommt AVR Prog (im Studio integriert) zum Einsatz. Vielleicht hilft's !? Für die Übertragung müsste dann ein fertiger IR-Adapter, der einen Com-Port emuliert, funktionieren. Daniel
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.