• 27.04.2024, 15:15
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 00:23

hm.. das, wie der controller von innen funktioniert, würde mich auch interessieren.

und dann gibt es noch so kleine doofe programme, denen ich schon seit lebenzeit mal vorhatte, so eine kleine manipulation zu verpassen. und um da dann mit dem debuger arbeiten zu können, wird mir ja wohl nix anderes übrig bleiben, als den assembler etwas zu studieren.
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 00:29

mal ein kleines beispiel:

Du willst einen IO-Pin des uC setzen / rücksetzen.

In Assembler musst Du dafür die Adresse des Ports mit irgendwas verodern z.B. Du willst das 4te Bit eines Ports setzen, das wäre dann ungefähr

Quellcode

1
OR #3c3, 0x4

die genaue asm-syntax kenn ich jetzt nicht, aber das soll heißen, "Verodere Adresse 3c3 mit hex 4", also setze das vierte bit.

So, in C kann man sich dafür nun schöne defines schreiben:

Quellcode

1
2
3
4
5
#define PORT1 0x3c3
#define BIT4    (0x1 << 4)
#define SET_BIT(port, bit)   port &#124;= bit

SET_BIT(PORT1, BIT4)


ZUM BEISPIEL!
Also das kann man sicher auch anders machen, aber du kannst halt dein gesamtes C-Arsenal drauf loslassen. Für so triviale Sachen wie Bit-Setzen wird das jetzt wahrsch. nicht so deutlich, aber wenns komplizierter wird sind dann halt schnell ne ganze handvoll asm-codes in einer einfachen c-anweisung untergebracht. der c-code ist auf jeden fall auch ohne kommentar in jeder zeile gut lesbar, udn vor allem wartungsfreundlich.

Und ich kann dir mi 99%iger Sicherheit sagen, dass der Code SET_BIT... usw in genau den obigen Assembler-Befehl vom Compiler übersetzt wird.

Das aber nur zur Info, als für kleine Sachen ist asm sicher ne gute Wahl... aber zumindest mir gehts halt so:
Jetzt hab ich das implementiert, jetzt kann man noch das unterstützen, und hier erweitern... und da auch noch... und dann wird der kleine Controller schnell ZU klein, und der asm-Code unwartbar.
Also schreib ich lieber gleich C  ;)
C programmers never die. They are just cast into void. Neues moddingtech.de Portal online!

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 00:39

hm.. ok. ich guck mir das assembler mal an. und wenn ich merke, daß es ne katastrophe wird, dann mach ichs halt mit C . :)
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 01:15

hm.. ein ass im ärmel gäbe es aber noch:
gibts nicht irgendeinen kompiler, der mir aus dem C-code auch eine assembler-version erstellt, damit ich in ungefähr eine einsicht in das habe, was der microcontroller tatsächlich macht und dann zur not was von hand noch optimieren kann, für denn fall, "daß der c-kompiler mich falsch versteht", und deshalb das in C geschriebene mal in einer für den controller viel zu aufwendigen art und weise übergibt..
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 01:23

ich glaube ned dass du da noch viel optimieren kannst aber die meisten compiler erzeugen wirklich nur assembler code den se dann halt für den controller nomma übersetzen
den kannst der dann natürlich auch nomma anzeigen lassen ;)

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 02:50

das ist gut. :) dann werde ich, wenn ich zeit habe, mir das mal ansehen, was der C-kompiler so anders als ich sieht, wenn ich den das machen lasse, statt das assembler selbst zu schreiben.. :)
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 15:05

Zitat von »Spunky«

Ja, das mit den Ports ansteuern in C ist gaaaaanz schwer. Hier mal ein Beispiel:

Quellcode

1
2
3
4
5
6
7
/* Port B komplett auf 1 setzen */
PORTB = 0xFF;

/* Jetzt ein eizelnes Bit zurücksetzen */
cbi(PORTB,3);
/* Jetzt ein eizelnes Bit setzen */
sbi(PORTB,3);

Verstanden?

Nimm zum C-Programmieren AVRedit. Komplettes Paket mit Editor, gcc usw.

Spunky



Das ist doch aber auch nicht wirklich viel anders als in Assembler ? ( hab seither immer in Assembler programmiert, kann also kein C und hab davon auch keine Ahnung )


-RedHead

Spunky

Junior Member

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 15:37

Stimmt. Im Prinzip sind die Portbefehle denen von Assembler sehr ähnlich. Der Unterschied zwischen C und Assembler wird aber dann bei Schleifen und Bedingungen sehr deutlich. Auch der Aufruf von Funktionen ist IMHO einfacher.

Ein

Quellcode

1
2
3
for(i=0,i<256,i++) 
  { Portb=i;
    wait_ms 100; }
ist für die meisten Einsteiger in die Controllertechnik einfacher, als sich erst mühsam Assembler zu lernen. Bei größeren Programmen sind Hochsprachen doch etwas einfacher, als Assembler. Viele Konstrukte sind dann übersichlicher. Allerdings lernt man mit Assembler den Mikrocontroller erst richtig kennen.

