PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : erster Versuch einer Hardware für den PIC 16F84



Lucie
26.08.2011, 16:06
Hallo zusammen,

Ich wollte mich mal an dem programmieren in Assembler und der vorherigen Planung einer Hardware für einen PIC versuchen.
Ich habe mich für den 16F84 entschieden.
1- Habe geplant an alle RB und an 4 RA einen Vorwiderstand mit einer LED gegen Masse zu schalten.
2- Vdd ist 9V.
3- An RA0 möchte ich gerne einen Schalter anschließen der zwischen 2 Spannungen(a und b) schaltet, sodass ich beim prgrammieren später
sagen kann, wenn a dann hätt ich gerne folgende Ausgänge(x) freigeschaltet und wenn b dann hätte ich gerne alle LED´s als Lauflicht.
4- MCLR lass ich frei???
5- OCS1, kommt ein RC Ozillator angeschlossen, ist der notwedig für das Lauflicht?
6- OSC2 bleibt frei

So würde ich die Schaltung erstmal aufbauen. Ist das alles so möglich? der habe ich da alles total falsch verstanden?

7- Im Datenblatt steht, dass die Spannung an allen Pins -0,3V bis (VDD +0,3V) ist. Woher weiß ich jetzt welche Spannung an den I/O´s
rauskommt? Oder muss ich den Wert auch programieren, weil danach muss ich die Vorwiderstände dimensionieren.
8- Kann ich mit der Programmierung überhaupt feststellen, ob ich an RA0 Spannung a oder b habe?

Ich würde mich freuen, wenn mir jemand sagt, ob mein Vorschlag so umsetzbar ist, oder mir alternativen Vorschlägen würde.
Mir geht es zur Zeit nur um die Hardware, wie ich das dann später programmiere muss ich dann sehn.
Habe mir das Buch "Steuern mit PIC Mikkrocontrollern" zu Hilfe genommen, aber meine Fragen wurden nicht beantwortet. Ich hoffe Ihr könn mir weiter helfen.

Danke,
Gruß
Lucie

PICture
26.08.2011, 17:03
Sorry, aber bei mir im Zimmer sind jetzt +30°C, deshalb momentan nur: https://www.roboternetz.de/wissen/index.php/PIC_Assembler . ;)

stoerpeak
29.08.2011, 00:44
Vdd = 9V scheint mir etwas viel. Ich denke dass der PIC16F84 wie die meisten Anderen nur Vdd = 2 - 5,5Volt verträgt. Beim Einschalten eines Portpins liegt diese Spannung dann am Vorwiderstand der LED an. Wird der PIC z.B. mit einer 3V Knopfzelle betrieben, so liegen diese 3V dann auch an den "gesetzten" Portpins an.
Die Angabe im Datenblatt mit +- 0,3V bezieht sich auf die Verwendung der Portpins als Eingang. Also darf ein Eingang beim Betrieb an 3V einen Bereich von -0,3V bis 3,3V haben.

Gruß Stoerpeak

Lucie
29.08.2011, 16:24
Hallo,
2- VDD = 3V möglich (-0,3V bis 7,5V)
1- Daraus ergibt sich dann ein Vorwiderstand von 500R pro Ausgang

Könnte mir vlt noch jemand bei den anderen Fragen helfen?
Danke

PICture
29.08.2011, 16:48
Hallo!

http://www.rn-wissen.de/index.php/PIC_Assembler#Grundbeschaltung
http://www.rn-wissen.de/index.php/PIC_Assembler#Konfiguration
http://www.rn-wissen.de/index.php/PIC_Assembler#Das_erste_Programm
http://www.rn-wissen.de/index.php/PIC_Assembler#F.C3.BCr_anderen_PIC_umschreiben

Klebwax
30.08.2011, 02:20
Hallo Lucie,

