www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mein ERSTER PIC (12F675), Anfängerprobleme


Autor: Michael S. (moepat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe schon einige Beiträge durchforstet nur bin ich leider zu keinem 
positiven Ergebnis gekommen.

Also mein Problem beginnt, vermutlich, schon beim Flashen des PICs.

Ich benutze PICSTART Plus in Verbindung mit MPLAB IDE um den PIC zu 
Flashen, jetzt hab ich mir ein kleines ASM Programm geschrieben um nur 
mal eine LED zu flashen, leider Funktioniert das ganze nicht wirklich!

Mein nächster Gedanke war dass es ja an meinem Programm liegen könnte, 
darum hab ich mir mal den Code von 
http://www.bertys.ro/pic12F675/FlashLed.asm raufgeflasht, leider 
funktioniert dieser auch nicht wirklich bei mir!

Darum bin ich zu dem Gedanken gekommen, dass ich etwas beim Flashen 
falsch machen muss.
Meine Vorgehensweise:
MPLAB IDE v8.33 Starten -> mein angelegtes .mcp-Projekt öffnen -> den 
Code habe ich unter dem Ordner Source Files als .asm-Datei integriert -> 
Programmer auswählen -> Programmer Enablen -> Erase Flash Device -> 
Project>>Build All ("BUILD SUCCEEDED") -> Programmer>>Programm -> Pic in 
mein Steckbrett und Spannung einschalten!

KEINE LED leuchtet :(

Hat vlt jemand eine Idee worans liegen kann?
Is mein Erster PIC also es ist denk ich mal jeder Fehler erdenklich :(


Infos:
PIC 12F675
PICSTART Plus
MPLAB IDE v8.33

         ----uu----
+5 V ---|vdd    vss|--- GND
LED1 ---|gp5    gp0|--- LED4
LED2 ---|gp4    gp1|--- LED3
  NC ---|gp3    gp2|--- NC
         ----------

Zwischen +5V udn GND hängt noch ein 100nF Kondensator und vor den LEDs 
is ein 220R Widerstand!


Ich bin für jeden Tipp dankbar!

mfg
moep.at

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael,

habe das ASM-Programm nicht angeschaut, so dass ich darüber nichts sagen 
kann. Aber wenn das Flashen ohne Fehlermeldungen vonstatten geht, ist 
anzunehmen, dass das Programm auch drin ist. Hast Du mal an den Ports 
mit einem Messgerät gemessen (Oszi, Multimeter)?

Gruß

Dieter

Autor: Michael S. (moepat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ja habe ich auch schon getestet, leider kein Signal zu messen, hab an 
allesn 4 LED Pins einen Kanal vom Oszi dran hängen.

Den PIC ansich habe ich auch schon einmal getauscht.


Habe jetzt auch noch einmal versucht ein anderes Programm zu flashen:
-----------------------------------------------------------------------
  list      p=12f675           ; list directive to define processor
  #include <p12f675.inc>        ; processor specific variable
definitions
  errorlevel  -302              ; suppress message 302 from list file

  __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF &
_PWRTE_ON & _INTRC_OSC_CLKOUT


  ORG     0x000           ; processor reset vector
  goto    main            ; go to beginning of program

main  BSF  CMCON, CM0         ; GP0,1 von Comparator auf digital
       BSF  CMCON, CM1
      BSF  CMCON, CM2
      BSF  STATUS, RP0        ; Bank 1
      CLRF ANSEL              ; GP0,1,2,4 von ADC auf digital
    movlw  b'00000000'
    movwf  TRISIO
      BCF  STATUS, RP0        ; Bank0
    bsf    GPIO, 0
loop  goto   loop

    END                       ; directive 'end of program'
------------------------------------------------------------------------ 
-

leider auch ohne Erfolg.


mfg
Michael

Autor: Jochen64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du /MCLR über einen Widerstand (10k oder so) auf Vdd gelegt? Sonst 
könnte es sein das der pin auf GND bleibt und der Controller bleibt im 
Reset.

Du hast deinen Code ja auf INTRC_OSC_CLKOUT gestellt, also internen Takt 
(~4MHz). Üblicherweise hat man noch eine Anweisung um OSCCAL mit einem 
Kalibrierwert zu beschreiben. Der werksseitig ausgemessene Wert für 
OSCCAL liegt auf der letzten Speicherzelle.

--> Such dir mal aus dem MPLAB Programmverzeichnis das passende Template 
raus, da sieht man wie das mit OSCCAL geht. Vermutlich müsste es aber 
auch so gehen, nur halt Takt ungenau.

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael,

wenn Du MCLRE_ON machst, muss Du Pin4 auf High setzen, sonst hast Du 
möglicherweise permanent Reset. Offen lassen sollte man Pins sowieso 
nicht.


Dieter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Zeile
>loop  goto   loop

ist Blödsinn, da bleibt das Programm, der PIC, drin hängen und es tut 
sich extern gar nix. Der erste Programmcode ist mir nun zu lang um zu 
schaun ob es da irgendwo hängen würde, vielleicht mal Simulieren in 
MPLAB ;)

Autor: Dieter S. (accutron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist richtig. Fatal ist, dass mehrere Fehler da sind. Es ist erst mal 
wichtig, ein lauffähiges Programm zu haben und zu laden. Dann den MCLR 
entweder zu deaktivieren oder den Pin über einen Widerstand auf High zu 
legen.

Dieter

Autor: Michael S. (moepat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HEy,


DANKE DANKE DANKE DANKE!

es war der Widerstand kaopauftisch


oft sinds die einfachsten dinge ;)


PS: das der Code kacke is is mir klar ;)
hab das erste mal nen Pic in der hand und wollte nur mal ne LED 
einschalten :)

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ist Blödsinn

Ach ja. Schon darüber nachgedacht?

>bleibt das Programm, der PIC, drin hängen und es tut
>sich extern gar nix

Aber z.B. bleiben gesetzte Ports stehen. Für einen Test ist diese 
Verwendung des goto-Befehls gängige Praxis.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast in der Config MCLRE_ON eingeschaltet. Damit sagst du dem PIC, 
das der PIn GP3 der Resetpin ist. Du musst also entweder an diesen PIN 
einen Pullup 10k Ohm gegen +5V schalten oder MCLRE_OFF schalten. Dein 
PIC Resettet vermutlich, da du den GP3 offen gelassen hast.

Gruß
Sven

... mal wieder zu spät. Man sollte halt nicht während einem Seminar 
versuchen Beiträge zu beantworten...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.