mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NDS (Lite) I/O Pins nutzen (GBA-Port/Slot-2)


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mir PAlib und devkitPro installiert und auch schon mein erstes 
Hello World fertig. Ich würde aber gerne ein paar I/O Pins nutzen, um so 
externe Hardware zu steuern. Der GBA Port ist ja eigentlich ein 
Datenbus, kann man da irgendwie was machen? Ich finde leider keinen 
Ansatz, wie ich den mit o.g. Tools ansteuern kann.
http://nocash.emubase.de/gbatek.htm#auxgbagamepakbus
http://www.palib.info/wiki_ger/doku.php?id=homepage

Autor: someone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ein Datenbus. Einfach auf den entsprechende Speicheradresse 
lesend oder schreibend zugreifen. Tipp: Klopp PALib in die Tonne. Das 
ist nett um sich was flottes zusammenzuklauben aber bei allem anderen 
kommt es sich mit Bibliotheken zu schnell in die Quere. installiert u.A. 
auch gerne mal eine alte Version der Toolchain über eine bestehende 
Neuere...

Auf No$Cash findest du das komplette Timing für den Slot.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
someone schrieb:
> Es ist ein Datenbus. Einfach auf den entsprechende Speicheradresse
> lesend oder schreibend zugreifen.

So weit dachte ich es mir auch. Die Adressen sind auch klar. Aber ich 
finde nicht, wie ich die beschreibe.
08000000h  GBA Slot ROM (max. 32MB)
0A000000h  GBA Slot RAM (max. 64KB)

someone schrieb:
> Tipp: Klopp PALib in die Tonne.

Gibt's einen Alternativvorschlag?

Danke.

Autor: someone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo. Die Toolchain direkt. Such mal nach DevKitPro, da ist die Toolchain 
für den ARM mit dabei und dort findest du auch die libs und header für 
den NDS verlinkt.

Naja, wenn du z.B. einfach in C die Addresse direkt beschreibst aka
*(volatile unsigned short *)0x08000000 = 0x1234 ;

Wirst du halt direkt den Datanbus ansprechen. Der wird zuerst die 
Adresse 0 und dann die Daten (0x1234) mit jeweils passenden 
Steuersignalen auflegen. Die Adresse sicherst und dekodierst du, die 
Daten greifst du anschliessend ab und speicherst bzw verwendest du 
direkt.

(Vorsicht: Die ROM Adresse ist keine Byte- sondern Wortadresse)

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider habe ich noch keinen Erfolg.
Mit dem Scope kann ich leider keinerlei Signaländerungen am Port messen, 
wenn ich das folgende Programm laufen lasse. Auch nicht an der /WR 
Leitung
#include <PA9.h>
#include <stdio.h>
#include <nds.h>

int main()
{
// Infinite loop to keep the program running
while (1)
{
  //*(volatile unsigned short *)0x08000000 = 0x0000 ;
  //*SRAM = (uint8)0xff;
  *(volatile unsigned short *)0x0AFFFFFF = 0xFFFF ;
  swiDelay(610000);
  //*SRAM = (uint8)0x00;
  *(volatile unsigned short *)0x0AFFFFFF = 0x0000 ;
  swiDelay(610000);
}
}

Autor: someone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal
  sysSetCartOwner(BUS_OWNER_ARM9); 

Schau dir mal die Sources zu libnds/rumble an. Da hängen einige Arten 
direkt an den Pins.

http://devkitpro.svn.sourceforge.net/viewvc/devkit...

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
someone schrieb:
> Versuch mal  sysSetCartOwner(BUS_OWNER_ARM9);

Danke, das hilft. Auch wenn ich nirgends eine aussagekräftige Doku dazu 
finde :-(
Mal sehen, wie ich jetzt weiterkomme. Ich werde dann berichten.

Autor: someone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Doku findest du bei EXMEMCNT.

Sind halt alles reverse-engeneered Infos von Hobbyisten. Da ist viel 
unvollständig.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.