Schönen Guten Morgen! Ich habe da so einen schönen Controller, AT89C51RE2, aber die Programmierung klappt irgendwie nicht so recht. Ich finde für den Keil- Compiler keinen passende Include-File, verwende im Moment den AT89C51RC2.H, nicht .... RE2.H Ist das ein grosser Unterschied? Und warum meckert der Compiler beim Compilieren mit einem Include (für den xxxxRE2.H) aus dem Internet die folgenden Zeilen (und viele weitere!) an: Sbit (CY , 0xD0 , 7); --->error c141, Syntax-Error near '^', expected ';' Sieht genauso aus, wie bei dem originalen xxxxxRC2.H.... Habe es zunächst mit dem Wickenhäuser versucht, aber da sind die Probleme ganz ähnlich. Na ja, wenn dazu jemandem was einfallen sollte und er vielleicht sogar einen funktionierenden Include-File hätte, wär das schon was! Natürlich wäre ich auch für andere Sourcecodes dankbar; man möchte das Rad ja nicht immer wieder neu erfinden.... Gibt es da ein paar Tipps? Achso, bevor ich es vergesse, zum Downloaden benutze ich "Flip". Mit einer bösartigen Konstanz bricht der beim ersten Versuch immer mit Timeout ab, danach geht es.... was mache ich da wohl verkehrt? Schönen Dank im voraus!
Die Zeile sieht o.k. aus. Steht auch so in den Includes auf der Keil Webseite. Welchen Keil C51 benutzt Du denn (Version, Jahr)? Peter
Der Fehler liegt wahrscheinlich weiter vorn im Quelltext. ZB. ; oder } vergessen. Keil nimmt das mit der Angabe der betreffenden Zeile nicht so genau.
Das ist die Version 3.6. Na ja, ich verwende jetzt im Moment die Include- Datei *RC2.H. Weiss noch nicht, was dadurch nicht funktioniert; ich will aber auch noch mal alles vergleichen, um zu sehen, an was sich der Compiler da stört. Schönen Dank erst mal
Ja, ich werde weiter suchen..... manchmal ist man ja einfach betriebsblind!
Sicher 3.x? Dürfte aus den frühen 90zigern sein. Damals sahen die sbit-Defs bei Keil noch anders aus.
na, man kann sich schon irgendwie behelfen, aber nichtsdestotrotz scheint es für den keil compiler keinen include für den at89c51re2 zu geben? oder kann den mal jemand einstellen?
Hallo Martin, ganz genauso geht es mir auch mit dem AT89C51RE2. Ich habe dank Peter (siehe unten) das Header-File von der Keil Seite runtergeladen und ausprobiert. Es passt nicht so 100%, mußte viele Einträge nachträglich noch einfügen und abändern bis es dann endlich lief. Ich benutze eine noch ältere Version des Keil-Compilers, nämlich 3V23 und den Flip 3.4.2 !! Beim aller ersten Versuch mein Program auf den Chip zu laden hat er ständig mit Timeout abgebrochen. Dann endlich hat es ein einziges mal funktioniert. Das Programm ist sogar lauffähig auf dem Chip angekommen. Läuft aber super gemächlich, da habe ich wohl vergessen das Vorteiler-Register korrekt zu beschreiben. Aber danach ist mir kein weiterer Download mehr geglückt. Immer wieder der Abbruch mit Timeout. Bin total verzweifelt. In einem hast du sehr Recht, es gibt sehr wenig Info im Netz zu diesem Controller. Ich verstehe auch nicht, warum die ATMEL-Entwickler die Watchdog nicht abschaltbar gelassen haben !?!? Einmal enabled läuft er bis in alle Ewigkeit bis zu einem Reset. Es gibt doch immer Passagen im Programm die wesentlich langsamer ablaufen (müssen). Verstehe das nicht so recht. Christian
Christian M. schrieb: > Beim aller ersten Versuch mein Program auf den > Chip zu laden hat er ständig mit Timeout abgebrochen. Die Baudratenerkennung funktioniert nur bei Baudratenquarzen gut, z.B. 11,0592MHz. Bei anderen Quarzen muß man deutlich runter gehen, z.B. auf 9600Baud. Christian M. schrieb: > Einmal enabled läuft er bis in alle > Ewigkeit bis zu einem Reset. Es gibt doch immer Passagen im Programm > die wesentlich langsamer ablaufen (müssen). Wenn Du ihn für langsame Sachen disablen willst, kannst Du ihn ruhig gleich aus lassen. Du solltest Dir mal genau überlegen, wozu Du ihn verwendest. Einfach nur so enablen, bringt keine höhere Zuverlässigkeit. Langsamere Sachen kann man mit Hilfe eines Timerinterrupts überwachen. Peter
Christian M. schrieb: > ch benutze eine noch ältere Version des Keil-Compilers, nämlich 3V23 > und den Flip 3.4.2 !! Beim aller ersten Versuch mein Program auf den > Chip zu laden hat er ständig mit Timeout abgebrochen. Dann endlich > hat es ein einziges mal funktioniert. Das Programm ist sogar lauffähig > auf dem Chip angekommen. Läuft aber super gemächlich, da habe ich > wohl vergessen das Vorteiler-Register korrekt zu beschreiben. Aber > danach ist mir kein weiterer Download mehr geglückt. Immer wieder der > Abbruch mit Timeout. Bin total verzweifelt. Die alten Keil-Version von C51 (V3 dürfte Anfang der 90er sein) haben Syntax-Abweichungen in den Headerdefinitionen in Bezug auf neuere Versionen. (Wobei die alten Version auch heute noch gute Code-Effizienz haben.) Der Timeout von Flip hat mit Sicherheit nichts mit dem aktivierten Watchdog oder dem Vorteiler (was soll das sein?) zu tun.
Hallo Zusammen, erst einmal vielen Dank für die super schnellen Anmerkungen und Erläuterungen von euch. Der Controller wird in einem Gerät eingesetzt, das in einer komplexen Regelstrecke arbeitet. Das Gerät verarbeitet sehr kleine analoge Spannungen, die dann über einen Vorverstärker in den Controller eingelesen werden. Die analogen Werte werden dann Formelmäßig bearbeitet und das Ergebnis sowohl analog als auch digital ausgegeben. Die nachfolgende (übergeordnete) Steuerung (in diesem Fall eine SPS) verarbeitet die Werte dann zu diversen Steuer und Regelzwecken weiter. Ich habe deshalb nur ein Zeitfenster von 15ms. Innerhalb des Zeitfensters müssen gültige Ausgangsdaten für das übergeordnete System zur Verfügung stehen. Das Einlesen, Berechnung und Ausgabe der Daten geschieht im Normalfall innerhalb von ca. 2ms. Über diesen Prozess habe ich die Watchdog gelegt. Sollten an irgendeiner Stelle fehlerhafte Werte auftreten oder sich das Programm einfach an einer Stelle festfressen, so läuft er automatisch in die Watchdog und der Reset wird ausgelöst. Dies wiederum veranlasst den Controller alle angeschlossenen Peripherie Bausteine neu zu initialisieren und die Werte neu einzulesen (in der Hoffnung dass diesmal korrekte Werte ausgegeben werden können). Das wieder Hochfahren nach dem Reset dauert ca. 10ms. Somit wurden für den gesamten Vorgang (im WorstCase-Fall) ca. 12ms verbraucht. Dies liegt aber noch deutlich im angegebenen Zeitfenster. Da das Betriebsprogramm über die Jahre mit immer mehr Features angereichert wurde ist es nun auf über 60KByte angewachsen. Im Zuge weiterer Erweiterungen benötige ich hierfür mehr Flash Speicher. Also habe ich mich auf die Suche nach einem gleichen oder ähnlichen Controller gemacht, der möglichst die gleiche Ausstattung als auch weitgehend Pinkompartibel zu dem bisher eingesetzten Typ von Dallas DS89C450 ist. Bei der Suche bin ich dann schließlich auf den Atmel AT89C51RE2 gestoßen. Der Controller wird mit einem externen Quarz mit 22.1184 MHz betrieben. Dies ermöglicht die serielle Übertragung der Parameterdaten zum Controller. Der Parameter Datensatz wird mit 38,4 KBaud (Vorgabe vom übergeordneten System) übertragen. Hierbei gehen einige zig Millisekunden bei drauf. Und genau hier wurde die Watchdog deaktiviert und nach der Übertragung und Auswertung wieder aktiviert. Für den korrekten Zeitlichen Ablauf habe ich bereits den Trick mit dem Interrupt als Zeitgeber implementiert. Bei dem AT89C51RE2 gibt es ein Register CKCON0 0x8F mit dem Bit 0 [X2] Das X2-Bit steuert die Taktung des Controllers. Je nachdem wie das Bit gesetzt oder gelöscht ist wird der Takt halbiert. Außerdem gibt es noch das Prescaler CKRL 0x97 Register, welches den Takt noch weiter runterteilt. Beide Register sind im default Zustand eingeschaltet und müssen explizit gelöscht bzw. mit korrekten Werten beschrieben werden. Ich dachte das (so habe ich es jedenfalls irgendwo gelesen bzw. gehört) X2-Bit spielt bei der seriellen Übertragung (UART) auch eine Hauptrolle, weswegen die Übertragung mit dem Flip nicht funktioniert !?!?
Hallöle, hier mein include file für SDCC - hab auch viel "nachgebessert" Gruß Rabis
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.