Forum: Mikrocontroller und Digitale Elektronik PIC Controllerauswahl


von Michael S. (michas)


Lesenswert?

Hallo,

ich fange gerade erst an, mit der Programmierung von Microcontrollern. 
Bisher habe ich nur fertige Programme gebrannt.
Für mein Projekt benötige ich einen PIC mit 10 Eingängen und 10 
Ausgängen.
Die Taktfrequenz ist unkritisch. Interupts benötige ich keine.
Ich habe mir den PIC16F722 ausgesucht, weil er mit internem Takt 
arbeiten kann. Ist dieser dafür geeignet?

Für das Programm möchte ich nur logische Verknüpfungen realisieren.

Mit welcher Routine kann mann eine logische Oder-Verknüpfung von Eingang 
RB0 oder RB1 nach Ausgang RA0 realisieren. Ich habe schon mit MPLAP 
etwas erstellt, aber dass kommt mir sehr umständlich vor.

micha

von Franko P. (sgssn)


Lesenswert?

Hallo Micha

ich würde dir grundsätzlich keine PIC16 empfehlen. das ist für mich wie 
die Frage, ob eine Intel8080 geeignet ist, programmieren zu lernen. Ich 
würde in jedem Fall empfehlen aktuelle, state-of-the-art zu verwenden. 
Bei Microchip wäre das PIC18 oder PIC24.
Die PIC16-Familie ist sehr alt und technologiebedingt braucht man eine 
Speicherbank-Umschaltung. Die PIC18-Familie ist zum Programmieren uin 
Assembler und in C ohne EInschränkungen tauglich.

Schau dir z.B. nen PIC18F2220 oder 4320 an. Da gibts auch keine 
Speicherbank-Umschaltung mejr.

Gruß
Gerhard

von Sebihepp (Gast)


Lesenswert?

Also für logische Verknüpfungen sind eigentlich CPLDs und FPGAs da. 
Natürlich geht das auch mit einem uController.

Hmm, du benutzt Assembler? Dann wäre die Oder-Verknüpfung sehr einfach, 
wenn Glitches kein Problem sind.
1
bcf PORTA, 0
2
btfsc PORTB, 0
3
bsf PORTA, 0
4
btfsc PORTB, 1
5
bsf PORTA, 0

von frankman (Gast)


Lesenswert?

Nur als Tipp: auf der Homepage von Microchip findest du einen 
wunderbaren Konfigurator:
Du kannst auswählen wieviele I/Os, Timer, Speicher, Mips, whatever...
Dann zeigt Dir die Homepage gleich die passenden Prozessoren an.

http://www.microchip.com/productselector/MCUProductSelector.html

von frankman (Gast)


Lesenswert?

Ach ja noch was:
Generell würde ich gleich einen "Großen" Prozessor nehmen, wenn du 
später merkst, das auch der kleine Bruder ausreichend ist, um so besser.
Andersrum ist immer sche....

von -Gast XIV (Gast)


Lesenswert?

Gerhard G. schrieb:
> ich würde dir grundsätzlich keine PIC16 empfehlen.

Warum nicht? Reicht doch zum lernen völlig aus. Die größeren sind für 
Anfänger schwieriger zu lernen.

von PIC (Gast)


Lesenswert?

Michael S. schrieb:
> Hallo,
>
>
> Mit welcher Routine kann mann eine logische Oder-Verknüpfung von Eingang
> RB0 oder RB1 nach Ausgang RA0 realisieren. Ich habe schon mit MPLAP
> etwas erstellt, aber dass kommt mir sehr umständlich vor.
>
entweder in einer schleide die eingänge abfragen (ohne Interrupt) oder 
mit Timer-Interrupt auswerten und entscheidung treffen.

von Michael S. (michas)


Lesenswert?

Sebihepp schrieb:
>
1
> bcf PORTA, 0
2
> btfsc PORTB, 0
3
> bsf PORTA, 0
4
> btfsc PORTB, 1
5
> bsf PORTA, 0
6
>

Es müsste doch wie folgt gehen, ohne dass die Ausgänge flackern, wenn 
TEMP als Variable deklariert wird.

1
bcf TEMP, 0
2
btfsc PORTB, 0
3
bsf TEMP, 0
4
btfsc PORTB, 1
5
bsf TEMP, 0
6
  .
7
  . 
8
  .
9
  .
10
movf TEMP
11
movwf PORTA

