PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuer Atmega8 - Probleme beim Flashen



fuxx
30.07.2009, 11:53
Hallo zusammen,

tolles Forum, hat mir schon viel weitergeholfen. Habe mir auch Weihnachten einen Asuro zugelegt, nur sehr schnell den Spaß dran verloren, weil ich das Programmieren in den "Asuro-Befehlen" nicht so toll fand. Seit kurzen habe ich dann angefangen den Asuro ohne Asuro-Befehle zu programmieren. Deshalb hab ich mir jetzt einen neuen Atmega8 gekauft, um immer einen in Reserve zu haben, falls ich doch was kaputt mache :D

Jetzt aber mein Problem:
Den neuen Atmega bekomm ich leider mit der Asuro Software nicht geflasht? Gibt es da irgendeine Möglichkeit oder muss ich mir was anderes überlegen? Kann ich den neuen Atmega auch irgendwie direkt über die Serielle Schnittstelle programmieren, ohne ein ISP-Modul zu haben?

Für Hilfe wäre ich sehr dankbar.

m.a.r.v.i.n
30.07.2009, 12:06
Hallo fuxx,

ohne Bootloader kann man den Atmega8 nur über ISP programmieren. Leider kann man den Asuro Bootloader auch nicht auslesen um ihn auf einen neuen Chip zu kopieren.

askazo
30.07.2009, 12:07
Hi,
der ATMega8 vom Asuro hat von Haus aus einen sog. Bootloader aufgespielt, über den die Programme in den Flash geladen werden.
Ein "normal" gekaufter Mega8 hat diesen Bootloader nicht drauf, weswegen Du ihn auch nicht über das Asuro-Interface flashen kannst.

Abhilfe schafft da nur ein ISP-Programmer wie z.B. der AVRISP von Atmel.
Allerdings werden die Pins der ISP-Schnittstelle im Asuro als I/Os benutzt, daher kannst Du den Controller dann nur außerhalb des Asuro programmieren.

Den Mega8 gibt's aber auch mit dem Bootloader als Ersatzteil zu kaufen.

Gruß,
askazo

oberallgeier
30.07.2009, 12:17
Willkommen im Forum.


... Den neuen Atmega bekomm ich leider mit der Asuro Software nicht geflasht ...Klar! Der originale mega8 am asuro hat einen Bootloader - der die von der seriellen Schnittstelle gelieferten Daten in den Flash schreibt. Ein neuer oder anderer Controller, insbesondere einer ohne Bootloader, kann IM asuro mit Standardbeschaltung nicht geflasht werden.


... Kann ich den neuen Atmega .. programmieren, ohne ein ISP-Modul zu haben ...Nein.

Es gibt verschiedene Möglichkeiten, ohne Bootloader zu flashen. Sehr hübsch einfach macht es Sebastian, (https://www.roboternetz.de/phpBB2/viewtopic.php?t=35473) aufwendiger, aber mit zusätzlichen Mögichkeiten gehts beispielsweise so. (http://www.e-robotix.de/epages/61660837.sf/de_DE/?ObjectPath=/Shops/61660837/Products/As1) Natürlich braucht man dazu noch einen Programmer wie z.B. diesen hier. (http://shop.ullihome.de/catalog/product_info.php/products_id/67) Das ist mit 15 Eur nicht nur sehr preisgünstig, das Teilchen kann auch viel mehr als nur flashen. (http://www.ullihome.de/index.php/Hauptseite#USB_AVR-Lab)

Valen
30.07.2009, 16:12
Conrad hat den Asuro atmega 8 mit bootloader drin. Das wird aber ein ersatz atmega den 8 euro teuerrer wird.

Artikel-Nr.: 191359 - 62

Zwerwelfliescher
30.07.2009, 16:17
Conrad ist insgesammt teuer. Ein ATmega8 kostet dort 5.70€!
Ich hab meinen für nur 1.30€ bekommen.(Ohne Bootloader)

oberallgeier
30.07.2009, 16:57
CSD verkauft (http://www.csd-electronics.de/de/index.htm) den mega8 "ohne" sogar für 1.20 - Best.Nr.: 30131.

Wegen eines Controllers mit dem originalen Bootloader hilft möglicherweise eine eMail-Anfrage direkt an AREXX: info@arexx.nl, in www.arexx.com hatte ich gerade nix gefunden.

fuxx
31.07.2009, 10:05
Ich habe den Atmega bei Reichelt für 1,40€ geholt... Nunja, war wohl ein Satz mit X....

Kann ich mir dieses ISP Adapter auch irgendwie selber bauen, oder muss ich schon wieder bestellen (...diese blöden Versandkosten...)

Besserwessi
31.07.2009, 10:21
Wenn man am PC noch eine echte RS232 oder LPT schnittstelle hat, kann man einen ISP programmer noch selber bauen. Wenn man nur USB geht das praktisch nicht, denn dann braucht der Programmer in der Regel einen µC oder wenigstens einen speziellen USB chip.

fuxx
31.07.2009, 10:26
Ja ich hab noch eine echte RS232 oder LPT-Schnittstelle... Gibt es für das Programmierkabel irgendwo ne Anleitung?

Besserwessi
31.07.2009, 10:37
Für die einfachen Programmer gibt es viele Anleitungen, z.B. :
http://www.lancos.com/siprogsch.html
http://elm-chan.org/works/avrx/report_e.html
http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel


Bei der Version mit nur Widertänden sollte man vorsichtig sein. Da ist der LPT Port kaum geschützt.

Auch wenn die Version für die RS232 ähnlich einfach aussieht, ist die deutlich besser.

fuxx
31.07.2009, 11:12
Ohne den 74HC244 gehts wohl nicht oder?
Hab den rest hier rumfliegen, aber die IC'S leider nit. Nungut, dann muss ich wohl wieder bestellen :/

Hubert.G
31.07.2009, 13:22
Du kannst dir den seriellen Programmer bauen, da brauchst du nur einen Transistor, zwei Z-Dioden, Widerstände, Kondensator.

fuxx
31.07.2009, 13:45
Okay. Klingt gut. Gibts dazu auch einen Schaltplan oder so?

Vielen Dank im Voraus!

Hubert.G
31.07.2009, 14:01
Schaltplan und Bilder www.schorsch.at/content/view/24/1/lang,de/

Besserwessi
31.07.2009, 18:17
Bei den treiber ICs muss es auch nicht der HC244 sein. Da gehen praktisch alle nicht invertierenden Treiber der HC Serie. Auch ein 74HC00 geht schon. Zur Not geht auch ein 74HC04, 74HC14, wenn man den Reset Pin "per Hand" mit einem oder 2 Transistoren macht. Bei einem Transistor wäre ich mir nicht sicher mit der Softwareunterstützung. Besser sind aber Treiber mit Tristate Ausgang.

Bei der Lösung für den Seriellen Port kann man die Zenerdioden ggf. auch durch einen andere Spannungsbegrenzung ersetzen (z.B. Dioden + LEDs).

fuxx
31.07.2009, 19:22
Ja das wäre nämlich das Problem, die Z-Dioden hab ich leider nicht griffbereit :/
Müssen es denn genau 5.1 Volt sein oder gibt es da eine bestimmt Toleranz? Denn LED's habe ich genug hier rumfliegen, allerdings haben die ja auch immer ein Spannungsbereich...
Und auf welche Pins beim Mikrocontroller müssen die dann von der ISP-Schnittstelle?

fuxx
01.08.2009, 11:39
Ein "neues" Problem:

Hab ich mir das zu einfach vorgestellt:
Atmega mit Asuro programmieren, umstecken auf neues Board und wieder Spannung EIN und alles läuft?

Weil mein Problem ist:
Auf dem Asuro funktioniert alles, wenn ich nun alles umstecke dann tut sich nichts. Hab an den Ausgängen einen Widerstand und eine LED. Hab den Atmega so angeschlossen: VCC +5V und beide GND mit - verbunden.

Das ist mein "Programm":
#include "asuro.h"
#include "io.h"
#include "iom8.h"
#include <stdlib.h>

int main(void)
{
DDRC = 0xff;
PORTC = (1<<PC1) | (1<<PC0);
DDRD = 0xff;
PORTD = (1<<PD6);
}

----------------------------

Geht das wegen dem BOOTLOADER nicht? muss ich quasi den anderen Atmega benutzen und diesen mittels ISP programmieren?

021aet04
01.08.2009, 11:46
Wie sieht die andere Schaltung aus? Hast du einen Quarz angeschlossen?

fuxx
01.08.2009, 11:53
Nein es ist kein Quarz angeschlossen... Der Mikrocontroller steckt auf einem Steckboard, ohne irgendwas anderes bis auf die LED an PORT PC0 mit dem Widerstand. Der rest ist wie oben beschrieben.

021aet04
01.08.2009, 11:56
Hat der Asuro einen Quarz? Habe keinen. Wenn der Asuro einen hat, hast du dein Problem. Dann braucht er einen, damit er funktioniert. Du könntest auch den internen einschalten, wenn das geht oder du nimmst einen Neuen. Den kannst du mit den Fusebits einstellen, wie du willst.

fuxx
01.08.2009, 12:03
Nein der Asuro hat keinen Quarz. Zumindest keinen externen. Was könnte denn noch der Grund sein?

Valen
01.08.2009, 12:28
Nein der Asuro hat keinen Quarz. Zumindest keinen externen. Was könnte denn noch der Grund sein?Nicht einer Quarz, aber doch ein schwinger (ceramic resonator: http://en.wikipedia.org/wiki/Ceramic_resonator ). Sitzt hinter der atmega chip neben dass bolz-loch. Es hat 3 beinchen und ist Q1 genennt im schaltung.

Besserwessi
01.08.2009, 12:32
Die Zenerdioden im Seriellen Programmer sind als Spannungsbegrenzung da. Die Spannung muß auf einen Wert unter Vcc+0.5 V begrenzt werden. Andererseits sollte eine Spannung von wenigstens 0,7*Vcc rauskommen, damit ein High sicher erkannt wird. Zusätzlich verhindert die zenerdiode auch eine negative Spannung unter etwa -0.6V
Für 5 V versorgung ist der Tolleranzbereich also etwa 5.5 V bis 3,5 V. Mit 2 roten LEDs und eine Diode in Reihe sollte man auf etwa 4-4.5 V kommen. Dabei kann man die LEDs für beide Kanäle gemeinsam nutzen. Zusätzlich muß auch noch eine Diode rein, um eine negative Spannung zu verhindern.
Wenn man es etwas variabler haben will, könnte man die Begrenzung auch über einen PNP Transistor an VCC anpassen. Dann sollte der Programmer auch bei einer Schaltung mit 3.3 V noch funktionieren können. Die Begrenzung sollte dann die Rückrichtung sein.

Hubert.G
01.08.2009, 13:38
Hast du auch AVCC angeschlossen, das ist die Stromversorgung für PortC.

fuxx
01.08.2009, 14:46
Nee muss ich mal ausprobieren. Kann man denn irgendwo nachlesen an welchen "Beinchen" was angeschlossen werden muss damit der Mikorcontroller das Programm abspielt?
Und muss ich doch noch einen Quarz mit einbauen, damit alles läuft? Weil bisher hab ich nur 5Volt benutzt.

Besserwessi
01.08.2009, 15:00
Ein quarz muß nicht. Aber AVCC und AGND sind wirklich wichtig. Bei einigen alten mega8 waren sie mal intern verbunden, aber das war mehr ein Fehler.

AVCC ist nicht nur für den ADC. Da hängt unter anderem auch die analoge REF für den Brownoutdetektor dran. Ohne Spannung an AVCC geht also mit Brownoutdetektor praktisch nichts.

Zum nachlesen wo was dran ist gibts das Datenblatt.

Valen
01.08.2009, 16:07
Ich bit etwas verwirt was fuxx nun wirklich macht. Welchem chip probierst du nun zu programieren, den orginalen Asuro chip (mit bootloader) oder den neuen atmega8 ohne bootloader. Und mit welchem programier gerat, einer der geposteten isp programmer, oder mit dem Asuro platine und usb/rs232 IR modul?

Jedenfalls steht in dem asuro anleitung ein schaltplan. Fur den asuro mit bootloader ist es wichtig das es den 8Mhz schwinger angeschlossen hat (weil das mit fusebits eingestellt ist), den Vcc/Reset/Gnd angeschlossen sind (Reset am Vcc). Dazu muss auch noch den R12/R13 spannungsteiler an PC5/ADC5/SCL pin geschlossen sein. Weil die bootloader die batterie spannung misst und nicht weiter geht wenn es zu niedrig ist. Und naturlich den TX und RX pin von dem Usart. Aber das ist klar.

Besserwessi: In dem atmega8 datasheet steht meineswissen nichts uber das Brown-out detector spannung auf Aref brauchst. Welcher seite steht das, bitte? Denn brownout-detector kann aber einen internen referenz benutzen (auch mit fusebit eingestellt) der den ADC auch benutzen kan. Den internen spannungs referenz wird aber nur von Vcc gespeisst sowiet ich gelesen habe.

oberallgeier
01.08.2009, 16:30
... verwirt was fuxx nun wirklich macht ...Da steht es ja:
... Problem ist:
Auf dem Asuro funktioniert alles, wenn ich nun alles umstecke dann tut sich nichts. Hab an den Ausgängen einen Widerstand und eine LED. Hab den Atmega so angeschlossen: VCC +5V und beide GND mit - verbunden ...
Nein es ist kein Quarz angeschlossen... Der Mikrocontroller steckt auf einem Steckboard, ohne irgendwas anderes bis auf die LED an PORT PC0 mit dem Widerstand. Der rest ist wie oben beschrieben.
Vielleicht hat der µController (noch ??) den internen Takt ! ? ! ? Denn
Ich habe den Atmega bei Reichelt für 1,40€ geholt...

fuxx
01.08.2009, 16:37
Okay das mit AVCC und AVGN werd ich morgen mal testet. Ist das denn ein Problem, wenn es der interne Takt ist?

oberallgeier
01.08.2009, 17:01
... Ist das denn ein Problem, wenn es der interne Takt ist?Nein ( , natürlich nicht). Der interne Takt ist bei der Auslieferung aktiviert - damit "jeder" Controller gleich flashbar ist - auch ohne Quarz (dies ist eine unqualifizierte Vermutung/Behauptung von mir). Man erkennt an den Fuses, dass der interne Takt aktiviert ist.
http://www.rn-wissen.de/index.php/Avr#Die_Fusebits
Es könnte natürlich auch sein, dass der interne Takt bei Auslieferung noch durch 8 geteilt wird, ich hatte gerade vor drei Tagen dieses Problemchen - dann tackert der Controller halt etwas langsam vor sich hin . . . . und ist nicht von allen Programmern zu erkennen/bedienen/flashen/lesen.

Besserwessi
01.08.2009, 18:54
Der Brownoutdetektor nutzt immer die interne Referenz. Die externe braucht ernicht. Die interne Ref. wird hauptsächlich für den AD gebraucht und wird schon deshalb auch von Avcc / AGND gespeißt. Sonst müßte man da vor allem die andere Masse berücksichtigen. Der Kondensator am Aref pin kommt ja auch gegegn AGND. Soweit ich das aus einer anderen Diskussion mitgekreigt habe, wird auch mehr AVCC überwacht, auch wenn im Datenblatt VCC steht. Jedenfalls spricht der Brownout zu früh an, wenn AVCC nicht angeschlossen ist oder deutlich unter VCC ist.
Macht ja auch irgendwie Sinn, dann muß nicht noch die andere Masse mit berücksichtiget werden.

Wie es auch sei: man muß AVCC, AGND mit versorgen, sonst läuft der ganze µC nicht richtig. Für wenig Störungen sollte auch an beiden Seiten ein Abblockkondensator sein.

Der wohl unangenehmsten Effect den man sich da einhanden kann ist folgender. Über interne, parasitäre PN Übergänge kann wahrscheinlich doch etwas strom von VCC nach AVCC fließen. Solange man nicht zu viel Strom zieht, mag es damit noch einigermaßen gehen. Wenn man aber mehr Strom verbraucht, der eigentlich von AVCC kommten sollte, besteht die Gefahr das man einen Latchup Auslöst und so den µC zerstört ("kurzschluß" von VCC nach GND), wenn die Spannung an VCC genug Leistung liefern kann.

fuxx
03.08.2009, 08:23
DANKE... es hat funktioniert. Es lag am falschen Aufbau der Grundspannung mit AVCC und AGVN.

Jetzt kann ic auch Versuche machen:)

Zwerwelfliescher
07.08.2009, 10:23
Ich möchte kein neues Thema aufmachen. Ic habe 4 Atmega8 zu Hause rumliegen und ein ISP-Programmer. Gibt es irgendwo den Bootloader zum Download?

MFG Flexxx

PS: Wie habt ihr den halben TT Ball am Asuro besfestigt? 8-[

021aet04
07.08.2009, 11:53
Glaube nicht. Es gibt aber einen Ersatz Mega8 mit Bootloader

Zwerwelfliescher
07.08.2009, 12:22
Ja das weiß ich. der kostet aber 3-4mal so viel.
Was ist der unterschied zwischen ATmega8-16PU und ATmega8-L???

Valen
07.08.2009, 13:18
Doch, jemand hat schon ein bootloader fur Asuro geschriben:

http://home.planet.nl/~winko001/Asuro/Bootloader/AsuBtlPagFrm.htm

Besserwessi
07.08.2009, 13:32
Die Mega8-16 und Mega8-L sind leicht verschiedene Versionen. Bei der Software gibt es keine unterschiede. Nur die maximal garantierte Taltfrequenz und die Mindest Spannung sind verschieden.

Beim Mega8L , ab 2,7 V, aber nur bis 8 MHz.
Beim Mega8-16, ab 4,5 V aber dafür bis 16 MHz.

Das sind die garantierten Wert. Es ist aber gut möglich, dass ein Mega8-16 auch mal noch bis 3 V runter geht, oder der Mega8L auch bis 16 MHz (bei 5 V).

Mit leicht angepaßterSoftware geht auch der Mega88 oder Mega168. Da geht es bis 2,7 V runter und bis 20 MHz, allerdings nicht gleichzeitig.

Zwerwelfliescher
07.08.2009, 13:35
Vielen Dank

MFG Flexxx

Osser
19.08.2009, 10:11
Hi,

um den "Virgin" ATMEGA via ISP zu flashen habe ich eine einfach zu bedienende Software geschrieben. Damit kannst Du dir den Bootloader auch komplett sparen.

Die Software und die Beschreibung des Dongles kannst Du auf der AsuroFlash Seite (http://www.secius.com/AsuroFlash) runterladen.
Die Software heisst "AvrIsp beta preview version 1.0.2.13" und wird demächst auch in AsuroFlash (https://www.roboternetz.de/phpBB2/viewtopic.php?t=25249) integriert um ohne Bootloader zu flashen.
Im Blogeintrag vom 17. März steht der Link auf die Seite die den Aufbau für das einfache Dongle-PCB beschreibt. Ich benutze die serielle Version da die besser abgeschirmt ist und parallele Verlängerungskabel so sperrig sind.


Gruss,

Olli