Es ist halt immer auch eine Geschmacksfrage oder Glaubensfrage, wie man seine Programme schreibt. Jede favorisiert irgendwann seine Sprache, mit der er am besten zurecht kommt.

Spunky

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 16:33

stimmt, is wirklich irgendwo ne glaubensfrage
und ich glaube nunmal dass assembler stinkt ;D ;)

Spunky

Junior Member

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 16:38

Wer Assembler hasst, ist meistens ein Faulpelz! ;D ;)

Ich gebe ja zu, das ich gerne mal Bascom nehme. ;)

Spunky

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 16:58

mist, ich wurde ertappt ;D

is aba ned nur dass ich faul bin, ich steh einfach mehr auf c, einfacher und logischer kann ne programmiersprache kaum noch aufgebaut sein wennst mich fragst (n halbwegs vernünftiger programmierstil vorrausgesetzt ;))

außerdem hat man da viel weniger möglichkeiten fehler einzubaun weil man sich zb ned drum kümmern muss welcher befehl welches register verändert, wann, wo und wie ich daten evtl sichern muss, ...

alles in allem wirklich besser als assembler

ps: obiger text enthält größere mengen von 'meine meinungTM', sollte sollte jmd das anders sehen is das zwar sein gutes recht aber überzeugen wird er mich trotzdem ned könne :P ;)

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 18:42

Hallo, noch ein Argument, C zu programmieren:

Die AVR-Controller von Atmel sind bereits für C bezüglich der Registersätze optimiert, wäre Quatsch, diesen Vorteil nicht zu nutzen. Ich stelle mir gerade mit Grauen vor, ein komplexeres Kommunikationsprotokoll wie CANopen oder IAP in Assembler schreiben zu müssen...

Ausserdem: Alle Ingenieure können (mindestens) C ;D !

Spunky

Junior Member

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 18:43

Zitat von »r1ppch3n«


außerdem hat man da viel weniger möglichkeiten fehler einzubaun weil man sich zb ned drum kümmern muss welcher befehl welches register verändert, wann, wo und wie ich daten evtl sichern muss, ...


Is nicht böse gemeint, aber du weisst, daß in sicherheitskritischen Bereichen C teilweise sogar verboten ist? Bei Militärs, Raumfahrt und Medizin kann man sich keine Pointer-Fehler und Bufferoverflows leisten. C bietet da ein paar böse Fallen.

Aber davon ab prgrammiere ich auch gerne in C. Assenbler setzt, wie du sagst, etwas mehr Mühe und Fleiss vorraus. Aber ein geüberter Assembler-Programmierer hat auch keine Probleme mit den Registern. Wer einen Macro-Assembler gut beherrscht hat nach einiger Zeit auch fast eine einfache Hochsprache.

Ich programmiere halt meist in Hochsprachen, weil ich auch andere Systeme bearbeite. Hier ein bisschen awk und Shellscript, dort PHP und Perl. Da ist nach einer kleinen Pause im Mikrocontrollerprogrammieren der Rückeinstieg über C oder Basic einfacher. Die Schleifen und Bedingungen sind in den Hochsprachen doch ähnlicher als in Assembler. ;)

Spunky

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 19:19

ach ja... pointer...
ok, damit kann man wirklich viel kaputt machen wenn man mist baut ;D
andrerseits haben die mich auch in assembler scho das eine oder andre ma 'geärgert'... (nich dass ich nich damit umgehen könnte aber wenn man doch ma n winzigen denkfehler macht hat steht man wirklich gleich vor nem super gau... ::))

trotzdem bleib i meiner lieblingssprache treu
und bei den sachen die ich progge brauch i mer auch kei gedanken machen dass jmd draufgeht wenn das teil sich ma aufhängen sollte, is momentan ja wirklich ned mehr als n kleines hobby ;)

Spunky

Junior Member

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 19:38

Zitat von »r1ppch3n«

...assembler ... (nich dass ich nich damit umgehen könnte aber wenn man doch ma n winzigen denkfehler macht hat steht man wirklich gleich vor nem super gau... ::))


Das stimmt. Bei C erkennt man leichter Fehler im Programm. Bei Assembler wird es schonmal richtig kniffelig. Vor allem bei Mikrocontroller ist das Debugging mühsam. Zum Glück gibt es heute die Atmels mit FLASH. Vor gut 15 Jahren musste ich für meine 8051 immer ein EPROM brennen und dann testen. Später habe ich die Programme teilweise direkt im HEX-Editor des Brennprgramms editiert. Heute klickt man nur noch auf _Compile_ und _Flash_ und dann gucken obs läuft.

Spunky

Re: wo atmel microcontroller am billigsten?

Montag, 12. April 2004, 20:21

hatte das eigentlich mehr auf die pointer bezogen, einfach praktisch, einfach genial, einfach ne schlimme teilweise schwer zu quelle
wollt se trotzdem nich missen ;)

ps: ein hoch auf das in system debugging ;D ;)