PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmieren eines PIC16F684



Stephan18
27.05.2010, 10:39
Hallo zusammen,

Ich habe mich in mehreren Seiten durchgearbeitet und vieles Ausprobiert.. Leider finde ich keinen Einstieg, womit ich mal rumtesten könnte.

Ich habe das PICKIT1 als Brenner und den PIC16F684 als Chip.

Dazu benutzte ich MPLAB und würde gerne ein Programm draufladen.

Allerdings komme ich da garnicht weiter. Kann mir irgendwer behilflich ind er bedienung sein?

Als Meldung kommt vom Programm immer, dass erfolgreich gebrannt wurde und das Programm verifiziert wurde. Also keine Fehler.

Trozdem klappt rein garnichts.

Wäre super wenn mir da jemand helfen könnte. Danke euch !!!

Spessi
27.05.2010, 12:58
Hallo,
hast du die Schaltung nach dem Brennen auch aus dem Reset mode genommen?
Also entweder ICSP Stecker von der Schaltung abstecken und dann Spannung draufgeben, oder in MPLAB bei "Programmer" -> "Release from reset" drücken.

hagbart06
27.05.2010, 15:47
Evtl. schwiegt dein Quarz auch nicht. Was für ein Quarz und was für Kondensatoren hast du benutzt?
Kannst dein Programm mal hier reinstellen, vielleicht befindet sich ja irgendwo ein Fehler.

Stephan18
27.05.2010, 18:17
Hallo,

Bei Programmer habe ich nichts mit "Release from reset". Auf meinem PicKit1 leuchten zwei Lampen. Power und Busy.

Ich habe ein Projekt. Dort sind 6 Ordner.. Source Files ( dort ist die led.asm drinne ). Dann Ordner die leer sind:
Header Files, Object Files, Library Files, Linker Script, Other Files

ist das "richtig" ?
Das Programm scheint auch nicht für den 16F684 zu sein.. Und das mit dem "Release" gibt es nur beim PICKit2 ich habe aber PICKit1 ;)

Hier das Programm:


;************************************************* *************************
;Autor buh 12.03.08
;Programm 1 Leds manipulieren
;Entwicklungsboard Pickit1
;************************************************* *************************
#include <p12f675.inc>
;Dieses File wird eingebunden, es enthält Bezeichner für Statusregister u.ä.
;Bspw. ist TRISIO ein Register mit dem das Ein- oder Ausgabeverhalten der PIO
;definiert wird.
; Hier folgen grundlegende Einstellung, bsp Watchdog aus u.ä.
__CONFIG _CP_OFF&_WDT_OFF&_BODEN_ON&_PWRTE_ON&_INTRC_OSC_NOCLKOUT&_MCLRE_OFF&_CPD_OFF
;************************************************* *************************
;Definitionen
;************************************************* *************************
#define led_pins B'11001111'
;RA4 und RA5 sind allein als Ausgabe gesetzt.
;R6 und R7 egal, da diese Pins nicht existieren.
;Muss im TRISIO-Register abgespeichert werden.
#define led_D0_an B'00010000'
;RA0 bis RA3 ist egal, da Eingänge. RA4 ist auf
;1 gesetzt, also 5V und RA5 auf 0V also leuchtet D0,
;falls dieser Wert in GPIO eingetragen wird
#define led_D1_an B'00100000'
;Jetzt leuchtet D1, falls dieses Wort in GPIO eingegetragen wird.
;Wird hier im Programm aber nicht benutzt.
;************************************************* *************************
;ab hier beginnt das Programm. 1. Eintrag in Speicherstelle 0000h
;************************************************* *************************
ORG 0x000
bcf STATUS,RP0
;Bank0 wird ausgewählt, RP0 im Register STATUS wird auf 0 gesetzt.
movlw led_D0_an
movwf GPIO
;Jetzt leuchtet D0. Die Adresse von GPIO liegt in Bank 0 Speicherplatz: 05h
bsf STATUS,RP0
;Bank1 auswählen, RP0 in Register STATUS wird gesetzt
movlw led_pins
movwf TRISIO
;TRISIO ist das Register mit dem Ein- bzw. Ausgaberichtung der Pins eingestellt wird.
;Liegt in Bank1 Speicheradresse: 85h
end
; Hier ist das Assemblerfile zu ende.[/code]

justin
27.05.2010, 20:22
faslsche Datei includiert:
"#include <p12f675.inc> "
Da muss
"#include <p16f684.inc> "
stehen.

Wenn du Glück hast, dann klappt das so.

Stephan18
28.05.2010, 04:37
Hallo,

Nein klappt auch dann leider nicht!

Gruß Stephan

hagbart06
28.05.2010, 12:11
Evtl. schwiegt dein Quarz auch nicht. Was für ein Quarz und was für Kondensatoren hast du benutzt?

Stephan18
28.05.2010, 19:54
Hi,

Ich benutze zur Zeit das Experimentier-Board PICKIT1.
Da muss man nichts für bei "bauen" um es zu testen soweit ich das mal gelesen habe?

oder?

Gruß Stephan

Siro
28.05.2010, 20:52
Du must als erstes den Analog/Digital Converter ausschalten, sonst kannst Du Pins nicht für deine LEDs benutzen. Zumindest an RA4
Dann kannst Du auch gleich der Comparator ausschalten
Dazu brauchst du folgenden Code:

clrf STATUS ;Bank 0
; den Comparator ausschalten
MOVLW 07h
MOVWF CMCON0

; nun den ADU ausschalten
BSF STATUS,RP0 ;Bank 1
CLRF ANSEL

dann kommt dein Programmcode
und am Ende springt der PIC bei Dir in die Wüste.
Du must dort eine Endlosschleife programmieren
zum Beispiel so:

schleife: goto schleife

aller Anfang ist schwer...
viel Spass noch
Siro

Stephan18
30.05.2010, 11:18
Hallo,

danke dir, werde es heute Abend mal ausprobieren!! Vorher noch ein anderes Problem, was nichts mit dem Programmieren zu tun hat, aber zum selben Projekt gehört.

Ich habe einen Funkempfänger HX2272 der vorher auf 230V lief ( also die Schaltung nicht das IC :D ). Das habe ich umgebaut, nun arbeitet der auf 5V.
Die Schaltung hat einen Leerlaufstrom von 1mA. Was ja auch ok ist.
Nun brauche ich eine Versorgungsquelle und würde gerne eine Batterie nehmen.

Dazu habe ich mir einen 9V Block gekauft und ein paar Bausteine.
Habe mit 2 Kondensatoren ( 220 uF 35V und 1000uF 16V ) und einem Baustein 78S05 eine Reglung aufgebaut.

Vorne die Batterie angeklemmt, kommt hinten genau 5V raus. Das bedeutet dass ja 4V in wärme umgewandelt wird.
Allerdings braucht diese Schaltung im Leerlauf ( Also das garnichts angeschlossen ist ) 7mA.
Was für die Batterie garnicht gut ist. Kann mir dabei jemand helfen? Ich müsste sowas realisieren wo der Leerlaufstrom aber wesentlich geringer ist, damit die 9V Block-Batterie auch mal 2 Monate durchhällt. 2 Monate würde mir auch voll reichen.

Oder hat jemand ne andere Idee wie ich sparsam an 5V komme aber trozdem ~ 2 MOnate auskomme?


Danke schonmal und Gruß Stephan!!