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.
... natürlich ist jede kleinste hilfe auch gut ... http://www.duden.de/deutsche_sprache/rechtschreibpruefung/
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.
jetzt hab ich das programm bei MIDE reingemacht, kam erst der fehler:
1 | Compiling... |
2 | at 1: warning 119: don't know what to do with file 'mit'. file extension unsupported |
3 | at 1: warning 119: don't know what to do with file '8051\SDCC\lib\small'. file extension unsupported |
4 | D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(18) : warning 197: keyword 'sfr' is deprecated, use '__sfr' instead |
5 | D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(21) : warning 197: keyword 'sbit' is deprecated, use '__sbit' instead |
6 | |
7 | // das kommt bei fast jeder line |
8 | |
9 | D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(204) : warning 197: keyword 'sfr' memory overlap at 0x0 for RSEG0 |
10 | memory overlap at 0x1 for RSEG0 |
11 | |
12 | //0x1 bis 0x3A |
13 | |
14 | memory overlap at 0x3A for RSEG0 |
15 | |
16 | ?ASlink-Warning-Undefined Global '_USB_asciaus' referenced by module '11' |
17 | ?ASlink-Warning-Undefined Global '_USB_init' referenced by module '11' |
18 | is deprecated, use '__sfr' instead |
19 | D:\DOCUME~1\ADMINI~1\MYDOCU~1\11\11.c(47) : warning 94: comparison is always true due to limited range of data type |
20 | D:\DOCUME~1\ADMINI~1\MYDOCU~1\11\11.c(48) : warning 126: unreachable code |
dann hab ich in der c51rd2.h überall sfr durch __sfr ersetzt und sbit durch __sbit ersetzt, jetzt kommt diese meldung:
1 | Compiling... |
2 | at 1: warning 119: don't know what to do with file 'mit'. file extension unsupported |
3 | at 1: warning 119: don't know what to do with file '8051\SDCC\lib\small'. file extension unsupported |
4 | |
5 | D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(18) : syntax error: token -> '0x80' ; column 16 |
6 | |
7 | Compile error! Output not generated. |
was ich natürlich noch machen muss, ist eine *.lib einbinden, bei RIDE ging das über add source, wie kann man das hier?
Hab mittlerweile schon eine Lösung gefunden... Danke Sebastian für deine Hilfe.
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?
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.