von Sebihepp (Gast)


Lesenswert?

Richtig! So vermeidest du den Glitch, Michael. :)

von Peter D. (peda)


Lesenswert?

Michael S. schrieb:
> Für das Programm möchte ich nur logische Verknüpfungen realisieren.

Am einfachsten gehen logische Verknüpfungen auf dem 8051. Der hat 
spezielle Bitbefehle und das C-Flag dient als Bit-Accu.
Man kann das C mit Bits laden, mit [negierten] Bits verodern, verunden, 
es umdrehen (XOR) und Bits mit C laden.

> Mit welcher Routine kann mann eine logische Oder-Verknüpfung von Eingang
> RB0 oder RB1 nach Ausgang RA0 realisieren.

Würde auf nem 8051 so aussehen:
1
  mov c, RB0    ; c = RB0
2
  orl c, RB1    ; c = c OR RB1
3
  mov RA0, c    ; RA0 = c

Natürlich werden dabei die restlichen 7 Bits von PORTA nicht verändert 
und einen Glitch gibt es auch nicht.
Auch Interrupts, die andere Bits des gleichen Ports setzen, stören 
nicht.


Peter

von Franko P. (sgssn)


Lesenswert?

-Gast XIV schrieb:
> Gerhard G. schrieb:
>> ich würde dir grundsätzlich keine PIC16 empfehlen.
>
> Warum nicht? Reicht doch zum lernen völlig aus. Die größeren sind für
> Anfänger schwieriger zu lernen.

Hallo

das ist wohl Geschmackssache. Ich bin nicht der Meinung, dass die ollen 
Prozessoren und Mikrokontroller zum Lernen besser geeignet sind als die 
aktuellen. Es geht ja auch darum, dass man danach auch gleich mal ein 
"reales" Projekt durchziehen kann. Und da kann ich mich nur wundern, 
wenn dann die Genossen als OP nen LM741 verwenden oder als 
Mikrocontroller nen PIC16F84, manche ziehen noch älteres Zeug raus wie 
PIC16C.. oder PIC17C. Wenn ich schon in was reinkriechen muss, damit 
ichs versteh, dann bitte in was aktuelles. Und der PIC16 ist ein 
vorsintflutliches Design, wie eben die Speicherbank-Umschaltung - auf 
sowas kann ich gut verzichten. Und dann sind die ollen PIC16 auch für 
die Programmierung in C nur bedingt tauglich.

Gruß
Gerhard

von John (Gast)


Lesenswert?

Hier ist mein Vorschlag:
1
  movlw   B'00000011'   ; RB0 und RB1 mit
2
  andwf   PORTB, W      ; AND ausmaskieren
3
  btfsc   STATUS, Z     ; wenn beide Eingänge 0 sind wird Z-Flag gesetzt
4
  bcf     PORTA, 0      ; -> RA0 auf 0
5
  btfss   STATUS, Z     ; wenn Z-Flag nicht gesetzt ist
6
  bsf     PORTA, 0      ; -> RA0 auf 1

Zwischen den entsprechenden Bits, die beim ersten Ladebefehl '1' sind, 
findet die Oder-Verknüpfung statt. Es können auch mehr als zwei sein.

Gruß
John

von Maik W. (werner01)


Lesenswert?

jo würde ich auch sagen ,nehm lieber die pic18f.
die haben zwar mehr Befehle was am Anfang unübersichtlich scheint,
aber die pic16f gehören einfach nicht in dieses Jh.

am Anfang ist erstmal wichtig den Controller richtig zu konfigurieren 
damit man dann eine LED blinken lassen kann oder led an wenn taste 
gedrückt oder so

von Juppi J. (juppiii)


Lesenswert?

Pic12f675   16f627/8
ist doch für kleine dezentrale Projekte ideal,preislich auch.
Z.B. für Modellbahn Lichttechnik/ Kleinsteuerung /Überwachung.
In C  mache ich das natürlich nicht.
Wenn eine Diode blinken soll,setze ich schon Pics ein,
Haben immer mindestens 2Taster ,Reset + 1 taster,
damit kann man eine Menge von Prog Auswahl schaffen

Gruß

von Peter D. (peda)


Lesenswert?

Ja, bei den PICs geht immer gleich die große Streiterei los, welcher es 
denn nun sein soll.

