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
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
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 |
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
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....
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.
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.
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 |
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
-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
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
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
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ß
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
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.
Demnächst gibt es einen 8Beiner Pic mit UART, wie 12f675, oder gibt es den schon?
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.
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
> Home Automation Projekt > ob das Ding Industrie tauglich was jetzt? > Ist der PIC18F4620 gut? kommt darauf an, was du machen willst...
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.