PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmel vs. PIC



ThunderD
30.10.2004, 14:12
Dai n diesem Forum mehr los ist als im PIC fForum stelle ich meine Frage mal hier und hoffe das die Meinungen denn noch Objektiv bleiben :)

Was sind die Vor/Nachteile der beiden µC ? Das der Code bei den Atmels auf denen µC dieses Herstelles kompatibel ist mag schon mal ein Vorteil sein, aber gibt es sonst noch etwas?

Möchte in nächster Zeit mal wieder was mit µC machen. In der Schule haben wir damit mal ein bisschen gespielt, nur für zuhause hab ich da nichts.

Wo findet man günstige Testplatinen für beide Varianten? Oder kommt man günstiger wenn man sich zb. eine Steckplatine vesorgt und das nötigste auf dieser aufbaut? Felxibler ist man damit sicherlich.

Wenn man die Methode zum Programmieren in der fertigen Schaltung verwendet, ist es dann auch möglich die Zustände der Register noch auszulesen oder nicht?

Hoffe auf Antworten

Thunder

Roberto
30.10.2004, 14:36
Hallo Thunder

Schau mal hier rein:
http://www.mikrocontroller.net/articles/
Letzter Artikel

oder hier:
http://www.mikrocontroller.net/forum/read-1-30642.html
(lange)

Ich habe zuerst auch mit Pic probiert und jetzt mache ich mit AVR
Wenn Du dann noch Bascom verwendest, kannstDu in Basic programieren und das Programm ist dann fast so schnell wie reines Assembler :-)

m.f.G. Roberto

30.10.2004, 15:21
" Basic programieren und das Programm ist dann fast so schnell wie reines Assembler "

Wenn du das wirklich glaubst, dann tust du mir leid ...

30.10.2004, 15:22
... es sei denn, du hast nen sehr schlechten Programmierstil in Assembler.

ThunderD
30.10.2004, 16:15
so hm die avrs sind also wenn ich mich nicht irre bissl einfacher zu programmieren und auch schneller. Brenner braucht man auch nicht unbedingt einen gut. das ISP teil müsste ich mir nochwo besorgen. man könnte das auch selber bauen aber ob man da soviel billiger kommt is auchdir frage.

mal schaun ob elv und co. den adapter schon haben oder nicht.

ich danke mal. jetzt wär ein oszi auch noch ein hit:)

Pascal
30.10.2004, 17:57
meines Wissens nach haben die PICs auch eine Taktteilung, was bedeutet, dass wenn man extern 10MHz anschließt, die 10MHz durch einen bestimmten Wert(ka, welcher genau) geteilt werden
der PIC läuft dann also nicht mit dem Takt, den man anlegt

beim AVR ist das nicht so, wenn man an den 8MHz anlegt, läuft der auch mit 8MHz

berichtigt mich, wenn ich Unsinn erzählt hab...

Roberto
30.10.2004, 18:42
>>" Basic programieren und das Programm ist dann fast so schnell wie reines >>Assembler "

>Wenn du das wirklich glaubst, dann tust du mir leid ...

Wie schnell würdest Du den Bascom sehen??
Auch im Vergleich zu C ??

30.10.2004, 19:51
Nachtrag:

Gibt es vielleicht ein einfaches Beispiel, dass man mal in Assembler, einmal in Bascom und einmal in C schreiben kann, mit Taktausgang.
Dann könnte man die einzelnen Sprachen vergleichen... ?!

Ein einfaches Beispiel, dass sogar ein Anfänger wie ich, in Bascom hinbekommt. und das dan einen Takt ausgiebt, wo ich mit einem Frequenzmesser , den vergleich messen kann. ;-)

Roberto
30.10.2004, 19:53
ups, da war ich wohl nicht eingeloggt.
(das obige war ich :-)

ThunderD
30.10.2004, 20:13
das asm schneller is als alles andere is eh irgendwie klar.

aber sobald mit den hochsprachen losgeht, würde ich sagen kommt es auch extrem auf den compiler drauf an.

Roberto
31.10.2004, 03:14
Hallo ThunderD

Klar ;-), Assembler ist ultimativ :-)

Wie schnell schätzt du den Bascom im vergleich zu anderen Hochsprachen wie z.B. "C" ein? (oder zu Assembler)

Ich hatte von Bascom auch das Vorurteil, dass es eben so langsam wie das alte Basic ist, stimmt aber nicht.. (weil eben Compiler..)

31.10.2004, 07:09
Hallo Roberto,

dann denk dir doch mal ein Bsp. für irgendeine Berechnung oder sonstiges aus, nur mach es nicht zu einfach, sonst ist es nicht mehr repräsentativ. Ich schreibe dir dann dafür ein C-Programm.

Wenn man den Threads auf mikrocontroller.net die Threads verfolgt, kann man aber nur zu dem Schluß kommen, dass bspw. avr-gcc schon eine Spur schneller als BASCOM ist. Ich würde das allerdings nicht negativ sehen, weil für Einsteiger BASCOM wesentlich besser geeignet scheint, auch wenn man da wieder das Problem hat, dass dem Benutzer dadurch zum Teil auch grundlegende Funktionsweisen des MC verborgen bleiben.

Eigentlich ist die Diskussion aber müßig, wen interessierts, was spielt es für eine Rolle?

Hellmut
31.10.2004, 10:59
Hallo Freunde

