mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2.Frage zu Ethernet-System von LPC2468


Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da der LPC2468 ein eingenen DMA, SRAM-Buffer und AHB Bus
besitzt, wird der Prozessor minimal belastet, was ich nicht verstehe
ist, der Prozessor wird doch jedesmal mit Interrupt benachrichtigt, wenn
es Daten Vorliegen oder nicht, das ist doch eine Belastung oder?
Außerdem ist im Datenblatt zu finden, dass die Benachrichtigung durch
Interrupt beim Senden oder Empfangen der Ethernet-Daten Optional ist,
gibt es noch eine andere Art der Benachrichtigung?

Andere Frage :Bei der Umwandlung Seriel/Ethernet, welche Faktoren müssen
berücksichtigt werden, damit sowohl Ethernet-Daten als auch
Serielle-Daten nicht verloren gehen, und welche Einschränkungen gibt es
dabei(Interupt-latenz, Baudrate der serielle Schnittstelle..)?

Vielen Dank!

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wird der uC von DMA-Controller benachrichtigt das es Ethernet-Daten 
gibt die bearbeitet werden müssen, und umgekehrt: wie sendet der uC 
seine Daten über DMA?

Diese Beide Fragen machen mich verrückt, vor allem weil ich in einem 
Ethernet-Treiber, der DMA benutzt, nicht finde, wo ein Interrupt 
installiert ist, und weil im Datenblatt steht das ein Interrupt optional 
ist.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DMA = der Datentransfer geschieht ohne Zuhilfenahme des Prozessors der 
kann derweil was anders machen (Tetris spielen).
Optional = Du kannst dich per interupt benachrichtigen lassen, ODER du 
kannst einfach regelmäßg nachschauen ob was nuees da ist/gesendet werden 
kann.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, nehmen wir mal an der Prozessor bearbeitet gerade eine ISR von einer 
seriellen Schnittstelle, und in dem Moment wird ein Paket in Ethernet 
Buffer empfangen, das heisst man muss gewährleisten, dass der Prozessor 
genug Zeit hat um nachzuschuen ob Ethernet-Pakete vorliegen und dabei 
darf keine serielle Daten verloren gehen, ist das richtig?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag doch einfach mal was dir konkret sorgen macht.
Von der Prozessorseite her dauert das Empfangen von Seriellen Daten und 
Ethernet so laaaaaaaaange das er das auch nacheinader machen kann ohne 
das was passiert.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mir sorger macht ist, dass ich nicht vorhersehen kann wielange der 
Prozessor braucht bis er eine ISR bearbeitet hat, als Beispiel diese 
ISR:
void CAN1_ISR_Rx(void) 
{
  static unsigned int *pDest;
  
  // initialize destination pointer
  pDest = (unsigned int *) &(mRxCAN[us_mRxIN]);
  
  *(pDest++) = CAN1RFS;  // Frame
  *(pDest++) = CAN1RID; // ID    
  *(pDest++) = CAN1RDA; // Data A
  *(pDest++) = CAN1RDB; // Data B
  
  us_mRxIN++;
  if (us_mRxIN >= MAX_QUEUE )
  {
    us_mRxIN = 0;
  }
  
  CAN1CMR = RELEASE_RECV_BUF; 
}


void CAN_Handler(void) 
{    
 
  CAN1_ISR_Rx();
  
  VICVectAddr = 0;    /* Acknowledge Interrupt */
  return;
}
Wie kann ich jetzt berchnen wie lange er dafür braucht, z.B bei 500KBaud 
wenn der CAN-Controller mit 18Mhz getaktet wird.

Danke

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann mir bitte jemand dabei helfen,  wie kann man berechnen wielange ein 
ARM7TDMI braucht um einen Programmsegment auszuführen.Gibt es vielleicht 
irgendwo einen Tutorial dazu?

Vielen Dank

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joe wrote:

> kann mir bitte jemand dabei helfen,  wie kann man berechnen wielange ein
> ARM7TDMI braucht um einen Programmsegment auszuführen.

Der mit grossem Abstand einfachste Weg: nachmessen. Wenn's ein LPC2000 
ist, dann hat der netterweise 32bit Timer mit voller Taktrate und mit 
etwas Glück ist mindestens einer davon noch frei (z.B. der PWM-Timer).

Exakt berechnen (lies: nachzählen) wird "etwas" aufwendig, weil ein ARM7 
zwar eine recht einfache Pipeline hat, aber dann doch noch ein paar 
Feinheiten wie Wartezyklen bei nichtsequentiellem Zugriff, diverse 
Puffer, Bussysteme unterschiedlicher Geschwindigkeit usw.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will das nur ungefähr wissen, mit dem Timer ist das eine nette Idee, 
aber sagen wir mal ich starte den Timer, wenn ich im ISR eintrette und 
stoppe ihn, wenn ich fertig damit bin, dieses hin und her zum und von 
Timer wird auch dazu berechnet oder nicht?

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.