NDS (Lite) I/O Pins nutzen (GBA-Port/Slot-2)

Gast #2025499
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
Gast #2025618
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.
Gast #2025815
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.
Gast #2025829
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
1
*(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)
Gast #2026624
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
1
#include <PA9.h>
2
#include <stdio.h>
3
#include <nds.h>
4

5
int main()
6
{
7
// Infinite loop to keep the program running
8
while (1)
9
{
10
  //*(volatile unsigned short *)0x08000000 = 0x0000 ;
11
  //*SRAM = (uint8)0xff;
12
  *(volatile unsigned short *)0x0AFFFFFF = 0xFFFF ;
13
  swiDelay(610000);
14
  //*SRAM = (uint8)0x00;
15
  *(volatile unsigned short *)0x0AFFFFFF = 0x0000 ;
16
  swiDelay(610000);
17
}
18
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.