PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Flashbar nach dem Flashen?



crabtack
02.06.2011, 10:51
Hallo,
Ich baue für die Schule einen Asuro.
Da ich schon Erfahrung (Eieruhr,Binäruhr,unvollständiger Linienfolger) mit Atmegas habe werde ich ihn nicht mit Hilfe der Asuro Bibliotheken Programmieren.
Aber wie stelle ich es an, dass ich ihn nach dem ersten flashen noch flashen kann?
Der Infrarot Reciver ist ja an dem Rxd Pin des Atmegas angeschlossen.
Darübe rkann man ja soweit ich weiß keinen Atmega flashen.
Zugegeben, ich eknne auch nur ISP und JTAG (oder wie es geschrieben wird)
Also entweder ist es so, dass der Atmega tatsächlich einfach so über Rxd geflasht werden kann.
Oder im Programm des Asuros ist etwas enthalten, was dafür sorgt, dass der Asuro nur mit Rxd geflasht werden kann.
Nun, würde ich dieses etwas damit überschrieben wenn ich den Asuro flashe oder ist es z.b. im EEPROM enthalten?
Ich hoffe ihr versteht mein Problem und könnt mir weiterhelfen.

TobiKa
02.06.2011, 11:06
Per Infrarot kannst du ihn nur flashen wenn er den/seinen Bootloader drauf hat.

crabtack
02.06.2011, 11:57
Hallo,
ich ahbe jetzt ein wenig über den Asuro bootloader gelesen.
Er befindet sich also am ende des Programms und ist 1kb groß.
Wenn ich nun ein 6 kb großes programm auf den Asuro flashe, dann bleibt der bootloader doch erhalten oder?
Wenn ich versuche ein 8kb großes Programm zu flashen, geht dann der bootloader verloren oder gibt es dann fehler beim flashen und ich kann anschließend wieder ein 6kb großes Programm über infrarot übertragen?
Muss mein Programm etws bestimmtes enthalten, damit der bootloader erhalten bleibt oder geht auch einfach:

#include <avr/io.h>

int main (void) {
DDRB = 0xFF;
PORTB = 0x03;
DDRB = (1 << DDB1)
}

TobiKa
02.06.2011, 12:00
Wenn du den Bootloader überschrieben hast, kannst du ihn über IR nciht wieder drauf flashen!
Und er sitzt am Ende deines Programms?! Nee er sitzt im Controller, oder wie hast du das gemeint?

crabtack
02.06.2011, 12:21
Nein, ich meine, dass er die letzten 1kb des speichers im Controller belegt.
Also wenn ich 6kb drauf flashe müsste er erhalten bleiben.

radbruch
02.06.2011, 13:50
Hallo

Nicht das Programm sondern die Flashmethode entscheidet, ob der Bootloader gelöscht wird oder erhalten bleibt. Beim Flashen per Bootloader über TX/RX bleibt der Bootlader immer erhalten, weil er sich selbst vor dem Überschreiben schützt. Beim Flashen per ISP wird er gnadenlos überschrieben.

Das Flashen per IR beim asuro ist zwar zäh, dafür aber völlig risikolos. Ich würde es beibehalten solange die Programme die Speichergrenze nicht überschreiten. Dann würde ich einen nackten Mega8 einsetzen und auf ISP umsteigen.

Der Mega8 mit orginalem Bootloader kostet inzwischen fast 10€. Alternativ kann man auch einen Freeware-Bootloader bei arexx runterladen (Das Orginal ist nicht erhältlich!) und in einen jungfräulichen Mega8 brennen.

Gruß

mic

crabtack
02.06.2011, 15:02
Vielen Dank.
Hat einen guten Selbsterhaltungsinstinkt der bootloader.
Dann kann ich hin ja mal dazu bringen einer Linie zu folgen.
Gruß
Olaf

damaltor
03.06.2011, 19:32
Per ISP kann man ihn nicht flashen, da bei dem Prozessor die Lockbits gesetzt sind. Der Prozessor ist praktisch kopier- und überschreibgeschützt. Dies lässt sich zwar mit einem 12V-HighVoltage-Programmer aushebeln, aber den hat nicht jeder zuhause. :)

Also nur zu, flash was immer du magst - per Infrarot. Dann brauchst du dir nichtmal einen ISP-Adapter da dranfrickeln, es ist ohnehin sehr wenig Platz.

radbruch
03.06.2011, 19:39
Der Prozessor ist praktisch kopier- und überschreibgeschützt.Ich dachte, mit einem "erase" per ISP kann man den Bootloader entfernen und die Lockbits zurücksetzen. Aber wirklich genaues weiß ich nicht, da sollte man besser das Datenblatt zu Rate ziehen.

damaltor
03.06.2011, 19:43
Oha, und ich war mir recht sicher. Aber jetzt wo du das so sagst... Ja, da sollte man nochmal naschlagen. Ich weiss aber auch nicht, ob beim Asuro-Atmega nicht sogar ISPDSBL gesetzt ist, dann hätte man mit ISP gar keine Chance mehr. Ich muss den mal rauskramen und in den HV-Programmer stecken...

crabtack
06.06.2011, 16:25
Bei mit sind 12 volt und Atmegas, wenn es nicht unvermeidlich ist immer 50 cm Asueinander.
HV-Programmer sind mir zu heikel, notfalls komm einfach ein über isp geflashter nackter atmega 8 drauf.

Ich ahbe noch eine Frage zum Asuro:
Er hat ja keine Stabilisierte Spannung und wird mit Batterien oder akkus betrieben.
Also sinkt die Betriebsspannung mit der Zeit.
Da mir 2.56 Volt zu niedrig sind kann ich für den ADC nicht die interne referenzspannung verwenden.
Wie kann ich am besten den ADC für den Asuro nutzen?

damaltor
06.06.2011, 16:48
Du kannst AREF nutzen.

aber wenn dir 2.56V zu wenig sind, kannst du auch die zu messende Spannung mit einem Spannungsteiler aus 2 Widerständen runterteilen, so dass sie maximal 2.56V beträgt. dann kannst du sie einwandfrei messen.

crabtack
06.06.2011, 17:50
Achso, an AREF liegen exakt 5 Volt an?
also die "generiert" der Atmega selbst?

damaltor
07.06.2011, 09:46
Nein, an AREF kannst du selbst eine Referenzspannung anlegen.

Aber du solltest dringend die 2.56V eigenreferenz Nutzen: Wenn du damit zB maximal 4 Volt Messen willst, kannst du mit zwei widerständen einen Spannungsteiler Bauen, der 4V auf 2.56V runterteilt. So kannst du präzise jede beliebige Spannung messen: Wenn du zB 25V messen willst, kannst du die nterne Spannungsreferenz nehmen, und einen 1:10-Spannungsteiler vorschalten. so kann man beliebige SPannungen am AVR messen, und als Referenz immer die internen 2.56V nehmen.