Ich denke, du fängst die Sache von der falschen Seite an. Die Entwicklung der Software wird wesentlich wichtiger werden, als die Hardware. Du wirst (viel) länger mit dem Debugger zu tun haben als mit dem Lötkolben. Ich würde mich also erstmal mit den Auswahl der der Softwaretools beschäftigen, bevor ich Widerstände für LEDs berechne. (Die sind auch unkritisch, wenn man sie etwas größer macht, sind die LEDs halt etwas dunkler, so what).

Ich verwende selbst gerne PICs, ich würde dir daher raten erstmal MPLAB von Microchip zu laden und zu installieren. Dazu muß man keine Zielhardware haben.

Dann ist zu entscheiden, ob man in Assembler oder in C programmieren will. Ich habe viel in Assembler für die kleinen PICs gemacht, als es noch keinen brauchbaren C-Compiler dafür gab. Man braucht schon eine gehörige Portion von Masochismus um das zu tun.

Jetzt ist es Zeit, sich über den Prozessor Gedanken zu machen. Obwohl ich viel mit dem PIC16F84 gemacht habe, aber er ist Schnee von gestern. Für etwa das gleiche Geld in einem ähnlichen Gehäuse (20 Pin DIP statt 18 Pin DIP) bekommst du einen PIC24, z.B. PIC24F16KA102. Was gewinnst du mit dieser Wahl? Ein Quarz oder Oszillator wird nicht gebraucht, er ist eingebaut. Er ist wesentlich schneller, das erspart mühsames optimieren. RAM und FLASH sind größer, auch das macht das Leben leichter. Und am wichtigsten: zusammen mit einem PICKIT3 (oder einem billigen Clone) hast du eine brauchbare Entwicklungumgebung mit allem was man so braucht: C-Compiler, Assembler wenn man den will, Debugger mit Hardware Breakpoint (wichtig !!!) und Programmer. Zusätzlich liefert Microchip Libraries für die eigebauten Peripheriebausteine. Selbst wenn man sie nicht benutzt, können sie als Beispiel dienen.

MfG Klebwax

Lucie
31.08.2011, 14:22
Hallo zusammen,


Danke PICture für die genauen Links.
Habe aber nicht verstanden was besser ist, ein schneller Takt, oder ein langsamer?
stimmt es, dass Jenachdem wie schnell getacktet wird die I/O´s angesteuert werden können?
Oder was ist deren Aufgabe?

Muss ich den MCLR-Pin über einen Pull-up immer angeschlossen lassen, oder könnte ich den auch einfach frei lassen?
Zum Programmieren des Pic´s wird der nicht benötigt.
Oder braucht der Pic den Anschluss, um überhaupt starten zu können?
Habe den Text an dieser Stelle nicht ganz verstanden.

Über eine kurze Rückmeldung würde ich mich freuen.


Klebwax danke für deine Anregungen, aber zur Zeit interessiert mich die Hardwar mehr. Mit der Software (Assembler) wollte ich mich erst beschäfftigen wenn ich die Hardware habe, und das Programmierte auch ausprobieren kann. Dann fühle ich mich motivierter, weil ich die Ergebnisse sehen kann.

Gruß
Lucie

PICture
31.08.2011, 16:54
Hallo!


Habe aber nicht verstanden was besser ist, ein schneller Takt, oder ein langsamer?
stimmt es, dass Jenachdem wie schnell getacktet wird die I/O´s angesteuert werden können?
Oder was ist deren Aufgabe?

Die Auwahl der Taktfrequenz hat nätürlich direkten Einfluss auf Schnelligkeit der Verarbeitung eines Programms und sowie Einlesen als auch Ausgeben gewünschten I/O's. Andereseits hängt von der Taktfrequenz der Stromverbrauch des PIC's, was bei baterriebetriebener Hardware wichtig seien könnte.


Muss ich den MCLR-Pin über einen Pull-up immer angeschlossen lassen, oder könnte ich den auch einfach frei lassen?

Das musst du in deiner realer Umgebung ausprobieren. Theoretisch kann der /MCLR Pin unbeschaltet bleiben, weil er jedoch sehr hohen Eingangswiderstand hat (CMOS), habe ich bisher immer die im o.g. Artikel skizzierte einfache Beschaltung mit einer Diode und Widerstand verwendet. Beim PIC16F84 ist der Pin eben fürs Brennen notwendig und da hängt immer eine Leitung zum Brenner (ICSP).


