www.mikrocontroller.net

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


Autor: .m4jX (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... natürlich ist jede kleinste hilfe auch gut ...

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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: .m4jX (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh, SDCC natürlich.

Autor: .m4jX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt hab ich das programm bei MIDE reingemacht, kam erst der fehler:
Compiling...
at 1: warning 119: don't know what to do with file 'mit'. file extension unsupported
at 1: warning 119: don't know what to do with file '8051\SDCC\lib\small'. file extension unsupported
D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(18) : warning 197: keyword 'sfr' is deprecated, use '__sfr' instead
D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(21) : warning 197: keyword 'sbit' is deprecated, use '__sbit' instead

// das kommt bei fast jeder line

D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(204) : warning 197: keyword 'sfr' memory overlap at 0x0 for RSEG0
memory overlap at 0x1 for RSEG0

//0x1 bis 0x3A

memory overlap at 0x3A for RSEG0

?ASlink-Warning-Undefined Global '_USB_asciaus' referenced by module '11'
?ASlink-Warning-Undefined Global '_USB_init' referenced by module '11'
is deprecated, use '__sfr' instead
D:\DOCUME~1\ADMINI~1\MYDOCU~1\11\11.c(47) : warning 94: comparison is always true due to limited range of data type
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:

Compiling...
at 1: warning 119: don't know what to do with file 'mit'. file extension unsupported
at 1: warning 119: don't know what to do with file '8051\SDCC\lib\small'. file extension unsupported

D:/DOCUME~1/ADMINI~1/MYDOCU~1/11/c51rd2.h(18) : syntax error: token -> '0x80' ; column 16

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?

Autor: .m4jX (Gast)
Datum:

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

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: m. keller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.