COBE 0.1 ALPHA

D:/COBE-Packet/cobe/system/dma.h-Dateireferenz

Diese Datei enthält den Prototypen für die DMA-Übertragung. Mehr ...

#include <stdint.h>

gehe zum Quellcode dieser Datei

Funktionen

void set_dma_transfer (uint8_t, uint16_t, void *, bool)
 Diese Funktion bereitet die Daten-Übertragung über den DMA vor.

Ausführliche Beschreibung

Diese Datei enthält den Prototypen für die DMA-Übertragung.

Definiert in Datei dma.h.


Dokumentation der Funktionen

void set_dma_transfer ( uint8_t  channel,
uint16_t  size,
void *  buffer,
bool  write_on 
)

Diese Funktion bereitet die Daten-Übertragung über den DMA vor.

Dabei wird zunächst der angegebene Channel auf dem DMA maskiert, das heißt, der maskierte Channel wird genutzt, wobei es sowohl Master- als auch Slave-Channel gibt. Die Anzahl der zu übertragenden Größe muss um eins dekrementiert werden, um nicht bereits das Byte des nächsten Speicherbereiches mit zu schreiben / lesen, dies wü umgehend zu Fehlern führen. Da die internen Zwischenregister des DMA nur 8-Bit breit sind, wird das Flip-Flop Verfahren genutzt, bei dem zunä die niederwertigeren 8-Bit übertragen werden und danach die höherwertigen 8-Bit. Dies muss beim DMA sowohl bei der size, als auch bei dem offset verwendet werden. Zwischen jedem Flip-Flop-Verfahren, muss das Flip-Flop-Flag zurückgesetzt werden, um dieses Verfahren wieder anwenden zu können, da ansonsten vom DMA immer nur die höherwertigen Bits erwartet werden würde. Aus der Angabe der Adresse des Datei-Puffer im RAM aus dem gelesen oder in dem geschrieben werden wird, sind die höherwertigen 8-Bit als page zu benutzen, die restlichen niederwertigen 16-Bit stellen das offset dar. Zum Ende der Funktion wird das jeweilige Channel wieder demaskiert. Diese komplette Funktion wird sowohl für das Lesen als auch für das Schreiben auf einem Gerät verwendet, entschieden wird dies durch ein einfaches Flag im Channel-Register, beim Aufruf stellt ein true im vierten Parameter ein Schreibvorgang vom RAM zum Gerät dar, ein false eine Lesevorgang vom Gerät zum RAM.

Parameter:
channelDieser Parameter gibt die Nummer des Channels an, an dem das Gerät verdrahtet ist
sizeDieser Parameter enthält die Größe der zu übertragenden Menge
bufferDieser Parameter ist enthält die Adresse des zu übertragenden oder zu lesenden Datenbereiches
write_onDieser Parameter gibt an, ob vom RAM zum Gerät gelesen oder geschrieben wird (true schreiben auf das Gerät, false umgekehrt)

Definiert in Zeile 29 der Datei dma.c.

 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Makrodefinitionen