Hallo liebe Leute !
Ich habe folgendes Problem:
Ich habe ein µC Programm geschrieben welches Daten über die serielle
Schnittstelle empfangen soll. Das ganze ist eigentlich ganz einfach.
Über ein Java Programm schicke ich einen 8 stelligen, binären Wert.
Nun hängt an meinem µC an den Ausgangspings eine Platine mit 8Leds.
Diese 8 Leds sind parallel geschalten, so dass ich jede einzeln
ansteuern kann.
Nun ist mein Problem, dass das mit dem empfangen leider nicht so
funktioniert wie ich mir das vorstelle. D.h ich komme zwar in die
Schleife die empfangen soll aber weiter geht es nicht. Wie ich
festgestellt habe liegt es daran, dass das Flag ri0 welches anspringen
sollte wenn Daten kommen sich nicht ändert. Könnt ihr mir vielleicht
sagen was an dem Programm falsch ist ?
1
$include (c8051f330.inc) ; Include register definition file.
Tja, das liegt dann wohl daran dass du deine serielle Schnittstelle des
Controllers nicht konfiguriert hast. Sie kann ja nicht wissen, mit
welcher Geschwindigkeit du arbeiten willst.
Ralf
PS: Welchen Pegelwandler hast du genommen? Aufpassen bei Rx des
Controllers mit der Porteinstellung, auf keinen Fall als Ausgang
schalten!
Korrektur:
Du hast sie initialisiert (habs zu spät gesehen, sorry). Hm... Hast du
die Baudrate richtig berechnet? Ich empfehle dafür das ConfigTool von
SiLabs zu verwenden (gibts auf der HP frei zum Download).
P1MDIN = 0x00 --> Warum auf Analog Input gesetzt? Laut Datenblatt musst
du es auf 0xFF setzen, wenn es kein Analog Input sein soll.
P1MDOUT: Hängen deine LEDs an GND oder VCC? Wenn sie an VCC hängen, dann
den Port als OpenDrain schalten.
Deine Crossbar-Configuration lässt die serielle Schnittstelle gar nicht
an die PortPins!!! Deswegen ändert sich dein RI-Flag auch nicht!!!
Wie bereits empfohlen, die Crossbar-Config nicht von Hand machen,
sondern mit dem Silabs Tool. Und den Output des Tools dann prüfen!!!
Ralf
Das mit der Analog Einstellung war nur ein Fehler, war beim ersten
Versuch auch auf Digital gestellt, hat trotzdem nicht funktioniert.
Jede Led wird eigens über einen Pin versorgt und ist an Masse
angeschlossen.
Die Schaltung hab ich im Anhang drin.
Ohne Vorwiderstände wird das aber nix. Das kokelt bloß, wenns dumm
läuft.
Hast du die Konfigurationssoftware von Silabs mal verwendet? Wie gesagt,
wenn du die serielle nicht nach aussen lässt, wirds nicht gehen...
Ralf
Vorwiderstände sind vorhanden und auch nach dem Strom dimensioniert, so
dass ich nicht zuviel ausm µC ziehe.
Ich werde mich jetzt auf die Suche nach dem Config Tool machen und dann
meine Erlebnisse schildern.
Vielen Dank Ralf :D
Ja, tu das. Hier der Link zum ConfigTool:
http://www.silabs.com/public/documents/software_doc/othersoftware/Microcontrollers/en/ConfigAndConfig2Install.exe
Mit dem Tool kannst du sämtliche Configurationen festlegen (Ports,
UART(s), Timer, usw.)
Allerdings empfehle ich, den generierten Output auch zu prüfen, es kam
schon vor, dass der Output falsch war (Fehler macht jeder mal).
Also einfach die generierten Einstellungen mit dem Datenblatt
vergleichen.
Ralf
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.