Hallo.
Ich habe eine Platine geschenkt bekommen, USB High Speed Interface 2.6
von Braintechnology.
Dort ist ein 8051 drauf. Ich werde leider aus den PDFs nicht so recht
schlau, da dort keine Codebeispiele genannt sind. Hat da jemand
Beispiel-Code für C, wie man dort Pins konfiguriert?
Zweite Frage: Wie muss ich eine LED an einen IO-Pin anschließen, habe
bisher mit dem STM32 VL-Discovery Board von ST gearbeitet. Bei dem 8051
hab ich gelesen, dass man die LED andersrum dranmacht, also - der LED an
den Pin und + der LED an VCC.
Wenn jemand nen gutes 8051 Tutorial hat, wer das auch ganz gut, hab da
leider bisher noch nicht das Richtige gefunden.
Vielen Dank.
So, habe jedoch immer ca. 0,3 V an dem Pin PB7.
Habe das ganze mal an einem anderen Pin getestet.
PA7, der hat entweder 0,3 oder 3,18V
Muss ich eigentlich noch irgendwie den Port als Output definieren?
"Üblicherweise" haben 8051er keine Push/Pull Ausgänge, sondern können
nur gegen GND schalten, mit internem Pull-Up widerstand.
Kann aber gut sein, dass das bei deinem Derivat anders ist (=>
Datenblatt)
Der AN2131 "EzUSB" z.B. hatte dafür "PORT?CFG"-Register, die ähnlich der
DDR? und TRIS? - Register beim AVR oder PIC die Pins zw. Ein- und
Ausgang umschalten konnten.
Nachtrag zum AN2131, ist schon länger her:
der PORT?CFG schaltet zwischen "Alternate Function" und "GPIO" um,
Ausgang geht über Output-Enable "OE?", Setzen über "OUT?" und Lesen über
"PIN?".
zum Beispiel:
Wofür sind beide fx header? Hab mit Google-Futter reingezogen, aber ich
kenn mich trotzdem nicht mitm 8051 aus :-D
Hab mir das hier mal durchgelesen, wurde aber nicht schlau draus
http://www.danielclemente.com/placa_pi/index.en.html#toc4
Ich will nix damit machen, mich interessiert's nur (falls ich mal was
damit machen muss :-D )
Hier gibts das komplette Entwicklerpaket:
http://www.cypress.com/?docID=5975 mit Keil-Compiler, Code-Beispielen
usw.
Wichtig zu wissen ist, dass der FX2 eher ein USB 2.0 Controller ist, und
der 8051 quasi nebenbei da drauf sitzt. Man kann natürlich den 8051 auch
zu mehr nutzen als für den USB Transfer, im Paket ist aber nur eine 4k
Version des Keil Compilers.
Wichtig ist auch das Technical Reference Manual:
http://www.cypress.com/?docID=5974 da stehen alle Register drin.
Zu finden alles nochmal komplett hier: http://www.cypress.com/?rID=14319
Die LEDs soll man ja mit Pullup-R an VCC und -LED an OutPin
der Pin müsste ja dann 0V liefern, wenn die LED angehen soll, richtig?
meiner liefert ja immer 0,3V?
Ich arbeite mit Keil µVision 4, Compiler C51, glaube ich, also der
Standard bei dem Programm.
Die Pins kann ich ja über die REG51 ansprechen. Nur irgendwie bekomme
ich die LED nicht an :-(
Christian R. schrieb:> Wichtig zu wissen ist, dass der FX2 eher ein USB 2.0 Controller ist, und> der 8051 quasi nebenbei da drauf sitzt. Man kann natürlich den 8051 auch> zu mehr nutzen als für den USB Transfer, im Paket ist aber nur eine 4k> Version des Keil Compilers.
Ja das weiß ich, der FX2 soll von einem PC angesteuert werden und die
LED zum Blinken bringen, bis wieder vom PC eine Meldung kommt, dass sie
aufhört.
Signale vom PC kommen über USB.
OEB=0x80;// PortB Pin 7 auf 1 setzen? 1 entspricht OUTPUT
3
4
...main...
5
while(1)
6
{
7
IOB|=0xC0;// Pin setzen
8
delay();
9
IOB&=0x00;
10
delay();// Pin clear
11
}
So hab ich mir das jetzt aus der TRM rausgesucht.
Leider sind dort keine Codebeispiele und bei den Examples hab ich nix
gefunden, wie man Pins konfiguriert und anspricht.
Danke.
Hat denn keiner eine Idee?
Das aktuelle Problem sieht folgendermaßen aus:
ich habe die LED an den Pin PB7 angeschlossen.
(LED+ an VCC mit Pullup / LED- an PB7)
nur leider hat der Pin im Low-Zustand immer 0,3 V, das müsste doch
eigentlich 0 sein, damit die LED leuchtet oder?
Vielen Dank.
Mh. okay, wenn das 3,3V Ein-/Ausgänge sind, dann weiß ich jetzt auch
warum da nur 3,3 V rauskommen :-D
Hab bisher nur mit dem STM32 gearbeitet.
Also gelesen hatte ich die LED-Konfiguration so, dass die über nen
Widerstand an VCC sollen, war ne englische Beschreibung, hab ich dann
wohl als Pullup ausgelegt.
Wie bekomme ich jetzt die 5V LED zum leuchten? Sie sollte ja bei 3,3V
auch leuchten nur etwas schwacher oder?
Christian R. schrieb:> 0,3V bei Low ist schon OK. Ganz 0V wird es nicht. Was heißt Pull-Up? Da> muss ein Vorwiderstand dran. Und denk dran, das sind 3,3V I/Os.
Meinst du den Vorwiderstand der LED? Das ist eine mit integriertem
Vorwiderstand...
Da wird nicht viel leuchten...du brauchst eine für 3,3V oder eine
normale und einen Vorwiderstand. Oder du klemmst die LED an 5V, ich hab
eben im Datenblatt nochmal geschaut, der hat 5V tolerante I/Os. Dürfte
nix kaputt gehen.
So, ich habe mir jetzt mal eine LED ohne integriertem Vorwiderstand
besorgt.
Anschluss: Kathode an Pin PB7, Anode über R an VCC (5V)
R = (5V-1,6V)/10mA
R=340 Ohm
Haut das soweit hin?
Jetzt mal zum C-Code für die Geschichte LED-Blinken
1
#include<REG51.h>
2
3
sbitPB7=0x97;
4
5
voiddelay(void)
6
{
7
...
8
}
9
10
intmain(void)
11
{
12
while(1)
13
{
14
PB7=0;
15
delay();
16
PB7=1;
17
delay();
18
}
19
}
Was muss ich noch machen?
PORTBCFG?
OEB?
Vielen Dank.
Okay, also LED ist angeschlossen, und leuchtet auch, wenn der jeweilige
Pin auf Low ist. :-)
Nur irgendwie bekomme ich die Pins noch nicht geschaltet.
Kann mit da irgendjemand weiterhelfen?
Jetzt ja, aber das ändert nix.
Ich glaube der Fehler liegt in der Konfiguration.
Wie kann ich denn bei Mikrovision 4 nen 8051 flashen? irgendwie hat der
kein Flashtool mit installiert.
Vielen Dank