Ich habe Ihnen ein MegaUSB schicken lassen mit einem Display und einem
AVR109 kompatiblen bootloader.
Kurze Info:
* Am MegaUSB sind zwei Jumper.
* Einer ist am von vorne gesehen links, aber an der Rückseite. An der 2x7-poligen Stiftleiste verbindet er En-P* (enable periferals) mit GND.
Damit wird das Display und der
USB am externen Speicherbus des MegaUSB freigeschaltet.
* der andere ist seitlich am Programmieranschluss. Wir dieser gesteckt, und das MegaUSB zurückgesetzt (powerup, Reset) so startet der Bootloader.
(Wir empfehlen einen externen "Reset-Taster", der Rst* mit GND verbindet und einen "Bootloder-Taster", der SCK über 470 Ohm Serienwiderstand
mit GND verbindet. Der Serienwiderstand soll den SCK pin = PortB.1 gegen Zerstörung schützen, falls mal PortB auf "Ausgang" programmiert wird.)
* Im Normalbetrieb bleibt En-P* immer GND, und SCK bleibt offen.
* MegaUSB Setup:
* PortA: bidirektionaler daten- und adressbus
* PortB.0: Bootloader start. wird nach dem Resret ein "=" erkannt, so startet de Bootloader.
* PortB.4: Eingang; TXE-Signal vom
USB Baustein. "0" bedeutet:
USB kann keine Daten (mehr) an den PC senden. FIFO voll.
* PortB.5: Eingang; RXF signal vom
USB Baustein. "0" bedeutet: keine daten vom PC empfangen. FIFO ist leer.
* PortC: Ausgang für Adressen
* PortG: 0,1 und 2 sind Ausgänge. WR*, RD* und ALE für externen Speicherzugriff
* externes Speicherinterface enablen
* 2 Waitstates für das LCD notwendig. Der Bootloader benutzt zusätzlich einen Taktteiler von 2:1 für besonders langsame LCDs.
* Bootloader startet an word adresse: 0xFE00 und belegt lediglich die oberen 512 adressen
Ihre Applikation startet an adresse 0x0000 mit den erforderlichen Reset und Interrupt vektoren.
MegaUSB hat keine Beschränkungen auf Interrupts. Der Bootloader hat keinen Einfluss auf Ihre Applikation.
--> Trotzdem an das Setup denken.
Das Display sollte HD447800 kompatibel sein. Bitte lesen Sie das Datenblatt Ihres Displays.
Display und
AVR laufen mit 5v über den
USB versorgt.
Kontrast ist auf der Rückseite einstellbar.
Displayadresse zum lesen von daten: 0x7F00
Displayadresse zum schreiben von daten: 0x7E00
Displayadresse zum lesen von instructions: 0x7D00
Displayadresse zum schreiben von instructions: 0x7C00
Lesen/schreiben vom USB: 0x7900
Falls mehr Periferie am Speicherbus angeschlosssen wird: Es werden lediglich die Adressbits A8-A10 ausdecodiert. Um doppelbelegungen zu vermeiden
muss ein externer Adressdecoder die En-P* Leitung bedienen.
* Laden Sie sich von
www.ftdichip.com die passenden
USB Treiber auf Ihr System. (Ihr Betriebssystem, FT245BM, VCP-Treiber)
* Sie können die Treiber ohne oder auch mit (an USB) angestecktem MegaUSB laden.
* spätestens jetzt MegaUSB mit
USB verbinden.
* Der PC erkennt das neue USB-Gerät verhandelt Protokoll und Geräteeigenschaften, und schaltet dann erst das MegaUSB ein.
(Das läuft streng nach USB-Spezifikation ab)
* Im Display des MegaUSB sollte Text erscheinen.
(Meine Beispielapplikation schreibt lediglich "Applikation now" in das Display. Das wird bei Ihrem Programm dann nicht mehr so sein.
* Wird die Applikation gelöscht (0x0000 = 0xFFFF) so startet die Applikation nicht. Im Display erscheint "App. not valid"
* Wird der Bootloader über die SCK Leitung gestartet, so erscheint "Start by SCK=0"
* Wird der Bootloader über die Applikation gestartet, so erscheint "Start by Appl."
* Für debugzwecke schreibt der Bootloader das zuletzt empfangene Zeichen zwischen die eckigen Klammern "Received: [ ]"
Um mit dem Bootloader kommunizieren zu können sollten Sie das programm "AVRProg" aus dem Internet verwenden.
Anbei die files des bootloaders und der beispielapplikation.
Vielleicht können Sie schon aus den Assemblerfiles ein wenig "kopieren"
Lesezeichen