Da lob ich mir die 8051 oder AVR, die sind vom 6-Pinner an aufwärts 
CPU-mäßig alle gleich ausgerüstet, nur die IO-Funktionen unterscheiden 
sich (mehr Pins, mehr Peripherie wie CAN, USB, Ethernet usw.).
Kann man einen 8051/AVR, kann man auch alle anderen und auch mit dem 
gleichen C-Compiler.


Peter

von Chris (Gast)


Lesenswert?

Naja, PIC, da wird viel zusammengewürfelt.
Z.B. würde man nie ein 20Mips AVR oder ein 100MIPS MIPS cpu in den 
gleichen
Topf werden, oder auch einen 130Mips 16bit DSP Rechenkern sowie andere.
Bei Pic wird das teilweise so gemacht, weil vom Marketing her das so in
etwa vorgeschlagen wurde, die neuen (größeren) CPU sind nur ein Upgrade
des Pic, obwohl das teilweise gar nicht der Fall ist.
Die Pic12 sind anders als die Pic14 (16fxxx) und die Pic16(18fxxx) und
die Pic16K sowie die Pic16KE(total neue ASM Befehle, kein Compiler 
unterstützt die derzeit) und die Pic24 sowie Pic32(Mips).
Von den Pic24 gibt es auch drei unterschiedliche Typen.
Teilweise findet man unter den 12cxxx sowie 12fxxx auch pic14 typen 
anstelle
der pic12 usw aufgrund von Marketing/Preisaspekte. Da wird dann viel 
generalisiert.

von Juppi J. (juppiii)


Lesenswert?

Demnächst gibt es einen 8Beiner Pic mit UART,
wie 12f675,
oder gibt es den schon?

von ...---...---...--- (Gast)


Lesenswert?

12F1822 ist "in production"
12F1840 ist "future product"

von Thomas (Gast)


Lesenswert?

Nimm einen klassischen 18F Pic. Z.B. 18F452. Für die 18F PICs gibt es 
einfach zu nutzende Bootloader (z.B. TinyPIC) und gerade am Anfang wenn 
man viel ausprobieren muss geht das neu-programmieren damit über RS232 
schneller als den PIC neu zu brennen.

von Thomas (Gast)


Lesenswert?

12f675 gibt es seit 5 Jahren wenn ich mich jetzt nicht vertue.

von kais (Gast)


Lesenswert?

Ist der PIC18F4620 gut? ich wollte ein Home Automation Projekt damit 
starten und bin mir nicht sicher ob das Ding Industrie tauglich ist oder 
lieber doch ein AVR ATmega 32 oder 128 kaufen??

danke

von Master S. (snowman)


Lesenswert?

> Home Automation Projekt
> ob das Ding Industrie tauglich
was jetzt?

> Ist der PIC18F4620 gut?
kommt darauf an, was du machen willst...

von kais (Gast)


Lesenswert?

Ja Sorry habe das Wort Home und Industrie zusammen in ein Satz 
geschrieben ;-)
Ich meinte Home Automation, aber da das Gerät unter Umständen draußen 
steht, soll auch Wetterfest und Robust sein.(Also quasi wie Industrie 
Tauglich ;-))

Ich wollte eigentlich meine eigene Home-Steuerung aufbauen. Ich bin noch 
unentschlossen ob PIC oder AVR?

-Der Microcontroller soll Temperaturen von unterschiedlichen Sensoren 
abfragen und lesen können.
-Der Microcontroller soll Teil einer Alarm-Anlage sein. Bestimmte 
Bereichen Zuhause werden mit Infrarot überwacht, dies liefern ein Signal 
an dem Microcontroller und innerhalb 30 sekunden soll der richtige Code 
eingetippt werden.
-Ein Zusatz Ethernet-Modul soll mit dem MicroController kommunizieren 
damit die Abfrage der Daten bequem über das Internet läuft.

So grob sieht mein Home-Projekt aus, also eine Mischung aus Komfort und 
Bedienen, aber auch Sicherheit und Überwachung.

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

kais schrieb:
> Ist der PIC18F4620 gut? ich wollte ein Home Automation Projekt damit
> starten und bin mir nicht sicher ob das Ding Industrie tauglich ist oder
> lieber doch ein AVR ATmega 32 oder 128 kaufen??
>
> danke

Warum sollte der PIC nicht "Industrie-Tauglich" sein?
Pics werden schon seit Jahrzehnten jedes Jahr Millionenfach verbaut. Die 
gab es schon lange vor den AVRs und Global gesehen, auch wenn gefühlt in 
DL anders erscheinen mag, sind die viel häufiger im Einsatz als die 
AVRs.

