Microcontroller Frust...

Hallo,

Ich kann kein C, nur Pascal. Ich mag Röhren und Schütze. Digitale Elektronik mache ich nur dann, wenn es sich wirklich nicht vermeiden läßt. Und ich benötige ein einfaches Microcontrollerprogramm, für Atmel 8051 das Folgendes kann:

Für eine Positionsanzeige 3 byte aus einem Zähler einlesen, mit $1C1C multiplizieren, die letzten drei byte wegschmeißen, den Rest in Dezimal umwandeln und über ein Schieberegister in eine 7Segment-Anzeige pumpen. Kann ja nicht so schwierig sein, dachte ich. Die Einzelteile für den Code gibt's alle schon und sie sind getestet.

  1. Versuch: Mit einer älteren (und leider schon bezahlten :-( ) Version von KSC compilieren, brennen und läuft nicht. Immer wenn er mit mehr als einem byte rechnen muß, macht der Compiler oder Linker Fehler. Diverse Workarrounds (z.B. selbstgeschriebene Multiplikation Bit für Bit) führen zu nichts. Googl sagt, das ist normal so bei älteren KSC-Compilern...

  1. Versuch: Die aktuelle Demoversion von KSC heruntergeladen. Mal sehen, ob die besser ist. Leider ist diese sie so stark eingeschränkt, daß nicht viel mehr als eine blinkende LED damit zu machen ist. Eine 7Segmentanzeige bekomme ich damit jedenfalls nicht mehr angesteuert. Ansonsten ist es mir die Vollversion einfach zu teuer.

  2. Versuch: AVRco Pascal. Wunderschön. Aber weiß jemand, ob man damit auch 8051 Microcontroller programmieren kann?

  1. Versuch: Embedded Pascal. Der Typ sitzt in Südafrika und ist per Email nicht erreichbar, oder er schreibt nur Leuten, die seine Software schon gekauft haben. Ich würd's ja kaufen. Aber bislang konnte ich nicht rausfinden, ob irgendetwas passiert, wenn ich $$$ nach Südafrika überweise oder ob der Typ inzwischen in Rente ist oder so. Genug gejammert. In der Demo ist genug Platz für das kleine Progrämmle. Kompilieren und simulieren kann ich es auch, aber wie zum Teufel bekomme ich eine INTEL-HEX Datei für mein Programmiergerät???

So schwierig kann das doch nicht sein,oder?

Ratlos,

Christian

Reply to
Christian Hoffmann
Loading thread data ...

"Christian Hoffmann" schrieb:

Bah, Schnickschnack ;) Du kannst also programmieren. Vielleicht fehlen dir ein paar C-Vokabeln, na und?

Mann muss C nicht kryptisch coden und mit wilden Operatoren und Pointern um sich werfen.

Schau dir mal einige C-Beispiele für 8051 an. Ist Pascal schon sehr ähnlich.

Mit dem 8051 bin ich noch nicht soooo erfahren (habe bisher nur den keil c51 benutzt), aber eigentlich beschränken sich die Programmiermuster bei einfachen Aufgaben auf "Bitschubserei", dazu noch nen paar Zuweisungen an die Register und vielleicht noch ne Schleife...

MfG, Bernd

Reply to
Bernd Maier

Am Thu, 20 Jan 2005 19:01:15 +0100 hat Christian Hoffmann geschrieben:

Haben nicht die meisten 8051 eine Multiplikation (8bit) eingebaut - obwohl so schwer ists bitweise auch nicht. Was spräche gegen Assembler?

Vielleicht findest du irgendwo im Netz eine Version eines freundlichen Zeitgenosen, die etwas leistungsfähiger als die Demoversion ist...

--
Martin
Reply to
Martin Lenz

^^^^^ = alle: 8Bit x 8Bit => 16Bit

Ich glaube hier liegt nicht das Problem in der Multiplikation, sondern für eine "mal eben" Aktion die Schwelle des näher Beschäftigens mit Toolchain und Maschine zu überschreiten. Das kann ich durchaus verstehen, nützt aber nix, die Hürde will genommen werden, oder man muß sie nehmen lassen...

--
Ingolf Pohl
Reply to
Ingolf Pohl

"Christian Hoffmann" schrieb im Newsbeitrag news: snipped-for-privacy@individual.net...

File Open ?

Matthias Schmelter scheint gerade dasselbe Problem zu haben, auch er faselt von Schieberegister, scheint in Mode zu sein, oder ist aktuell Hausaufgabe in irgendeine Kurs.