Ich denke für den AVR spricht die Qualität der beiträge und der Unterstützung die man in diesem Forum findet und erhält. Auch der BASCOM Compiler ist ein starkes Argument. Ich habe hier begonnen mit der festen Absicht in Assembler zu programmieren, aber wenn man festellt das im Sprachumfang von BASCOM schon viele Funktionen drin sind die man sonst erst mühsam selber entwickeln muß, dann habe selbst ich Sturkopf mich überzeugen lassen. Dazu kommt das man hier im Forum soviel Code finden kann mit dem man weiterführend arbeiten kann. Zu guter letzt, Assembler Code ist so einfach in ein BASCOM Program einfügbar, das man wo zeitkritisch jederzeit die Vorteile des Assembler nutzen kann. Die hier empfohlenen Bücher, das von C.Kühnle, das von Walter und das zu BASCOM Sprachbefehle, ergänzen die Umgebung vortrefflich.

Nicht zuletzt eigentlich möchte ich auf die Produkte von RobotikHardware nach den Richtlinien diesees Forums hinweisen. Hier kann man preiswert hochwertige und sehr gut konzipierte Produkte erwerben. Je mehr man sich mit ihnen beschäftigt, desto mehr erkennt man wie clever konzipiert die sind. Ich bin übrigens nur ein zufriedener Benutzer und kein an RobotikHardware oder Atmel Beteiligter.

ThunderD
31.10.2004, 13:57
So bestellt wird wahrscheinlich bei elv. nur warum finde ich da keine quarzoszillatoren? einen beheizten quarz braucht man ja nicht wirklich :)

Lekro
01.11.2004, 22:05
das asm schneller is als alles andere is eh irgendwie klar.Keinesweg, das ist leider ein weit verbreiteter Irrtum.

Bei heutigen PC-Prozessoren wie P4 oder Athlon-XP (oder die 64-Bit-CPUs) ist es extrem schwer bis nahezu unmöglich, in Assembler schnelleren Code zu schreiben als den, den ein guter C/C++-Compiler generiert.
Wenn man nicht gerade ein Assembler-Guru ist und die Datenblätter dieser CPUs im Schlaf aufsagen kann, hat man kaum eine reale Chance einen optimierenden Compiler zu schlagen.

Auf Mikrocontroller lässt sich das natürlich (noch) nicht 100% übertragen, weil diese bei weitem noch nicht die Komplexität eines P4 aufweisen. Zur Zeit kann man daher auch mit grundlegenden Assembler-Kenntnissen schnelleren oder sparsameren Code erzeugen. Leider ist es so, dass Assembler nicht gerade die übersichtlichste der möglichen Programmiersprachen ist, weswegen es für größere Projekte doch häufig ausscheidet. Die Wartung des Codes wird einfach zu aufwändig. Manchmal eignet sich Assembler für zeitkritische Routinen, wenn der Compiler etwas zu viel des guten erzeugt.
Wenn man z.B. in C einen Funktionsaufruf in einer Interruptroutine macht, sollte man schon wissen was das auf Assemblerebene bedeutet.

Man darf aber auf gar keinen Fall den Fehler machen und die Codegenerierungs-Leistung von guten C/C++-Compilern unterschätzen.
Im Zweifelsfall kann man den C/C++-Compiler jederzeit überreden, Assembler-Code auszuspucken und selbst Hand anlegen.

Zu Bascom:
Ich habe Bascom nie benutzt. Nach dem, was ich davon gehört habe, vermute ich aber stark, dass der generierte AVR-Code ziemlich gut sein kann. Das liegt aber nicht gerade am optimierenden Bascom-Compiler, sondern eher daran, dass keine komplizierten Ausdrücke möglich sind. Die (man verzeihe mir den Ausdruck) relativ primitive Sprache lässt sich ziemlich einfach nach Assembler übertragen, viel optimieren muss man da gar nicht.
Es hängt bei Bascom IMHO also ziemlich am Programmierer, ob der Code schnell, sparsam oder beides ist. Langsamer als Assembler-Code ist er dabei nicht unbedingt (außer Bascom optimiert _gar nicht_ und übertragt wirklich stur 1:1 nach Assembler).


p.s.: Ein selbstgebauter ISP-Adapter ist normalerweise um einiges billiger als ein gekaufter. Allerdings hast du dann natürlich das Risiko, dass er nicht funktioniert. Bei einem sehr einfachen Adapter sollte dieses Risiko aber vernachlässigbar sein. Du baust ihn auf, wenn er nicht geht und du nicht lange nach dem Fehler suchen willst kannst du dir immer noch einen kaufen.


(*puh* Monster-Posting; ich sollte mich vielleicht mal registrieren)

maw_hn
02.11.2004, 06:04
Hallo,

also zuerst einmal zum eigentlich Thema dieses Threads: Ich würde jederzeit nen AVR bevorzugen. Gründe hierfür sind der einfache ISP, die gute Unterstützung und Datasheets von Atmel unddie weite Verbreitung.

Nun zu den Programmiersprachen. Uerst einmal muss ich Lekro Recht geben. Bei modernen Prozessoren biste mit nem schönen C-Code oftmals schneller. Aber auf RISC- Prozessoren ist dass eben nicht der Fall. Ich gehe hierbei einen Kompromiss ein: Ich schreibe meine Programme auf nem C- Compiler und nur zeitaufwändige Berechnungen oder sehr Zeitgenaue Port- Arbeiten in Assembler. Sobald ein Programm ne gewisse Grösse erreicht wirds in Assembler einfach zu unübersichtlich...

MfG Marco