Netzwerkgeschwindigkeit mit PIC18F97J60
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  Schnittstellen (Allgemein)  |  Netzwerkgeschwindigkeit mit PIC18F97J60 « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Netzwerkgeschwindigkeit mit PIC18F97J60  (Gelesen 1405 mal)
 
Mr. B A
Full Member
***
Offline Offline

Beiträge: 150



Profil anzeigen
« am: September 04, 2009, 08:38:57 »

Hallo zusammen,
allgemein wollte ich nur mal fragen, welche Geschwindigkeiten ihr mit dem ENC28J60 oder PIC18F97J60 schafft. Derzeit leigt meine bei 10 KB/s was mir ein bisschen langsam erscheint, da die Bausteine 10 Mbit/s schaffen sollten.
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #1 am: September 04, 2009, 12:54:07 »

Hallo Dirk,

die Performance des aktuellen TCPIP Stack (V5.1) ist in der Hilfe dokumentiert.
Ich habe bisher den ENC28J60 mit einem PIC32 getestet, und der scheint recht flott zu sein. Ping lag immer unter 1ms, reine Datenübertragung konnte ich bisher noch nicht testen.

Mit dem 18F97J60 sind 20kb/s angegeben, mit dem PIC32 + ENC 110kb/s. Deine 10kB/s sind zwar langsam, aber noch im Rahmen denke ich. Wie du siehst, ist die Abarbeitungsgeschwindigkeit des Stacks  für die Gesamtperformance ausschlaggebend. Hast du den Stack benutzt oder schreibst du noch in Assembler?

Gruß
Stefan
Gespeichert

Mr. B A
Full Member
***
Offline Offline

Beiträge: 150



Profil anzeigen
« Antworten #2 am: September 04, 2009, 14:10:05 »

Die 10 kb/s hatte ich auch mit meinem ENC28J60 geschafft. Ich dachte, ich könnte es beschleunigen, wenn ich die Daten nicht erst per SPI zum ENC schicken muss.
D.h. also für Internetradio benötige ich einen PIC32 mit ENC, damit ich Musik hören kann.

Die Software ist immer noch in Assembler. Bin grad dabei den VS1011 zu integrieren.
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #3 am: September 04, 2009, 16:08:33 »

Hi,
Zitat
D.h. also für Internetradio benötige ich einen PIC32 mit ENC, damit ich Musik hören kann.
nein, das nicht. Es gibt ein Demoboard, das arbeitet mit dem 18F67J60:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en536047


Mal die Assembler Routinen die ich benutzt habe (habe nur CS benutzt, ohne DCS):
Code:
;******************************************************************************

;******************************************************************************
; vs1011.init
;******************************************************************************
vs1011.init
bcf XCS
movlw 0x02 ; write
call vs1011.send
movlw 0x00
call vs1011.send ; register
movlw 0x0C ; E: LSB first, C:MSB first, bytes are send in default order
call vs1011.send
movlw 0x20
call vs1011.send ; New Mode + Shared Mode
bsf XCS
call vs1011.ready
bcf XCS
movlw 0x02 ; Clock PLL an
call vs1011.send
movlw 0x03
call vs1011.send
movlw 0x98 ;
call vs1011.send
movlw 0x00
call vs1011.send
bsf XCS

movlw D'1'
call wait

return

call vs1011.ready
bcf XCS
movlw 0x02 ; GPIO auf Ausgang
call vs1011.send
movlw 0x07 ; Base Address für RAM Read/write
call vs1011.send
movlw 0xC0 ;
call vs1011.send
movlw 0x17 ; Direction Reg
call vs1011.send
bsf XCS
call vs1011.ready
bcf XCS
movlw 0x02 ;
call vs1011.send
movlw 0x06 ; RAM RW
call vs1011.send
movlw 0xFF ;
call vs1011.send
movlw 0xFF ; Ausgang
call vs1011.send
bsf XCS

movlw D'1'
call wait