Wenn du in Pascal eine bitweise Multiplikation hinschreiben kannst, kannst du das auch in Assembler, also trau dich, deine Codeschnipsel gibt es auch fertig (zumindest fuer den AVR und den PIC, weil man da weiss, wo man suchen muss, eine Sammlung fuer 51er ist wohl auf Grund der vielen Hersteller weit verstreut).

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Versuch mal den sdcc. Damit sollte dein Problem leicht lösbar sein. Sdcc ist open source.

--
MFG Gernot
Reply to
Gernot Fink

Gernot Fink spoke thusly:

Mit dem kleinen Schönheitsfehler, daß sdcc ein C-Compiler ist, Christian aber einen Pascal-Compiler sucht.

Tschüs,

Sebastian

--
http://www.baumaschinen-modelle.net

Neu: Schwerlast-FAQ
Reply to
Sebastian Suchanek

Wenn es denn unbeding sein muss: Es gibt p2c

formatting link
Supportet "HP Pascal, Turbo/UCSD Pascal, DEC VAX Pascal, Oregon Software Pascal/2, Macintosh Programmer's Workshop Pascal, Sun/Berkeley Pascal, Texas Instruments Pascal, Apollo Domain Pascal. Modula-2 syntax is also supported"

--
Dr. Juergen Hannappel          http://lisa2.physik.uni-bonn.de/~hannappemailto:hannappel@physik.uni-bonn.de  Phone: +49 228 73 2447 FAX ... 7869
Physikalisches Institut der Uni Bonn Nussallee 12, D-53115 Bonn, Germany     
CERN: Phone: +412276 76461 Fax: ..77930 Bat. 892-R-A13 CH-1211 Geneve 23
Reply to
Juergen Hannappel

Ich hab mich vom KSC! hinreißen lassen ;-)

--
MFG Gernot
Reply to
Gernot Fink

"Juergen Hannappel" schrieb im Newsbeitrag news: snipped-for-privacy@lisa2.physik.uni-bonn.de...

Jemals ausprobiert ? Offenbar nicht. Das Teil ist ein Fake, da funktioniert so gut wie nichts, und er ist noch nicht mal geeignet um Teilergebnisse zu erzielen (Error->Abbruch).

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Newsbeitrag news: snipped-for-privacy@lisa2.physik.uni-bonn.de...

Software

Pascal,

Kann ich nur bestätigen, ich kenne auch kein p2c, mit dem man danach ein compilierfertiges Ergebnis erhält. Alles Schnickschnack. Wenn es sich um Sourcen handelt, die einem mal viel Arbeit bereitet haben, dann mag der p2c Ansatz ja noch einen Versuch Wert sein, aber sonst schreibt man lieber neu, mal abgesehen davon, dass man dann seine Arbeit immer nochmal überdenkt. Was diesen Dreizeiler betrifft, da denkt man an einen X-Compile doch nicht wirklich drüber nach oder? Ist auch schon geschrieben worden, allen Ernstes, für die Aufgabe schreibt man doch wohl in Assembler, oder?

Henry

--
----------------------------------------------------------------------
snail mail : Henry Koplien                             \|/
             From the Center of Nowhere              o(O O)o
---- eMail : Henry@NiKo-Internetpraesenz.de ----ooOo---(_)---oOoo-----
Reply to
Henry

news: snipped-for-privacy@lisa2.physik.uni-bonn.de...

[...]

Noe. Der einzige SpracheA_zu_SpracheB den ich bisher verwendet habe ist f2c (Fortran to C), der brauchte zwar etwas Arbeit am Fortran-Code (z.B. rauswerfen der VAX-Fortran-Spezifika....), aber die 478246 Zeilen Fortran auf die er angesetzt wurde sind zufriedenstellen uebersezt worden.

--
Dr. Juergen Hannappel          http://lisa2.physik.uni-bonn.de/~hannappemailto:hannappel@physik.uni-bonn.de  Phone: +49 228 73 2447 FAX ... 7869
Physikalisches Institut der Uni Bonn Nussallee 12, D-53115 Bonn, Germany     
CERN: Phone: +412276 76461 Fax: ..77930 Bat. 892-R-A13 CH-1211 Geneve 23
Reply to
Juergen Hannappel

Vorhanden ist halt die Hardware: Ein Zähler, der über 3x8bit Latch ausgelesen wird, der MC und eine 7stellige LED-7Segmentanzeige, die über ein Schieberegister bitweise gefüllt wird.

Alles funktioniert soweit (Zähler einlesen, Umrechnung BIN->DEC, Generierung der 7Segment-Zeichen, Anzeige.)

