- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 10

Thema: Programmieren eines PIC16F684

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2010
    Beiträge
    5

    Programmieren eines PIC16F684

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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 !!!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2005
    Beiträge
    130
    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.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2009
    Alter
    33
    Beiträge
    104
    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.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2010
    Beiträge
    5
    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:

    Code:
    ;**************************************************************************
    ;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]

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.07.2009
    Alter
    30
    Beiträge
    133
    faslsche Datei includiert:
    "#include <p12f675.inc> "
    Da muss
    "#include <p16f684.inc> "
    stehen.

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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2010
    Beiträge
    5
    Hallo,

    Nein klappt auch dann leider nicht!

    Gruß Stephan

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2009
    Alter
    33
    Beiträge
    104
    Zitat Zitat von hagbart06
    Evtl. schwiegt dein Quarz auch nicht. Was für ein Quarz und was für Kondensatoren hast du benutzt?

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2010
    Beiträge
    5
    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

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2010
    Beiträge
    5
    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 ). 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!!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen