Hallo,
ich fange gerade mit dem Basteln mit Mega8 und Mega16 an,
kenne aber bis jetzt nur 4433, ist das mit dem ISP gleich und was
bedeutet das SELF PROG., übersetzt "selbstprogrammierend".
Vielleicht kann mir das ja mal jemand erklären.
Gruss
A. Arndt
Ist ganz genauso wie bei den "alten" AVRs.
Nur die MOSI und MISO Pins darfst du jetzt nicht mehr benutzen, sondern
die nennen sich jetzt PDO und PDI. Steht aber im Datenblatt!
Selbstprogrammierend bedeutet, daß er sich selbst programmieren kann und
du dich zur Ruhe setzen kannst gg
Ne, daß bedeutet einfach nur, daß der µC von sich aus eine
Programmierung herbeiführen kann.
Beispielsweise könnte das Ding prüfen, ob ein Update verfügbar ist und
sich dann selber updaten...
Gruß,
Klaus
@Klaus:
Im TDS des Mega16 gibt es aber noch mosi und miso...
Gruss
A. Arndt
Heisst es etwa auch, ich kann die Programmierung später komplett über
rs-232 machen ????
>> Im TDS des Mega16 gibt es aber noch mosi und miso...
die gibts bei allen megas du kannst diese aber nicht mehr für isp
benutzen sondern wie gesagt über PDO und PDI.
>> Heisst es etwa auch, ich kann die Programmierung später komplett über rs-232
machen ????
wenn du dir den bootloader programmierst ja.
Gruss,
BAB
ATmega163 Datasheet:
"Both the Flash and EEPROM memory arrays can be programmed using the
serial SPI bus while RESET is pulled to GND. The serial interface
consists of pins SCK, MOSI (input) and MISO (output)."
Der ATmega16 ist als Ersatz für den 163 gedacht, also wird es da genauso
sein.
Hallo,
lt. A. Schw. und Matthias sind die Pins so geblieben, die Programmierung
ist hier also wie beim 4433 ???, lese ich so raus.
Wenn man die MISO usw. nicht für Prog. nutzen kann, welchen Sinn haben
sie denn dann noch...
Gruss
A. Arndt
Hi
du kannst sie als SPI-Schnittstelle zu anderen Bausteinen benutzen. Es
gibt z.B. EEPROM's und AD-Wandler mit SPI-Interface.
Aber wie gesagt:
Es werden weiterhin alle AVR's (mit Ausnahme von MEGA64, MEGA103 und
MEGA128) über MOSI und MISO programmiert. Bei den genannten Außnahmen
geht man über RxD und TxD oder wie die auch gennant werden PDI und PDO.
Matthias
Also hier scheinen einige Leute was zu verwechseln. Mega8, 16, 32 werden
weiterhin über die altbekannte ISP Schnitstelle mit MOSI, MISO und SCK
programmiert. Nur Mega64/128 verwenden statt MOSI/MISO die Pins des
UART0, nämlich PD0 und PD1
Und Self Programming ist nicht gleich Bootloader. Der Bootloader ist nur
eine Möglichkeit, die Self Programming bietet. Self Programming generell
heißt erstmal, das es jetzt ein paar neue ASM Befehle gibt die es einem
Programm ermöglichen, beliebige Daten während der Programmlaufzeit in
das Flash zu programmieren. Das kann dann zum einen ein Bootloader sein,
der ein neues Programm von praktisch jeder beliebigen Quelle empfangen
und in das Flash schreiben kann, das kann aber auch ein Programm sein,
das z.b. die Texte für ein Menu in einer anderen Sprache im Flash ablegt
Der Bootloader ist zwar ziemlich flexibel und mächtig, aber leider auch
etwas komplizierter einzurichten. Hierfür wird ein gewisser bereich am
Ende des Programmspeichers reserviert und gegebenenfalls auch gegen
Überschreiben geschützt. Dann muß man den Bootloader einmal mittels ISP
(Man kommt also auch da nicht drum rum) in das Flash schreiben. Jetzt
gibt es zwei Möglichkeiten den Bootloader aufzurufen:
1. Direkt bei Reset wird der Bootloader angesprungen. Jetzt kann der
Bootloader z.B. einen Port abfragen, ob ein Jumper gesteckt ist oder
nicht. Ist er z.B. gesteckt wartet der Bootloader, bis das neue Programm
über eine Schnittstelle kommt und speichert es im Flash. Anschließend
startet er das Programm.
2. Bei einem Reset wird ganz normal die Applikation angesprungen. Die
Applikation kann nun den Bootloader aufrufen. Das kann man z.B. über ein
Menu (Software Update) machen.
So, war zwar jetzt viel Text, aber ich hoffe es hat sich gelohnt.
Gruß
Markus
Hi Markus,
das ja im Prinzip, das im Programmflash eine Routine stehen kann, die
nur dazu dient ein weiteres Programm aus z.B. Eprom zu laden, oder?
Günter
Hi Günter,
richtig, der Bootloader ist ein Programm, das am Ende des
Programmspeichers steht und mit dem man andere Programme, z.b. über die
serielle Schnittstelle oder sogar über Ethernet enpfangen und an den
Anfang des Flash Speichers schreiben kann.
Die aber jederzeit wieder durch andere Programmteile ersetzt werden
können denke ich mal.
Also ein Beispiel:
Mainroutine im Flash
div Programmteile im EPROM (z.B.512KB)
Aufruf der Programmteile durch externe Ereignisse (Interrupts, Ports)
Das Ganze wäre dann so zu behandeln wie ein Main Programm mit externen
Subroutinen wenn ich das richtig verstanden habe. Oder Denke ich schon
wieder zu weit?
Günter
Theoretisch wäre das Nachladen von Teilprogrammen wohl möglich, aber da
Atmel für den Flash nur 10.000 Schreibzyklen garantiert macht das in der
Praxis keinen Sinn.
Über Sinn oder Unsinn entscheidet wohl die Anwendung. Es ist in jedem
Fall eine Alternative die aber nur Sinn macht wenn sowieso ein RS232
Treiber vorhanden ist. In Zeiten, in denen die klassischen
Schnittstellen wegfallen werden die aber seltener
Nicht unbedingt, schließlich braucht der Bootloader auch Speicher... und
wenn er nicht unbedingt benötigt wird ist er schlicht überflüssig.
Den Bootloader halte ich bzw. nur für sinnvoll wenn der Anwender dazu in
der lage sein soll/muss die Controllersoftware zu erneuern.
Hi
Ein Bootloader hat ja zwingend nichts mit einer RS232 zu tun. Er braucht
die Daten einfach nur irgendwo her. In meinem nächsten Projekt wird ein
Softwareupdate über USB möglich sein. Da man das Gerät nach dem
Zusammenbau nur ungern auseinandernimmt und der USB die einzige externe
Schnittstelle ist ist da der Bootloader durchaus sinnvoll.
Matthias
hallo @ all,
alles recht interessant, aber welche möglichkeit bzw.
bootloader gibt es denn für den serialport.
bootloader ist ja schon und gut, und welche passende soft
gibt es denn für den pc
Andreas