Nur die Umrechnung in eine physikalische Einheit (drei byte mal zwei byte) will einfach nicht gelingen. Mit dem Bitschubsen habe ich auch erst angefangen, als klar wurde, daß der Compiler/Linker von KSC Mist baut. Nützt aber nichts. Jetzt habe ich schon eine Woche damit vergeudet und langsam kann ich das Programm nicht mehr sehen.

Jetzt muß meine gewohnte Entwicklungsumgebung wechseln, eine neue Programmiersprache lernen, meine komplette Source umschreiben und neu debuggen bloß um multiplizieren zu können :-( grmpf.

Christian

Reply to
Christian Hoffmann

Christian Hoffmann schrieb:

=20

det=20

Hallo,

wenn Du drei Byte mal zwei Byte rechnen willst, dann brauchst Du einen=20 Compiler der eine 32 Bit Multiplikation kann, das ist f=FCr einen 8 Biter= =20 etwas viel verlangt.

In Assembler kann man sich eine Multiplikation drei Byte mal zwei Byte=20 selber bauen, das erfordert halt erst mal sechs Multiplikationen mit je=20 einem Byte. Dann noch 5 Additionen mit 16 Bit, das werden etwa 10=20 Additionen mit einem Byte sein. Ein paar Operationen kann man bei=20 geschickter Vorgehensweise evtl. noch einsparen.

Bye

Reply to
Uwe Hercksen

Am Fri, 21 Jan 2005 10:15:17 +0100 hat Christian Hoffmann geschrieben:

Und die 3*2 Byte in Inline Assembler o.ä. zu implenetieren ist keine Möglichkeit, das sind ja nur ein paar Befehle?

--
Martin
Reply to
Martin Lenz

Durchaus, allerdings nicht für Microcontroller. Dafür hast Du wahrscheinlich vor allem das Problem, dass zumindest der frühere ISO-Standard für Pascal (den p2c wohl recht vollständig implementiert) eigentlich nur als Lehrsprache taugt (wofür Pascal ja mal gemacht worden ist und auch wirklich richtig gut geeignet ist -- wer Pascal kann, kann eigentlich auch schnell andere prozedurale Sprachen lernen).

Daraus folgt aber, das jedes Programm, das wirklich irgendwas vernünftiges anstellen will (Dateiarbeit auf PCs, Hardwarenähe auf Microcontroller) nicht mehr mit dem Standard auskommt. An dieser Stelle bist du dann auf dich selbst gestellt bei p2c, sofern der dir gerade bekannte Dialekt nicht bereits unterstützt wird (Turbopascal, GRW Pascal etc.).

Mehr als ,,ein Fake'' ist es aber allemal.

--
J"org Wunsch                                           Unix support engineer
joerg_wunsch@interface-systems.de        http://www.interface-systems.de/~j/
Reply to
Joerg Wunsch

Am Fri, 21 Jan 2005 10:50:34 +0100 hat Uwe Hercksen geschrieben:

Ich glaube nicht, daß das viel mehr als 5 Additionen zu 8bit werden müssen

- man stelle es sich so vor, wie wenn man dezimal auf dem Papier multipliziert, nur daß eine "Ziffer" 8bit hat.

--
Martin
Reply to
Martin Lenz

news: snipped-for-privacy@individual.net...

Was meinst Du genau? Mein Programmiergerät kann nur Intel HEX. Embedded Pascal meldet zwar beim Compilieren, daß ein HEX-File erzeugt wird, tut es aber nicht. Wohl eine Einschränkung der unregistrierten Version...

Hab ich nix mit zu tun. Bei mir gibt's die Hardware schon und es funktioniert auch. Problem ist der Motor: Das Getriebe hat eine ätzend ungerade Übersetzung, die sich mit einfachem Bitschieben leider nicht in für Menschen verständliche Werte übersetzen läßt...

Autsch. Das ist 10 Jahre her, als ich das das letzte mal gemacht hab...

Christian

Reply to
Christian Hoffmann

news: snipped-for-privacy@lisa2.physik.uni-bonn.de...

Klingt interessant. Fortran kann ich noch...

Christian

Reply to
Christian Hoffmann

Wenn der Controller eine 8x8=16 Bit Multiplikation per Opcode macht kann man daraus einfach eine 16x16=32 Bit zusammensetzen. Schema ist in

formatting link
Heft 4 S. 13 dargestellt. Wortlänge kann man natürlich noch erweitern.

MfG JRD

Reply to
Rafael Deliano

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.