Von der Grundsätzlichen Leistungsfähigkeit sind die beiden Familien 
vergleichbar, ist wie die Frage Mercedes oder BMW.

Die "Gefühlte" Übermacht von Atmel kommt einzig daher das Atmel schon 
sehr früh einen brauchbaren C Compiler frei zur Verfügung stellte und 
gleichzeitig mit einer kleinen Produktpalette von damals recht 
Leistungsfähigen Controllern zum günstigen Preis gestartet ist.
Die Programmierung in C wurde von der Hobbyelektronikergemeinschaft dann 
sehr gerne angenommen und war ein echtes PRO-AVR argument. Microchip hat 
dann erst deutlich später mit freien Compilern nachgelegt. Daher diese 
MAssive Verbreitung besonders in der Hobbyszene, die nicht ganz den 
Marktanteil in der Industrie wiederspiegelt. (Mal von den in der 
Industrie verwendeten Controllerarten abgesehen die im Hobbybereich fast 
gar nicht präsent sind - bsp- Cypress usw.)

Allerdings haben die Pics einen Vorteil, der gerade aktuell sehr zu 
spüren ist: Sie sind sehr gut Verfügbar - Selbst sehr spezielle Typen 
sind leicht und schnell zu bekommen. Darüberhinaus gibt es bei den Pics 
von fast allen Bausteinen auch eine DIP Version so lange dies Technisch 
noch Sinn macht, wo es das bei Atmel nicht mehr gibt. (Zum Beispiel µC 
mit USB).

Einige gewerbliche Atmel Anwender haben ja gerade massive Probleme wenn 
diese Bausteine einsetzen die nicht genau zu der Handvoll Bastlerware 
gehören die alle Elektronikdealer in zigtausendfacher Stückzahl im Lager 
haben.
Und schon vor diesem Lieferengpass war es als Bastler teilweise sehr 
schwer nicht gängige Typen zu bekommen. Und selbst für "irgendeinen USB 
fähigen" gab/gibt es kaum Quellen für Einzelstückzahlen. Selbst aktuell 
könnte ich nur CSD nennen. Und ein oder zwei Lieferanten ist nicht 
worauf ich mich verlassen möchte.

Ach ja - Microchip hat eine recht gutes Framework/Firmware Library die 
einem richtig eingesetzt verdammt viel Arbeit abnimmt!
Ist allerdings nur für C!

Ob der von dir ausgesuchte Typ für dich der Richtige ist das kannst nur 
du selbst wissen. Oder du musst deine genauen Anforderungen 
bekanntgeben.

Gruß
Carsten

BTW: Falls es sich um einfache Logische Verknüpfungen handelt würde ich 
bei der Anforderung "10 In - 10 Out nur Logik" eher zu einem einfachen 
PLD tendieren...

von Carsten S. (dg3ycs)


Lesenswert?

kais schrieb:
> -Ein Zusatz Ethernet-Modul soll mit dem MicroController kommunizieren
> damit die Abfrage der Daten bequem über das Internet läuft.
>
Deine Anforderungsliste lässt sich sowohl mit PIC wie auch AVR 
realisisieren. Das tut sich nicht.

Wobei die AVRs wenn ich das jetzt richtig im Kopf habe dazu auf jeden 
Fall noch einen zusätzlichen Ethernetcontroller brauchen. Der Microchip 
ENC28J60 wird da gerne genommen.
Hättest also auf jeden Fall sowohl Atmel wie auch Microchip zusammen auf 
dem Board! (Wäre ja schlecht wenn MC nicht Industrietauglich wäre ;-) )

Für PICs kannst du natürlich auch den ENC28J60 nehmen, oder du 
verwendest gleich einen der 18F mit Ethernetschnittstelle. Da ist dann 
natürlich nichts mehr mit Assembler. C ist dann schon Pflicht.
Dafür gibt es von Microchip eine Prima Firmware die du dann nur für 
deine Bedürfnisse Modifizieren musst!

Gruß
Carsten

EDIT: Ach ja: Codecontrolle und Zeitmessung sind aber keine "einfachen" 
Logikverknüpfungen mehr. Wenn dann noch Ethernet dazukommt...
Das ist schon die Domäne der µcontroller. (Auch wenn die natürlich auch 
nur auf Logikgatter basieren...)

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.