Page 1 of 2
Beratung Mikrocontroller
Posted: Sun 03 Aug, 2008 7:33 am
by icelase
Guten Morgen zusammen
ich bräucht mal eine kleine Beratung von den Mikrocontroller Spezis hier im Forum.
Und zwar hab ich vor mittels eines Mikrocontrollers ein 40x4 LCD mit zwei HD44780 kompatiblen Controllern ( also Standard zeuchs ) ansteuern.
Allerdings bin ich zwar Fachinformatiker, aber habe keine Ahnung von Mikrocontrollern ( geschweige denn Assembler

)
Welche Plattform würdet ihr einem blutigen Anfänger empfehlen?
Hatte da an die C-Control gedacht, da ist anscheinend ein guter Community Support.
Entwicklerboard sollte möglichst günstig sein ( Oder der Programmer halt )
Anzeigen lassen würd ich gerne Werte von Spannungs und Temperatur Sensoren
Viele Grüsse,
Frank
UPDATE: Bin nun stolzer Besitzer eines STK500 + Avr-Studio ( avr-gcc). Danke an alle
Posted: Sun 03 Aug, 2008 10:48 am
by karsten
C-Control? Ich bin ja eher ein Fan der Atmel ATmegas - schnell, viele OnChip-Komponenten (EEPROM, AD_Wandler, serielle Schnittstellen UART/SPI/I²C, leistungsfähiges Timer-System inkl. PWM-Generator, JTAG, ...), weit verbreitet, viel Software usw. im Internet erhältich (siehe z.B. averfreaks.net) und die Entwicklungswerkzeuge sind billig.
C-Compiler gibt's angefangen beim kostenlosen WinAVR (basiert auf dem gcc und lässt sich direkt in das AVR Studio einbinden) über Imagecraft (250$...550$) bis hin zum 1600 Euro teuren IAR-Compiler (für Hobbyanwendung eher uninteressant). Als Debugger gibt es das kostenlose AVR Studio von Atmel, was sehr leistungsfähig ist.
Als reiner Programmer kommt das AVRISP-Interface von Atmel für ca. 40 Euro in Frage, Nachbauten gibt's schon für ca. 20 Euro. Zum Debuggen und Programmieren gibt es von ATMEL das JTAGICE MKII für ca. 280 Euro, was alle Contoller der AVR-Serie unterstützt, für die Controller der ersten Gerneration (Mega16/32/64/128 u.a.) reicht auch noch das ältere JTAGICE (ohne MKII) welches es als Nachbau ab 45 Euro neu zu kaufen gibt (z.B.
http://www.miklobit.com/).
Als Entwicklungsboard, wenn man noch nicht selbst eine PLatine auflösen will, gibt es das STK500 Board von Atmel für 80 Euro, in dem auch schon der ISP-Programmer mit eingebaut ist. Boards von anderen Herstellern dürfte es noch preisgünstiger geben.
Posted: Sun 03 Aug, 2008 2:03 pm
by john
Wenn du schnelle Ergebnisse haben möchtest und noch wenig Programmiererfahrungen hast, kauf dir:
- Das myavr Einsteigerset
http://myavr.de/shop/article.php?artDataID=41
- und als Compiler Bascom. Für eine einfache Displayansteuerung reicht die kostenlose Demoversion.
http://www.mcselec.com/
Um ein Display anzusprechen, benötigt man in Bascom 4 Zeilen Code.
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
InitLcd
LCD "Hallo Welt"
John
Posted: Sun 03 Aug, 2008 2:25 pm
by icelase
Hi,
also dank "Michael" ausm Freak-Chat hab ich mich nun entschieden erstmal so einen AVR-Butterfly zu kaufen ( nur um ein bissel zu Spielen )
und dann ein STK500 Board

da kann ich dann richtig mit Basteln.
Zusammen mit AVR-GCC bzw AVRStudio und was es da alles gibt

