Ich arbeite mit einem Atmel 89C5131A-UM, 24MHz
normal code ich mit RIDE 6 (in C), da das trial aber eine filesize
begrenzung hat, kann ich mein etwas größeres programm nicht compilen...
Ich hab schon versucht was anderes zu suchen, aber nichts scheint
89C5131A-UM zu unterstützen, außer es gibt noch einen anderen namen, den
ich nehmen kann... hab z.b. WinAVR installiert, aber da gibt es den
controller nicht... ich hab schon ne weile gesucht, aber ich finde wie
es scheint nichts.
Was ich also brauche ich ein programm, ohne filesize limit, mit dem ich
weiter in C coden kann... am besten wäre ein programmname, mit dem das
geht und ein schritt für schritt tutorial, was ich einstellen muss,
damit das teil funktioniert, optimalerweise mit kleinem beispielprogramm
im tutorial zum ausprobieren...
natürlich ist jede kleinste hilfe auch gut.
Den 89C5131A habe ich schon einmal verbaut, programmiert damals mit der
Keil-Demo. Hat natürlich auch eine Codegrößenbegrenzung, ist damit also
nicht besser als Ride.
Generell ist das Problem, daß es sich hier einerseits um einen 8051er
handelt, für den C sowieso schon nicht die bevorzugte Sprache ist, aber
zum anderen die ganzen Beispielprogramme (und ich jedenfalls möchte die
USB-Funktionalität nicht selber programmieren) eben in C geschrieben
sind.
Der "saure Apfel", in den ich damals glücklicherweise nicht beißen
mußte, ist die Portierung der Beispielcodes nach SDCC. Leider ist SDCC
syntaktisch ein etwas ungewöhnlicher Compiler, und von den ganzen
Sonderkonstrukten, die Keil so kennt, will er schon gar nichts wissen.
Man muß sich zum einen die Registerdefinitionen als Include-Datei selber
machen, die sind für den 89C5131 nicht dabei, zum anderen aber kennt
Keil - genauso wie Ride, nehme ich an, Spracherweiterungen, die nicht
dem ANSI-C-Standard entsprechen, aber in den Codebeispielen gern genutzt
werden. SDCC ist dazu so inkompatibel, daß man einige Programmteile neu
schreiben müssen wird. Wesentliche Programmteile, die man dazu erst
einmal vollständig verstanden haben muß. Bei komplett
selbstgeschriebenem Code vielleicht halb so schlimm. Ansonsten ziemlich
übel.
Ich hab auch schon versucht bei Eclipse SDCC einzubauen und das dort zu
machen... aber es hat nicht wirklich geklappt, es hat keine fehler beim
compilen angezeigt, aber es hat auch kein *.hex file erstellt,
vielleicht konnte man da noch mit irgendeinem anderen Programm das
umwandeln, aber ich weiß ja nicht mal ob das dort jetzt wirklich mit den
einstellungen für den 89C5131A war, oder ob der das einfach so compiled
hat...
Die Eclipse-Integration kann fehlerhaft sein. Ist auch nicht so einfach.
Vielleicht tut's auch eine leichtere IDE? Hier:
http://www.opcube.com/home.html gibt es das "MIDE-51" Paket. SSCC mit
IDE und Simulator.
RIDE 7 generiert in der Kostenlosen Version jetzt bis zu 8kb Code.
Achtung: der AT89c5131 ist im Debugger noch unzureichend unterstützt.
Wenn man aber im Projekt den AT89C4051 einstellt, ist es ok.
Noch was zum AT89C5131: in der .h-Datei hat irgend ein Hirsch die Idee
gehabt und hat aus den Bits IE0/IE1 jetzt IE0_ /IE1_ gemacht. Aus den
Freigaberegistern IEN0/IEN1 wurde IE0/IE1!!!
Wenn man mit externen Interrupts pegelgesteuert arbeitet, dann muss man
das Flag selber löschen. Im (alten, getesteten) Code steht dann IE0 = 0;
Mit der neuen .h-Datei wird dabei unbemerkt das Register IE0 gelöscht
und alle Interrupts sind disabled....
Die AT89C5131.h also unbedingt editieren und die Bits IE0_ /IE1_ wieder
auf IE0 IE1 und die Register IE0 IE1 auf IEN0 / IEN1 ändern.
tschuessle
Bernhard
Ganz ehrlich?
Ich habe mich anfangs auch mit den 8051er abgemüht. Tu dir selbst einen
Gefallen und steige auf was anderes um.
Wenn du gern USB, CAN onBoard hast, dann kann ich dir zu den PIC18Fxxxx
Controllern raten. Die sind auch bei Reichelt in DIP verfügbar und die
Entwicklungsumgebung ist kostenlos. Dazu massig sehr guter Beispielcode.
Ansonsten eben auf die allseits beliebte AVR-Serie.
Wieso hängst du so an dem Controller?