call vs1011.ready
bcf XCS
movlw 0x02 ; Hi Pegel
call vs1011.send
movlw 0x07 ; Base Address für RAM Read/write
call vs1011.send
movlw 0xC0 ;
call vs1011.send
movlw 0x19 ; OutData Reg
call vs1011.send
bsf XCS
call vs1011.ready
bcf XCS
movlw 0x02 ;
call vs1011.send
movlw 0x06 ; RAM RW
call vs1011.send
movlw 0xFF ;
call vs1011.send
movlw 0xFF ; Ausgang
call vs1011.send
bsf XCS

return
;******************************************************************************
;vs1011.send ;Daten senden
;******************************************************************************
;vs1011.send
; movwf mp3.out
; movlw D'8'
; movwf mp3.counter
; vs1011.send.loop0
; bcf SDO ; vorher setzen
; btfsc mp3.out, 7
; bsf SDO
; nop
; bsf SCLK
; rlcf mp3.out, f
; bcf SCLK
; decfsz mp3.counter, f
; goto vs1011.send.loop0
; return

vs1011.send
movwf mp3.out
bcf SCLK
vs1011.send.loop0
bcf SDO ; vorher setzen
btfsc mp3.out, 7
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 6
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 5
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 4
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 3
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 2
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 1
bsf SDO
btg SCLK
nop

btg SCLK
bcf SDO
btfsc mp3.out, 0
bsf SDO
btg SCLK

return

;******************************************************************************
;vs1011.reset
;******************************************************************************
vs1011.reset
bcf XCS
movlw 0x02 ; New Mode + Shared Mode
call vs1011.send
movlw 0x00
call vs1011.send
movlw 0x0C ; E: LSB first, C:MSB first, bytes are send in default order
call vs1011.send
movlw 0x24 ; reset!!
call vs1011.send
bsf XCS
call vs1011.ready
bcf XCS
return

;******************************************************************************
;vs1011.read ;
;Pegelwandler = > signal invertiert
;******************************************************************************
vs1011.read
bcf SCLK
movlw D'8'
movwf mp3.counter
nop
nop
vs1011.read.loop0
bsf SCLK
nop
nop
bsf mp3.in, 0 ;
btfsc PORTE, 3 ; einlesen
bcf mp3.in, 0 ;
rlncf mp3.in, f ; und nach links verschieben
bcf SCLK
nop
nop
decfsz mp3.counter, f
goto vs1011.read.loop0
rrncf mp3.in, f ; da beim lesen 1 zu weit geschoben wird
comf mp3.in, w
return

;******************************************************************************
; vs1011.ready
;******************************************************************************
vs1011.ready
btfss PORTB, 7
goto vs1011.ready
return

Habe mal den Code noch als Datei angehängt, zusätzlich das Plugin für den SpectrumAnalyser, falls du den nutzen möchtest. Dieser funktioniert nur mit dem VS1011E. Die Schnittstelle zum VS1011 lieft über Software SPI, ein Hardwaremodul wäre unter Umständen schneller (wenn du die Zeit während der Transfers sinnvoll nutzen kannst).
Mich wundert es, dass du auf Assemblerbasis nur 10k/s erreichst, ich hätte erwartet, dass es damit schneller geht als mit dem TCPIP Stack. Vielleicht solltest du den Empfangsbuffer im 97J60 für die TCPIP Packete vergrößern. Ausserdem würde ich davon ausgehen, dass du auf jeden Fall noch externes RAM für den Stream brauchst. Aber lies dir dazu am besten mal die AppNote von MC durch.

Gruß
Stefan

* vs1011.asm (16.16 KB - runtergeladen 85 Mal.)
* spectrumVS1011E.asm (22.52 KB - runtergeladen 76 Mal.)
« Letzte Änderung: September 04, 2009, 16:13:29 von Stampede » Gespeichert

Mr. B A
Full Member
***
Offline Offline

Beiträge: 150



Profil anzeigen
« Antworten #4 am: September 04, 2009, 16:37:48 »

Hey Danke,
jetzt bekomme ich dank der Dateien den Testton aus dem VS1011 raus.
Als nächstes ist geplant, dass die Lieder von der SD-Karte, auf der auch die HTML-Seiten liegen abgespielt werden.
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.038 Sekunden mit 18 Zugriffen.
 
Top! Top!