mal schaun.
Des ist okay zum einsteigen oder?
Grüsse,
Frank
Posted: Thu 07 Aug, 2008 11:48 am
by icelase
hi zusammen,
Ich würd gerne Temperaturen von verschiedenen Punkten im Projektor Gehäuse auslesen.
Hat sowas schon jemand hier gemacht? die PT100 sollen ja sehr genau sein. Und die dinger gibts ja auch in "Flach" d.H. man könnte sie zwischen Laserkopf und Grundplatte "klemmen".
Allerdings ist der Preis auch nicht ohne.
Werde dann erstmal als "spiel" Projekt ein 40x4LCD mit einem Atmega32 ansteuern ->
http://icelase.net/laser/4x40lcd1.jpg
Hoffentlich kommt das STK500 bald
Grüsse,
Frank
Posted: Thu 07 Aug, 2008 12:28 pm
by Dr.Ulli
kernspin wrote:Ich persönlich nutze Bascom zum Programmieren
Ich habe meine "alte Laser-Kiste", die noch ohne Scanner war, auch mit Atmels Mega8 (2Stück für Schrittmotoren) und Mega16 / 32 (gesteuert, insgesamt 6 Schrittmotoren und auch 6 Laser (an/aus) sowie Nullposition -Abfragen über Photowiderstand und Lissjous-Motörchen.
Geproggt habe ich die auch mit Bascom und STK500...
Das habe ich alles im Roboternetz.de gefunden - da gibts auch jede Menge Infos zu anderen Mikroprozessoren...
Die Karten habe ich als Bausätze bei einem gewissen Hern Frank Brall gekauft (leicht übers Roboternetz zu finden - der ist da Moderator/Administrator). Da gibts auch LCD-Displays und Hinweise zur Ansteuerung.
Als ich damit anfing, war ich auch noch blutiger Laie bezüglich Mikroprozessoren, heut hab ich da schon mehr drauf...

Posted: Thu 07 Aug, 2008 12:37 pm
by karsten
Pt100 sind sehr genau (wenn man nicht gerade 3. Wahl gekauft hat

) und natürlich auch teuer - Platin kostet halt. Das mit dem zwischen Laserkopf und Grundplatte klemmen geht nicht so ohne weiters, da der reine Chipwiderstand dazu viel zu empfindlich ist - der Keramikträger bricht bei mechanischer Belastung sofort.
Man könnte wenn zwischen Laserkopf und Grundplatte noch eine PLatte zum Höhenausgleich vorhanden ist diese seitlich anbohren und einen Pt100 mit Hülse seitlich einstecken. Natürlich erhöht sowas den thermischen Widerstand.
Posted: Fri 08 Aug, 2008 8:32 am
by deadeye5589
Was unter Windows ganz gut klappt ist AVRStudio in Verbindung mit dem Selbstbauprojekt USBProg. Das Teil ist open Hard- und Firmware, kann relativ leicht selber aufgebaut werden und kann mit seinen verschiedenen Firmware Versionen alles simulieren. Momentan kann es sowohl den AVRISP, als auch den ICE MKII nachstellen und erlaubt somit ISP und JTAG für Atmel µC. Die Bauteilkosten liegen bei ungefähr 15€.
http://www.embedded-projects.net/index.php?page_id=135
Posted: Fri 08 Aug, 2008 9:20 am
by icelase
hoi zusammen
mein STK500 ist gestern angekommen

Ziemlich genial das teil

Lauflicht usw hab ich auch schon programmiert.
Nun kommt am Wochenende das LCD dran

Posted: Fri 08 Aug, 2008 4:01 pm
by icelase
Gibts da noch eine gute Lösung fürs "Debugging" der Schaltung?
Ich kann zwar das Programm in AVR-Studio Simulieren... aber naja
hab da noch was von UART und JTAG gelesen, is das mit dem STK500 möglich? kostet aber bestimmt extra oder?

Was ist da Preis/Leistungsmäßig am besten?
Karsten hat da ja das JTAGICE angesprochen.
Posted: Fri 08 Aug, 2008 7:50 pm
by karsten
Hallo icelace,
ja , ich hatte JTAGICE angesprochen - ist zum Debuggen perfekt. Ich arbeite seit Jahren mit dem JTAGICE (aktuell mit der neuen Version mkII). Das Teil kostet 290Euro, womit es eigentlich spotbillig ist im Vergleich zu früher, als man noch Emulator usw. brauchte (wir haben vor z.B. 3 Jahren noch 5000Euro für eine 8051-Entwicklungsumgebung bezahlt und immerhin noch 1000Euro für einen Mega8-Emulator), aber es geht noch billiger mit den JTAGICE-Nachbauten (sieh meine Link oben). Allerdings laufen die nicht immer ganz rund und unterstützen nicht jeden Prozessor.
Ob dir ein billiger Klon reicht, du einen JTAGICE mkII oder einen kompletten Emulator brauchst, hängt davon ab, wechen Controller du einsetzt. Der Mega16/32/64/128 lässt sich mit dem alten JTAGICe von Atmel und dessen Nachbauten debuggen. Mega8 geht nur mit Emulator, da der kein JTAG hat. Alle neueren Mega 48/88/640/1280/1281/2560/2561 usw. sowie die neueren mit Displaycontroller brauchen ein JTAGICE mkII von Atmel. Es sind da zwar schon einige Nachbauten in den Startlöchern, aber meines Wissens hat noch kein Hersteller das komplett am laufen (auch nicht das Teil, was von Deadeye5598 oben gepostet wurde).
Debuggen über UART würde ich nicht machen. Da gibt es zwar wohl Möglichkeiten, aber zum einen beeinflusst es die Laufzeiten und zum anderen belegt es die UART des Controllers, die einem dann meist für die Anwendung fehlt. JTAG ist weitaus komfortabler. Also ich würde entweder einen Nachbau probieren, oder zusehen, dass ich preisgünstig an ein JTAGICE mkII komme.
Karsten
PS: Die Simulation und UART-Debugging hab ich beim ATMega noch nie verwendet. Ich kenne solche Sachen aber noch von früher bei den 8051.
Posted: Mon 18 Aug, 2008 12:23 pm
by icelase
Hi Karsten,
danke für deine Antwort.
Gut dann werd ich mir wohl später irgendwann so ein JTAG ICE kaufen.
Momentan klappt es noch gut ohne in-circuit Debugger
LCD Ansteuerung funktioniert, Taster etc auch alles ohne Probleme.
Bin grad an einem Betriebsstundenzähler ( über einen Timer ) der sekündlich einen 32bit Integer hochzählt.
Nun muss ich es irgendwie noch schaffen das dass LCD merkt wann der "Strom" ausgeschalten wird und daraufhin den wert ins EEPROM schreibt... einer ne idee wie man das lösen könnte? Kondensator vielleicht einbauen damit noch ein paar sekunden "Saft" da ist?
Grüsse,
Frank
Posted: Mon 18 Aug, 2008 12:50 pm
by kollimann
der sekündlich einen 32bit Integer hochzählt
Bedenke bitte das so nen Flash nicht ewig zu beschreiben geht............also nur zählen lassen und beim Ausschalten erst schreiben.
Kondensator sollte es tun, nach dem Spannungsregler, als "zusätzlicher Stromkreis", nicht in den Hauptstromkreis, das bringt nix.
Dann Spannung abfragen und im Script sagen wenn Spannung < als dann Schreibe......
Habs schon mal so gebaut, ging.
Alles nicht ganz Technich OK geschrieben aber hoffe verständlich
Posted: Mon 18 Aug, 2008 1:13 pm
by icelase
Hi Kolliman
ja so mein ichs ja auch
mir ist klar das ich nicht jede Sekunde den Wert ins EEPROM schreiben kann *fg* da ist ja nach 100.000 zyklen schluss.
Also ein kleiner Kondensator der die Spannung noch aufrecht erhält

dann hat der IC noch genug Zeit zum "speichern"... mal schaun
grüsse,
frank
Out
Posted: Mon 18 Aug, 2008 2:04 pm
by guido
Hallo,
bevor du eine Pufferung baust wo ein Elko wohl nicht reichen wird
würd ich eher alle 10sec. ins EEProm schreiben.
Und geh nicht davon aus das nach 100000 Schreibzyklen Ende ist.
Es gab Versuche wo das beim 89C52 auf über ne halbe Millionen ging.
Dann hat man abgebrochen. Ist natürlich keine Garantie.
Betriebsstundenzähler wie sie z.b. in Arctoskisten sitzen gibts aber auch
fertig zu kaufen..Farnell und Co
Posted: Mon 18 Aug, 2008 3:34 pm
by kollimann
Betriebsstundenzähler wie sie z.b. in Arctoskisten sitzen gibts aber auch
fertig zu kaufen..Farnell und Co
Das ist sehr richtig und die sind auch preiswert, ABER wenn ich einen haben will und eh nen Mikrokontroller einbau, für was auch immer, dann kann der auch gleich mit die Betriebstunden zählen.
Ich hatte 100uF drinne, das hat beim Testen gereicht, wie gesagt aber in einen extra Stromkreis ! Beim Testen ists aber bei mir auch geblieben weil anderes Vorrang hatte.
würd ich eher alle 10sec. ins EEProm schreiben
Eigentlich heißt das Ding ja aber Betriebs
stunden Zähler, daher glaube ich ist es übertrieben alle 10sec schreiben zu lassen. 1mal pro min oder so......... Kann man nun auch hochrechnen wie ungenau der dann geht wenn du 10mal bei 65,30min ausschaltest
Icelas, du kannst auch mal unter
http://www.mikrocontroller.net/ schaun, dort ist eigentlich sehr viel mit Quellcode und Schaltungen behandelt wurden.
Posted: Mon 18 Aug, 2008 6:59 pm
by floh
Ich hatte 100uF drinne
ich hätte da schon aus Prinzip einen GoldCap mit 1F oder so genommen. Die kosten ja kaum noch was.
Posted: Wed 20 Aug, 2008 1:05 pm
by icelase
Hi zusammen,
ja da gibts auch beispiele mit Kondensatoren
Denke ich werd die lösung nehmen, das EEPROM möcht ich so wenig wie möglich unnötig beschreiben bzw löschen
Grüße,
Frank
Posted: Wed 20 Aug, 2008 3:21 pm
by john
Ich würde das EEPROM nehmen.
Wenn die garantierten Schreibzyklen auf EINE Speicherzelle nicht ausreichen, überleg dir eine Methode, wie du sie auf mehrere Zellen so verteilen kannst, daß sie gleichmäßig beschrieben werden.
Oder wie man einen verschlissenen Bereich als verschlissen kennzeichnen kann, bevor die garantierte Zyklenzahl erreich ist und dann zu nächsten Segment wechseln.
Das ist nicht sooo schwierig.
Kondensator ist doch Kinderkram. Wieso externe, teure Bauelemente, die zudem noch eine Schwachstelle sind? Ein Stundenzähler soll grade nicht rücksetzbar sein.
Selbst, wenn du auf einfachst mögliche Art ins EEPROM schreibst, werden die LSBs zuerst ausfallen, weil sie am Häufigsten verändert werden müssen. Die LSBs werden aber mit zunehmender Laufzeit immer unbedeutender! D.h. der Fehler, den du reinbekommst spielt kaum noch eine Rolle. Wenn interessieren Sekunden oder Minuten, wenn die Kiste Jahre auf dem Zähler hat?
Zwei Dinge gilt es dabei zu beachten. Codier ein Bit deines Zählers am besten immer in ein Byte des EEPROMS. Das EEPROM wird Byteweise beschrieben und ein Ausfall sollte möglichst wenige Stellen des Zählers treffen.
Schreibe nur, wenn es NÖTIG ist. Also alten Wert aus dem EEPROM auslesen, mit neuem vergleichen und NUR die Bytes neu schreiben, die nötig sind.
Wenn du ein Byte als Speicher für ein Bit nimmst, kannst du sogar noch eine Prüfsumme mit in das eine Byte codieren und so erkennen, wenn die Speicherzelle defekt ist.
John
Posted: Wed 20 Aug, 2008 3:46 pm
by karsten
Oder wirf einfach mal einen Blick in die Application Note 101 von Atmel (High Endurance EEPROM Storage) - da gibt's auch den Sourcecode für.
Betriebsstundenzähler brauch eiegntlich nicht allzuhäfig geschriben werden - wenn alle Stunde nur gesichert wird, reicht das EEPROM min. 11 Jahre bei 24-Stundenbetrieb. Denke, wenn du alle 10min speicherst, reicht die Genauigkeit immer noch und du kannst immer noch 2 Jahre erfassen mit nur einer EEPROM-Zelle.
Posted: Wed 20 Aug, 2008 3:49 pm
by icelase
Ja ich will aber nicht sporadisch sichern... wenn du das ding nur 50min in betrieb hast und wieder abschaltest... dann verlierste ja 50min weil du den Wert noch nicht gespeichert hast... und auf dauer isses dann kein wirklicher Betriebsstundenzaehler mehr
Denke mit einem Kondensator is das am besten zu lösen
Grüße,
Frank
Posted: Wed 20 Aug, 2008 5:12 pm
by john
icelase wrote:Ja ich will aber nicht sporadisch sichern... wenn du das ding nur 50min in betrieb hast und wieder abschaltest... dann verlierste ja 50min weil du den Wert noch nicht gespeichert hast... und auf dauer isses dann kein wirklicher Betriebsstundenzaehler mehr

Dann schreib dein kleinstmögliches Zeitintervall bereits beim Einschalten weg oder mach es so kurz, daß es nicht mehr relevant ist.
icelase wrote:
Denke mit einem Kondensator is das am besten zu lösen

Das wird nach ein paar Jahren lustig, wenn dein Kondensator Kapazität verliert und der BrownOut mittem im Schreibvorgang kommt. EEPROMs brauchen vergleichsweise lange zum Schreiben und imho ist abfallende Betriebsspannung beim Schreiben nicht gut.
Aber wie sagt man hier so schön? Wer nicht hören will, muß Geld versenken. Und wer persistente Daten nicht geeignet speichert, sucht den Datenverlust.
Posted: Wed 20 Aug, 2008 6:27 pm
by karsten
Mit der Technik in AP101 kannst du ja auch minütlich ins EEPROM speichern. Wenn beim Ausschalten dann im Mittel eine halbe Minute verloren geht, spielt das wohl kaum noch eine Rolle.
Posted: Wed 20 Aug, 2008 6:47 pm
by random
John wrote:Wenn du schnelle Ergebnisse haben möchtest und noch wenig Programmiererfahrungen hast, kauf dir:
- Das myavr Einsteigerset
http://myavr.de/shop/article.php?artDataID=41
- und als Compiler Bascom. Für eine einfache Displayansteuerung reicht die kostenlose Demoversion.
http://www.mcselec.com/
Um ein Display anzusprechen, benötigt man in Bascom 4 Zeilen Code.
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
InitLcd
LCD "Hallo Welt"
John
lasst diesen BASIC-Blödsinn, ist doch ressourcenverschwendung und lehrt nix.
Atmel AVR AT Mega8 für den Einstieg, läuft aufm Steckbrett mit 8MHz Quarz und 2x 22pF nach Masse.
In C sehr einfach aufzusetzen:
DDRA = 0xff; // PortA als Ausgang
PORTA = 0x55; // jedes zweite Bit an
Sehr ausführliches, für Eisteiger gut geeignetes Daten/Programmierdatenblatt.
All der Basic-Kram ist Kinderkram.
Wenn's dann mal etwas mehr leistung sein soll, z.B. M16C oder gleich (Cortex-M3) STM32F10x.
VG,
/r.
Posted: Wed 20 Aug, 2008 8:46 pm
by icelase
Random wrote:John wrote:Wenn du schnelle Ergebnisse haben möchtest und noch wenig Programmiererfahrungen hast, kauf dir:
- Das myavr Einsteigerset
http://myavr.de/shop/article.php?artDataID=41
- und als Compiler Bascom. Für eine einfache Displayansteuerung reicht die kostenlose Demoversion.
http://www.mcselec.com/
Um ein Display anzusprechen, benötigt man in Bascom 4 Zeilen Code.
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
InitLcd
LCD "Hallo Welt"
John
lasst diesen BASIC-Blödsinn, ist doch ressourcenverschwendung und lehrt nix.
Atmel AVR AT Mega8 für den Einstieg, läuft aufm Steckbrett mit 8MHz Quarz und 2x 22pF nach Masse.
In C sehr einfach aufzusetzen:
DDRA = 0xff; // PortA als Ausgang
PORTA = 0x55; // jedes zweite Bit an
Sehr ausführliches, für Eisteiger gut geeignetes Daten/Programmierdatenblatt.
All der Basic-Kram ist Kinderkram.
Wenn's dann mal etwas mehr leistung sein soll, z.B. M16C oder gleich (Cortex-M3) STM32F10x.
VG,
/r.
Hi Random,
hab ein STK500 mit nem Atmega32 zum spielen

und es macht spaß
Natürlich benutz ich C... Bascom kram mag ich nicht.
Posted: Thu 21 Aug, 2008 2:08 am
by gento
Random wrote:
lasst diesen BASIC-Blödsinn, ist doch ressourcenverschwendung und lehrt nix.
All der Basic-Kram ist Kinderkram.
Der Herr lebt wohl einen Stern zu hoch und fährt mit Panzer zum Brötchen holen um die Ecke.
'Arm' ..... oder was ?
lg Gento
Posted: Thu 21 Aug, 2008 6:15 am
by guido
Gento wrote:
Der Herr lebt wohl einen Stern zu hoch und fährt mit Panzer zum Brötchen holen um die Ecke.
lg Gento
Mag sein, aber nicht hinterm Mond und treibt mit einem Diesel
keine S-Klasse an. Weisst du wo Thorsten Akutell arbeitet ???
Gento wrote:
'Arm' ..... oder was ?
lg Gento
RICHTIG, und zwar 7 oder 9 !!
Bei dem was die noch kosten ist alles weitere keine Diskussion wert.
Man muss sich halt einarbeiten.
Ich hab auch mit Bascom angefangen und nutze es heute noch für
"Quick and Dirty " Sachen.
Fertige Sachen benutzen ist Klasse. Aber nur auf LowLevel
kannst du auch mal beim SPI Out noch ein paar Bytes vom USB holen
wärend Bascoms "Fertigteig" noch auf das Ready vom SPI wartet und
wenn man halt auf Registerebene arbeitet weiss man auch was sich
in den SFR´s tut und versteht den Blödsinn den man da treibt.
Es muss ja nicht gleich Assembler sein obwohl mir das manchmal
lieber ist wie C .
Assembler ist logisch, C ist für Leute die mit Basic und Pascal angefangen
haben Kryptischer Blösinn. Die Syntax von C mag ich immer noch nicht
aber Basic-Kompiler für ARM gibts nur 1 1/2 und die sind beide Mist.
Ein Armer Versuch Bascom zu klonen.
Für ne "Säfety" wo man noch in ms rechnet reicht Bascom aber immer noch.
Posted: Thu 21 Aug, 2008 11:13 am
by random
Der Herr lebt wohl einen Stern zu hoch und fährt mit Panzer zum Brötchen holen um die Ecke.
lg Gento
Hehe

Ach ist das schön, sich mal wieder mit gento zu fetzen
Mag sein, aber nicht hinterm Mond und treibt mit einem Diesel
keine S-Klasse an. Weisst du wo Thorsten Akutell arbeitet ???
'Arm' ..... oder was ?
Jap, und zwar direkt bei ARM, Cambridge. Arbeitsplatz ist Keil, An ARM Company, in München.
Kannst ja mal nachschlagen, wofür die drei Buchstaben stehen
RICHTIG, und zwar 7 oder 9 !!
Bei dem was die noch kosten ist alles weitere keine Diskussion wert.
Man muss sich halt einarbeiten.
Nicht ganz richtig. ARM7 und 9 natürlich auch, aber auch sehr viel Cortex-M3 (STM32F). Und die Dinger gibtz schon fürn Apple&n'Ei.
Dazu kommen dann Sachen wie TCP/IP, RTOS, ....
Ich hab auch mit Bascom angefangen und nutze es heute noch für "Quick and Dirty " Sachen.
Hab mit BASIC aufm C64 programmiert, dann QBASIC auf MSDOS, und das wurde mir irgendwann zu langsam (vgl. meine erste PWM-Motor-Lissajous-steuerung).
Fertige Sachen benutzen ist Klasse.
Sind wohl die "Tokens" in BASIC

Wie gross war noch gleich dein print?
Aber nur auf LowLevel kannst du auch mal beim SPI Out noch ein paar Bytes vom USB holen wärend Bascoms "Fertigteig" noch auf das Ready vom SPI wartet und
wenn man halt auf Registerebene arbeitet weiss man auch was sich in den SFR´s tut und versteht den Blödsinn den man da treibt. Es muss ja nicht gleich Assembler sein obwohl mir das manchmal lieber ist wie C .
Assembler ist logisch, C ist für Leute die mit Basic und Pascal angefangen haben Kryptischer Blösinn.
Die Syntax von C mag ich immer noch nicht aber
Basic-Kompiler für ARM gibts nur 1 1/2 und die sind beide Mist. Ein Armer Versuch Bascom zu klonen.
Ich hab bisher noch keine vergleiche zwischen BASIC und C gemacht, aber der Vergleich in Codegrösse und Geschwindigkeit zwischen dem armcc und dem gcc hat mich schon sehr erstaunt!
Für ne "Säfety" wo man noch in ms rechnet reicht Bascom aber immer noch.
Ich würd' insbesondere eine Safety _nicht_ in BASIC realisieren, da ich den "Inhalt" der "BASIC-Lib" nicht kenne.
Posted: Thu 21 Aug, 2008 1:25 pm
by jojo
Random wrote:
Ich hab bisher noch keine vergleiche zwischen BASIC und C gemacht, aber der Vergleich in Codegrösse und Geschwindigkeit zwischen dem armcc und dem gcc hat mich schon sehr erstaunt!
Inwiefern?
Ist der Keil eigentlich effektiver als GCC?
Joachim
Posted: Thu 21 Aug, 2008 5:58 pm
by random
JoJo wrote:Random wrote:
Ich hab bisher noch keine vergleiche zwischen BASIC und C gemacht, aber der Vergleich in Codegrösse und Geschwindigkeit zwischen dem armcc und dem gcc hat mich schon sehr erstaunt!
Inwiefern?
Ist der Keil eigentlich effektiver als GCC?
Joachim
Auf jeden Fall! Bei µVision ist der armcc dabei, eine leicht geänderte Version der RV-Compilers von ARM, der nicht auf Cores sondern µCs "getrimmt" ist. Ansonsten der "gleiche" Compiler.
Code war glaub ich bei meiner Testroutine (PID-Regelung der Motoren des c't Bot) rund 1/3 kleiner als gcc.
Was da als Compilat rauskommt kann man per hand fast nciht mehr besser machen.
Kannst Dir mal die Demo runterladen (keil.com) und testen, geht bis 32k (davon 20k oder 22k Code).
VG,
/r.
Posted: Thu 21 Aug, 2008 7:11 pm
by karsten
1/3 überrascht mich jetzt doch - ich hätte eher auf 10...20% getippt. Eigentlich sollte der gcc nur bei Code für 8-Bit-Controller wie AVR o.ä. solch schlechten Ergebnisse bringen, bei 32 Bit sollte der eigentlich recht rauchbaren Code liefern.
Wie waren denn die Einstellungen für den Vergleich? Beide ohne Optimerung oder beide bei max. Optimierung?
Assembler ist logisch, C ist für Leute die mit Basic und Pascal angefangen haben Kryptischer Blösinn.
Als C-Programmierer sag ich dazu:
Assembler ist logisch, aber sehr kryptisch, fehleranfällig und aufwendig zu schreiben. Allerdings muss man darauf gelegentlich zurückgreifen. Pascal und Basic sind aus meiner Sicht umständlich. Bei Pascal geht mir neben dem ":=", den ganzen begin und ends die strenge Typprüfung gewaltig auf den Geist. Bei Basic-Dialekten fehlen mir meist die Bitmanipulationsmöglichkeiten und die Zeiger.
Posted: Thu 21 Aug, 2008 9:56 pm
by random
Karsten wrote:1/3 überrascht mich jetzt doch - ich hätte eher auf 10...20% getippt.
Nagel mich nicht drauf fest, aber in dem Bereich war es. Kann auch sein, dass ich "optimalen" Code erwischt habe.
Werde da mal noch ein paar Tests anstellen wenn ich Zeit hab.
VG,
/r.
Re: Beratung Mikrocontroller
Posted: Thu 21 Aug, 2008 11:04 pm
by gento
Die Anfangsfrage war :
[quote="
Und zwar hab ich vor mittels eines Mikrocontrollers ein 40x4 LCD mit zwei HD44780 kompatiblen Controllern ( also Standard zeuchs ) ansteuern.
Allerdings bin ich zwar Fachinformatiker, aber habe keine Ahnung von Mikrocontrollern ( geschweige denn Assembler

)
Welche Plattform würdet ihr einem blutigen Anfänger empfehlen?
[/quote]
Mit Arm + C anzufangen ist wohl die Dümmste Beratung.
Selbst C-Control Basic überfährt JEDES 4x40 LCD.
Wenn jemand meint Pascal oder Basic sei schlecht lesbar.Der meint wohl ein Program muß kryptisch / schlecht lesbar sein. :=C
Wie John schon auch meinte und auch ich , Bascon ist eine gute Wahl dem Zwecke.
lg Gento