Forum: Mikrocontroller und Digitale Elektronik AVR oder PIC


von Dirk (Gast)


Lesenswert?

Hallo.

Ich möchte in die Mikrocontrollertechnik einsteigen und habe mal ein 
bisschen was im Netz drüber gelesen.
Für den Einstieg sind wohl AVR oder PICs am besten, da die noch nicht so 
hochkomplex sind aber trotzdem noch zeitgemäß sind.

Aber was ist besser geeignet? PICs oder AVRs
Für welche Plattform stehen mehr kostenlose Entwicklungswerkzeuge zur 
Verfügung und welche ist einfacher zu programmieren/ zu handhaben?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Es gibt keine eindeutige Antwort, ohne jemandem zu nahe zu treten. Am 
besten informierst Du Dich beim Hersteller, lädst Dir dort die 
Datenblätter und die Programmiersoftware herunter, guckst Dir alles in 
Ruhe an und vergleichst selber, was für Dich am ehesten in Frage kommt. 
Auf diese Weise habe ich mich damals für die AVRs entschieden.

von Robin T. (Gast)


Lesenswert?

Außerdem könntest du die Suche im Forum benutzen. Gibt massenweise 
solcher PIC vs. AVR Beiträge.

von Dirk (Gast)


Lesenswert?

Gibts für PICs auch eine kostenlose Entwicklungsumbegung vom Hersteller? 
Von Atmel gibts ja AVR Studio welches ich ganz gut finde da man schön 
simulieren kann. Habe in dem AVR Studio auch schon eine "Trockenübung" 
mit dem Simulator gemacht. Ist halt alles Assembler das find ich aber 
nicht so schlimm, da ich C oder was es sonst noch für Microcontroller 
gibt auch nicht wirklich programmieren kann, lernen muss ich also 
sowieso.

von Robin T. (Gast)


Lesenswert?

MPLAB gibts bei Microchip

von Arne Z. (zachso)


Lesenswert?

Bei Microchip gibts zwei Studentenversionen der C-Compiler. Asm-Compiler 
gibts so weit ich weiß auch, beides kostenlos.

für den einstieg in die PIC18 kann ich dir die seite sprut.de empfehlen. 
Bedenke aber bitte dass der einstieg in die PIC's etwas teurer ist als 
der in die AVR da letzter einen Bootloader haben und somit einfacher 
programmiert werden können (kenne mich da aber nicht so super aus, 
benutze selber die PIC) die PIC hingegen brauchen allerdings einen 
Brenner, den gibts allerdings schon für 50€ als Nachbau mit 
debug-funktion (such mal in diversen shops nach ICD2-Nachbau, wirste 
sicher was finden). Die Controllerchips von Microchip an sich sind auch 
noch etwas teurer als die AVR's, microchip schickt dir im gegenzug 
allerdings bereitwillig samples, dauert nur ne weile (Kommen über umwege 
wenn ich das recht verstanden habe). Samples sind kostenlos, dürfen aber 
weder verkauft noch in geräte eingebaut werden die verkauft werden, sind 
also nur für die Übungszwecke gedacht(wobei das beiden meisten Bastlern 
wohl ausreicht).
zuletzt bleibt noch zu sagen dass es für die AVR mehr Homepages etc. 
gibt wo man abgucken kann udn wo fertige projekte zu sehn sind, was auch 
nicht unterschätzt werden sollte. Allerdings gibts so was auch für die 
PIC und wenn man die Programmiersprache erstmal halbwegs kann dann 
interessiert einen der Quellcode von anderen Projekten eh meist nicht.

beide haben also ihr vor-und Nachteile, du musst also abwägen was für 
dich persönlich das besste ist. schreib erstmal das ein kleines programm 
für jeden chip und dann kannst du danach entscheiden welchen du benutzen 
möchtest.

mfg, Zachso

von Jupp (Gast)


Lesenswert?