Oder braucht der Pic den Anschluss, um überhaupt strten zu können?

Nein, es sei den es hängt auf dem Pin als "Antenne" eine Leitung, die resetende Impulse aus der Luft "empfängt".

Übrigens, die PIC's dürfen nur bis max. 5,5 V betrieben werden, sonst eignen sie sich nur noch für eine Mülltonne. ;)

Du könntest Schaltplan/Skizze deiner geplannter Hardware posten, was ich gerne kontrollieren würde. :)

Lucie
01.09.2011, 15:45
19846

Hallo,
so habe ich mir das jetzt vorgestellt.
Ist das umsetzbar?

Danke

PICture
01.09.2011, 17:21
Hallo!

Das ist zwar umsetzbar, wird aber nicht funktionieren, weil nach dem Enschalten der Batterie 12 V mit S3 der PIC wegen zu hoher VDD (max. 5,5 V) kaput gehen wird. Am einfachsten wäre zwischen der Batterie + und dem VDD deiner Schaltung ein Spannungsregler mit Ausgangspannung 5 V z.B. 7805 mit nötiger Beschaltung und beim Bedarf passenden Kühlkörper zu verwenden. ;)

Ausserdem fehlt noch ein 0,1 µF (100 nF) vielschicht Keramikkondensator direkt zwischen VDD und VSS (GND) vom PIC.

Klebwax
01.09.2011, 23:24
19846

Hallo,
so habe ich mir das jetzt vorgestellt.
Ist das umsetzbar?

Wie schon gesagt, stirbt der Prozessor beim Einschalten. Du solltest das Datenblatt noch einmal gründlich lesen. Der Reset-Eingang MCLR darf auch nicht offen bleiben. Externe RC-Oszillatoren sind manchmal etwas picky, hast du ein Scope um ihn zu überprüfen? Um den Oszillator zum laufen zu bekommen, müssen mindestens die Config-Register programmiert werden.

Wie soll der Prozessor programmiert werden? Im eingebauten Zustand? Dann fehlen die Anschlüsse dafür. Oder in einem extra Programmiergerät?

MfG Klebwax

Lucie
02.09.2011, 07:39
19853

Hallo,
die 12V war ein Fehler, hatte eigentlich 3 V gedacht,
Finde den 7805 aber dann doch besser weil ich dann den 9V-Block anschließen kann.
Der 100n von dem du gesprochen hast, soll beim Aufbau ganz nah an das ic zur Entstörung,oder?

Der PIC wird vorher programmiert.
Deshlab kann ich doch den MCLR frei lassen, oder nicht?

Habe ich jetzt alle Fehler beseitigt??
Danke für die Mühe :)

Lucie

Klebwax
02.09.2011, 08:01
19853

Hallo,
die 12V war ein Fehler, hatte eigentlich 3 V gedacht,

Es kommt nicht darauf an, was du denkst, sondern was im Datenblatt steht.

MCLR ist ein Eingang, und einen CMOS Eingang läßt man nicht offen.

MfG Klebwax

PICture
02.09.2011, 16:24
Hallo!


Der 100n von dem du gesprochen hast, soll beim Aufbau ganz nah an das ic zur Entstörung,oder?

Genau ! :D


Deshlab kann ich doch den MCLR frei lassen, oder nicht?

Das musst du kurz ausprobieren, aber ein 10k Widerstand könntest du dir hoffentlich noch leisten und Platz dafür vorsehen, da die Diode nur beim ICSP nötog ist.


Habe ich jetzt alle Fehler beseitigt??

Laut Schaltplan schon. :D

Es könnte aber sein, dass bei der aufgebauter Schaltung noch "kosmetische" Änderungen z.B. von LED Vorwiderständen nötig seien könnten. Das siehst du aber erst bei Inbetriebnahme.