Forum: Mikrocontroller und Digitale Elektronik 89C5131A-UM ride alternative + tutorial


von .m4jX (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

... natürlich ist jede kleinste hilfe auch gut ...

http://www.duden.de/deutsche_sprache/rechtschreibpruefung/

von Sebastian (Gast)


Lesenswert?

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.

von .m4jX (Gast)


Lesenswert?

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...

von Sebastian (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

Äh, SDCC natürlich.

von .m4jX (Gast)


Lesenswert?

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?

von .m4jX (Gast)


Lesenswert?

Hab mittlerweile schon eine Lösung gefunden... Danke Sebastian für deine 
Hilfe.

von Bernhard S. (b_spitzer)


Lesenswert?

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

von m. keller (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.