Forum: Mikrocontroller und Digitale Elektronik PIC 12F675 Programmierprobleme


von Wolle (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Users,

ich möchte gerne einen PIC 12F675 programmieren.
Benutze hierzu den MPLAP IDE und den PicKit2 von Mircochip.

Wenn ich das asm-Programm in ein Hex-File wandle und auf den Chip spiele 
und diesen anschliesse passiert, soweit ich das nachvollziehen kann 
nichts.
Es sollen entsprechend der vorgegebenen Zeiten die entsprechenden 
Ausgänge gesetzt werden. Kann hier aber keine veränderung der Ausgänge 
messen.

Ist mein Programm fehlerhaft?
Kann ich das ganze im MPLAP simulieren, wo ich dann auch den Zustand der 
Ausgänge sehe bzw. EIngänge setzen kann?


Vielen Dank für jeglichen Tip.

Gruß Wolle

von Severino R. (severino)


Lesenswert?

Wolle wrote:

> ich möchte gerne einen PIC 12F675 programmieren.
> Benutze hierzu den MPLAP IDE und den PicKit2 von Mircochip.

Mit LAP-Dance hat die Software nichts zu tun, sie heisst MPLAB.

> Wenn ich das asm-Programm in ein Hex-File wandle und auf den Chip spiele
> und diesen anschliesse passiert, soweit ich das nachvollziehen kann
> nichts.

Wo schliesst Du den Chip denn an?

> Ist mein Programm fehlerhaft?

Wer weiss? Ist das denn überhaupt DEIN Programm?

> Kann ich das ganze im MPLAP simulieren, wo ich dann auch den Zustand der
> Ausgänge sehe bzw. EIngänge setzen kann?

Ja, MPLAB kommt mit einem Simulator MPLAB-SIM, den Du unter dem 
Menüpunkt Debugger auswählen kannst. Bedienung etc. gemäss Hilfe von 
MPLAB, oder gemäss Handbuch oder Tutorial von der Microchip-Website.

ABER:
In Deinem Sourcecode fehlen die Einstellungen zu den Fuses (auch 
Configuration Word genannt). Du kannst die Einstellungen auch in MPLAB 
vornehmen (Configure->Configuration Bits), aber besser ist jedenfalls im 
Sourcecode, dann geht das eben nicht vergessen.
Welche Werte eingestellt werden müssen hängt vom Einsatz des PICs ab und 
von der Beschaltung. Ev. also ein Schema posten.

von Gerhard (Gast)


Lesenswert?

Hallo Wolle

ob dein programm tut was es soll, kannst du am einfachsten mit dem 
MPLAB-Simulator feststellen. Wenn es das tut, aber der reale PIC will 
nicht, dann liegts vielleicht an den Konfigurationsbits. Was hast du 
denn da eingestellt ?

Gerhard

von Wolle (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

danke für eure Antworten.

Sorry, klar heisst das Programm MPLAB, nicht MPLAP.

Das Programm wurde früher mal entwickelt, nun aber weiter ausgebaut. 
Daher ist es MEIN Programm.

Die Beschaltung des Pics sieht wie folgt aus:

- Spgs.versorgung an Vdd und Vss
- Die restlichen Pins sind Ein- bzw. Ausgänge bzw. sollen es sein.
  GP 0 und 3 sollen Eingänge sein, alle restlichen (GP 1, 2 und 4) 
sollen
  Ausgänge sein.
  GP 5 wird nicht verwendet.

- an den Konfigurationsbits hab ich bisher noch nichts verstellt.
  hab da was im Netz gefunden (siehe nachfolgend), ist dies so eine
  Konfiguration?

  __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF &
  _PWRTE_ON & _INTRC_OSC_NOCLKOUT

Muss ich hier noch was dran ändern?


- Hab dann auch noch eine IO initialiserung gefunden? Habe diese auf 
meine
  IO-Konfig angepasst und mal in mein Programm eingefügt. Allerdings
  bekomme ich immer die Warnung "Register in operand not in bank 0. 
Ensure
  that bank bits are correct" für die Zeilen in denen "AMSEL" und 
TRISIO"
  verwendet wird.

Wäre super wenn ihr mir hier weiterhelfen könntet.

Vieln Dank.

Gruß Wolle

von Severino R. (severino)


Lesenswert?

__CONFIG sieht gut aus. Du hast also keinen externen Takt und der PIC 
läuft mit seinem internen Oszillator (4MHz glaube ich).
1
  bsf   STATUS, RP0  ; Bank 1 anw�hlen
2
  movlw  b'00110110'  ; GP0=in,GP1=out,GP2=out,GP3=in Pull up
3
  ;movwf   WPU      ; Beschreiben des WPU_Registers 0= Pull up disabled

das mit den Pull-Ups wird nicht funktionieren, da die Anweisung
movwf WPU auskommentiert ist.

Tatsächlich muss die Initialisierung für digital I/O korrekt vorgenommen 
werden. Wie, steht im Datenblatt in Kap. 3.1.
Das Register heisst ANSEL, nicht AMSEL.
Die Warnung betr. Bank für ANSEL und TRISIO ist schon ok. Hast Du die 
Bank 1 auch wirklich eingeschaltet?
Da ich in Deinem Code weder ANSEL noch AMSEL finden kann, muss ich 
annehmen, Du hast den Code nach dem Posten noch verändert.

Konntest Du das Programm in MPLAB SIM simulieren?
Willst Du den aktuellen Code posten?

von Wolle (Gast)


Lesenswert?

Hallo,

ja mein Code hat sich nun komplett verändert. Meine wenige Erfahrung hat 
dies leider nicht ausgeschlossen.

Hab da was im Netz gefunden:
http://www.bertys.ro/pic12F675/FlashLed.asm


Hab dieses Programm für den PIC12F675 als Grundlage genommen und auf 
meine Anforderungen angepasst. Hat sofort auf Anhieb funktioniert, ohne 
Probleme.
Jetzt wird mir auch im Code und die verwendeten Befehle auch klarer.
Leraning by doing ist eben nicht immer so schlecht.

Testen konnte ich den Code im MPLAB nicht. Würde hierbei dann gerne 
Eingänge setzen, sonst passiert in meinem Programm nicht viel, außer der 
Wiederholung einer Warteschleife. Wenn mir dass noch jemand für weitere 
Projekte sagen könnte, wärs echt super.

Vielen Dank für Eure Unterstützung. Hat mir sehr weitergeholfen.

Gruß Wolle

von Olaf K. (Firma: Hobby) (olaf-k)


Lesenswert?

Im MPLAB gibt es unter Debugger /Stimulus.
Die Möglichkeit deine Eingänge zu setzen.
Die kannst Du dann während der Simulation mit fire an deinem 
Programmpunkt betätigen.
MfG
olaf

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
Noch kein Account? Hier anmelden.