AVRs haben keinen Bootloader. Den mußt man genauso einprogrammieren wie 
bei PICs, denn auch für die gibt es Bootloader.

von Arne Z. (zachso)


Lesenswert?

hm, mir war so als ob einige AVR's mit einegebranntem Bootloader 
ausgeliefert werden aber kann auch quark gewesen sein, wie gesagt, ich 
weiß es nicht wirklich.

von Rooney B. (rooney)


Lesenswert?

Bootloader runterladen, reinbrennen, fertig!!

Gibt zahlreiche Bootloader im Netz, die für dich in Frage kommen.

Hab für den PIC18F8722 einen Bootloader geschrieben, der auch auf 
externen Speicher schreiben kann.





----------------------------
www.poms-engineering.at

von Rudi (Gast)


Lesenswert?

Zu beachten ist allerdings das der PIC durch seine Pipelinestruktur nur 
effektiv mit Takt/4 läuft. Wenn es jetzt was extrem schnelles sein soll 
muß das beachtet werden. Ein ATiny bekommt mit 4 MHz locker ein 
FBAS-Videosignal hin, ein PIC braucht 20 MHz.
PS: So weit ich verstanden habe ist diese "Runterreglung" darauf 
zurückzuführen das der PIC auf diese Weise Inkonsistenzprobleme durch 
die Pipeline vermeiden will. Der AVR scheint da Bypässe oder so etwas zu 
haben um den Fall zu vermeiden das z.B. ein Register gelesen wird dessen 
neuer Inhalt noch in der Execute-Stufe herumlungert.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ein AVR ist ein echter RISC, der ein Register liest, verändert und 
schreibt - in einem Takt. Einige Sprungbefehle oder 
Hardware-Multiplikation brauchen 2 Takte, da Adressen gesichert bzw. 2x 
auf Register geschrieben wird. Ein paar Sprungbefehle benötigen <=3 
Takte. Im Datenblatt diverser AVRs ist diese Arbeitsweise anschaulich 
beschrieben. Insgesamt ist bei allen AVRs der Kern sehr ähnlich 
aufgebaut, lediglich die Namen und Speicherzellen einiger Register sowie 
der Funktionsumfang variieren von Typ zu Typ. Das macht eine 
Codeportierung auch unter Assembler sehr einfach.

von St182 (Gast)


Lesenswert?

Original von :  Travel Rec
Im Datenblatt diverser AVRs ist diese Arbeitsweise anschaulich
beschrieben. Insgesamt ist bei allen AVRs der Kern sehr ähnlich
aufgebaut, lediglich die Namen und Speicherzellen einiger Register sowie
der Funktionsumfang variieren von Typ zu Typ. Das macht eine
Codeportierung auch unter Assembler sehr einfach.




Es ist beim PIC auch nicht anders.

von Willi (Gast)


Lesenswert?

@Rudi,
>Ein ATiny bekommt mit 4 MHz locker ein FBAS-Videosignal hin

Da übertreibst du aber etwas, ohne Zusatzhardware schafft der das nie.
Kannst du mir das mal zeigen, oder ist es mehr "Hörensagen"...
Allein der Farbhilfsträger mit 4,43 MHz überfordert den Atiny mit 4 MHZ 
schon völlig. Das schafft nicht mal ein AtMega mit 16MHz.

MfG Willi

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Willi wrote:

> Allein der Farbhilfsträger mit 4,43 MHz überfordert den Atiny mit 4 MHZ
> schon völlig.

Ich vermute mal, er meint hier eher ein (monochromes) BAS.  Da gibt's
aber in der Tat Beispiele, wie man selbst mit einem ATtiny13 noch
einen BAS-Monitor direkt ansteuert.

von Rüdiger K. (sleipnir)


Lesenswert?

