PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme beim programmieren von Atmega128L über FT245BM



iNGY!
31.12.2007, 11:37
Hallo Leute!
Ich bin Anfänger im Bereich Mikrocontroller und habe einige Startproblemchen. Da ich letztenendes in C programmieren möchte habe ich dieses Topic hierher geschrieben, da kein anderes Forum mir passend erschien. Möchte den Mod bitten ggf. das Topic zu verschieben:)

Nun aber zu meinen Fragen:
Ich habe mir ein MegaUSB Controllerboard besorgt welches mit einem Atmega128L und einem FT245BM USB-Port ausgestattet ist. Nun möchte ich z.B. eben ein LCD darüber ansteuern. Das alles soll wie schon erwähnt über C geschehen. Folgende Infos wurden mir Herstellerseitig mit auf den Weg gegeben:



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"

Wichtig zu erwähnen wäre vielleicht, dass ich XP verwende.
Ich habe mir das AVR Studio heruntergeladen um AVRProg verwenden zu können. Schließe ich das Board über USB nun an(es kommt das XP typische "Hardware gefunden..bla", "Neue Hardware installiert und betriebsbereit") und starte AVRProg, so erscheint "No supported Board found! AVRProg Version 1.40".
Die sich anschließende Frage wäre nun: Was mache ich falsch:)

Wäre super, wenn mir jemand helfen könnte!

Danke schon mal im Vorraus!

iNGY!
02.01.2008, 13:02
Kann mir wirklich niemand helfen? Sollte ich hier im falschen Forum gelandet sein, so sagt mir das bitte. Komm sonst einfach nicht weiter:(

ogni42
02.01.2008, 15:47
Du kannst nur per Bootloader programme auf die Karte laden. Dazu muss der jumper entsprechend gesetzt sein. Wie man mit dem Bootloader im AVR Studio umgeht steht in der Dokumentation des AVRButterfly beschrieben, die Du bei Atmel kostenlos runterladen kannst.