Hi,
Ich hoffe ich geh mit meinen Fragen keinen auf den Keks. Ich wills auf
den Punkt bringen:
Im Projektbeispiel des Infineon C515C-L wird das Bit "REN" in "SCON"
gesetzt, obwohl in der Anwendung nur gesendet, aber nichts empfangen
wird.
Ich bräuchte einen Hinweis
Ich denk mal es ist deswegen, weil sie sich für die Zukunft absichern
wollen, falls man in dem Projekt doch noch was seriell empfangen will.
Notwendig wärs nicht..
Lens schrieb:> Hi,>> Ich hoffe ich geh mit meinen Fragen keinen auf den Keks.
Nicht wirklich.
Ist dir eigentlich schon aufgefallen, dass ausser dir in diesem Forum
anscheinend kein Mensch den C515 in Kombination mit der Keil-Umgebung in
Kombination mit deiner externen stdio/UART-Lib (wenn ich das richtig in
Erinnerung habe, ist das ja kein Keil Teil) benutzt?
Meine persönliche Meinung: scanf/printf werden auf einem µC hoffnungslos
überschätzt.
Schreib dir selber ein paar UART-Funktionen. Wenn du soweit bist, dass
du einen String ausgeben kannst, hast du schon gewonnen. Der Rest ist
dann nur noch: nach Bedarf den jeweiligen Datentyp zb mit itoa, für
Debug-Zwecke durchaus auch schon mal mit sprintf, bzw. mit eigenen
Funktionen in einen String zu verwandeln und ab da übernimmt dann deine
UART-String-Ausgabe.
direktes scanf/printf vermissen die Wenigsten. Das ist einfach zuviel
Unterbau für zu wenig Funktionalität. Die Formatiermöglichkeiten kann
man manchmal ganz brauchbar einsetzen, wenn man sich den Luxus leisten
will/kann - aber das kann sprintf auch alles. Dazu brauch ich nicht die
Komplexität des stdio-Unterbaus.
Und mal Hand aufs Herz: scanf ist für Programme mit Benutzereingaben
meistens sowieso nicht zu gebrauchen. Für die ersten Schritte im K&R ist
es ok - denn irgendwo muss man anfagen. Aber Programme im
Produktionseinsatz können diese Funktion sowieso nicht vernünftig
nutzen, bzw. da ist dann ein Gespann aus einer Zeileneingabe und sscanf
(wenn man schon eine der Xscanf Funktionen benutzen will) viel
brauchbarer. Grund: Überlag dir mal, wie du das I/O System wieder
standardkonform aus einem Fehler rauskriegst, den sscanf zwar meldet,
dir aber ein I/O System in einem unbekannten Zustand hinterlässt. Du
wirst sehen, das geht gar nicht.
Danke für die Antwort,
Mir ist das auch schon klar geworden. Kaum verwend ich printf(), schon
wächst die Hexfile um mindestens 1KByte. Ganz klar, eigene Funktionen
sind am Besten, weil es dann auf die Anwendung zugeschnittsten ist und
nicht unnötig Ressourcen frisst. Ich verwende Sie auch nur, um andere
Sachen zu testen.. Es ist nur zu Debugging-Zwecken.
gruß
Debugging sollte man nicht auf das Projekt nachtraeglich aufsetzen,
sondern als Teil des Projektes mitplanen. Daher macht es Sinn debug
Meldungen als Teil implementierten Protokolles laufen zu lassen.
Kommunikation scheint ja Teil des Projektes zu sein...
Lens schrieb:> Im Projektbeispiel des Infineon C515C-L wird das Bit "REN" in "SCON"> gesetzt, obwohl in der Anwendung nur gesendet, aber nichts empfangen> wird.
Solange niemand das RI auswertet, ist das REN schnurzpipegal.
Karl Heinz Buchegger schrieb:> Ist dir eigentlich schon aufgefallen, dass ausser dir in diesem Forum> anscheinend kein Mensch den C515 in Kombination mit der Keil-Umgebung in> Kombination mit deiner externen stdio/UART-Lib (wenn ich das richtig in> Erinnerung habe, ist das ja kein Keil Teil) benutzt?
Na ja, ein paar wenige Leute kennen zumindest noch den SAB80C515 oder
SAB50C517, die Vorgänger aus Siemens-Zeiten. Z.B. ich, Lothar nannte
gerade welche, und ich glaube, den Peter Dannegger in Erinnerung zu
haben. Der 80C515 hat viele Ähnlichkeiten mit dem C515C, dieser hat aber
ein paar Modifikationen wie z.B. nur ein 6-Cycle-Core statt 12.
Also, ich verwende dafür den SDCC als Compiler und Geany als IDE. Keil
ist Top, aber Hobby-Leuten wohl erheblich zu teuer, das geht nun mal
nicht.
SDCC bietet aber auch alles, was das Herz begehrt, z.B. eine UART-Lib
und FIFOs. Nur das Registerfile mußte ich dort mal anständig neu
überarbeiten, das machte jemand nicht ganz sorgfältig.
Lens schrieb:> Ich bräuchte einen Hinweis
Laß REN einfach aus, dann funktioniert der Empfang schon nicht. Im User
Manual sollten die Beschreibungen der bits aber auch stehen.