Das mit dem FBAS-Signal ist kein Scherz. Allerdings meinte ich die 
S/W-Version. Ich hab auf einen Tiny15 schon den recht vielversprechenden 
Anfang eines PingPong-Spiels geschrieben (die beiden Schläger waren 
schon auf dem Fernseher). Gescheitert ist es erst einmal daran das es 
eine dumme Idee war den Reset-Eingang als Eingang für eine 
Steuerungstaste freizugeben.....
4 MHz sind übrigens deshalb eine nette Frequenz weil dann eine 
Zeilenbreite gerade die Zeit zwischen zwei Zählerüberlüfen ist...
Farbe dürfte man mit einem Tiny13 (20 Mhz max.!) oder einem 2313 locker 
hinkriegen.

Was das mit dem Takt/4 beim PIC angeht: auch der PIC ist ein RISC, und 
auch er hat eine Pipeline. Genau die macht ja das Problem. Pipelines 
oder Fließbandverarbeitung nimmt man ja, um den Durchsatz zu steigern. 
Dazu legt man die typischen 4 Schritte bei einer Befehlsausführung 
hintereinander, eben wie bei einem Fließband. Diese Schritte sind 
üblicherweise:
 1. Befehl holen & dekodieren
 2. Operanden holen
 3. Befehl ausführen
 4. Ergebnis zurückschreiben
Probleme gibt es allerdings, wenn benachbarte Befehle 
Datenabhängigkeiten haben. Nehmen wir mal den kurzen Codeabschnitt
 inc r0
 shl r0
In der Pipeline würde das dann so aussehen

1. Takt
 Befehl holen:    inc r0
 Operanden holen: -
 Ausführen:       -
 Zurückschreiben: -

2. Takt
 Befehl holen:    shl r0
 Operanden holen: inc r0
 Ausführen:       -
 Zurückschreiben:

3. Takt
 Befehl holen:    -
 Operanden holen: shl r0
 Ausführen:       inc r0

Genau da ergibt sich ein Problem. Im 3. Takt holt sich shl r0 den Inhalt 
des Registers r0. In diesem sollte eigentlich das Ergebnis von inc r0 
stehen. Doch dieses Ergebnis wurde noch nicht zurückgeschrieben!
Beim PIC hat man sich damit beholfen das man die Pipeline eigentlich ad 
adsurdum geführt hat; jeder Befehl rutscht für sich durch die Pipeline, 
und erst wenn er durch ist darf der nächste ran. Der AVR scheint sofort 
zurückschreiben zu können bzw. evtl. sogar ein Bypass zu haben.
Übrigens: solche Probleme waren der Grund dafür warum man bei der SPARC 
nach arithmetischen Befehlen etc. ein NOP einfügen mußte!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rüdiger Knörig wrote:

> Das mit dem FBAS-Signal ist kein Scherz. Allerdings meinte ich die
> S/W-Version.

Ja, eben: BAS, nicht FBAS.  Bild-, Austast- und Synchronsignal, aber
keine Farbinformation.  Für die steht nämlich das ,F'.

> Übrigens: solche Probleme waren der Grund dafür warum man bei der
> SPARC nach arithmetischen Befehlen etc. ein NOP einfügen mußte!

Naja, nicht ,Problem', sondern 'design'.  Die Idee dahinter ist, dass
sich ein Programmierer um sowas nicht mehr zu Fuß kümmert, sondern
dass ein optimierender Compiler in der Lage ist, mit solchen
Eigenheiten der CPU zurecht zu kommen, d. h. er wird da keinen NOP
eintragen sondern einen sinnvollen Befehl, der vom Ergebnis des
vorherigen Befehls nicht abhängt.  Ähnliches für Sprungbefehle: da die
Dekodierung des Sprunziels einige Zeit in Anspruch nimmt, kann man
nach dem Sprungbefehl (im delay slot) noch einen weiteren Befehl
unterbringen, der aber vor dem Sprung noch abgearbeitet wird.

Damit kommt man mit einer vergleichsweise einfachen CPU (geringe
Komplexität => geringe Fehleranfälligkeit, geringer Stromverbrauch)
auf gute Performance, indem man diese in den Compiler verlagert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.