mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik pic12F508 I/O Pins Denkfehler?


Autor: Malte K. (mallatomalla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin,
ich beschäftige mich schon etwas länger mit PIC´s, allerdings blieb dies 
bis jetzt nur auf den 16F84 beschränkt. Habe nun ein kleines projekt in 
dem Ich einen 12F508 benutzen möchte.
Zur programmierung des Pic´s benutze ich das Pickit 2. Als Programm 
MPLAB 8.40 und zum complieren den cc5x.
Da ich zum ersten mal per ICSP programmiere habe ich ein Adapterkabel 
und eine kleine programmierplatine erstellt um den PIC mit dem 
Programmer zu verbinden. Das ist so weit glaube ich auch in Ordnung.
Als erstes wollte ich alle I/O Pins auf Output stellen und an jedem 
einen High pegel liegen haben.
Nun kommt das was ich mir net erklären kann. Wenn ich folgendes in C 
eingebe:

#include <C:\cc5\12F508.h>    // Prozessor-Typ definieren
void main(void)        // Start des Hauptprogramms
{
TRISGPIO = 0b.0000.0000;    // Alle Pins sind Ausgänge
GPIO = 0b.0011.1111;            // Alle High-Pegel
}

Kommt als .asm folgendes heraus:

  processor  12F508
  radix  DEC

PORTB       EQU   0x06
GPIO        EQU   0x06

  GOTO main

main
                  ;TRISGPIO = 0b.0000.0000;// Alle Pins sind Ausgänge
  MOVLW 0
  TRIS  PORTB
      ;GPIO = 0b.0011.1111;// Alle High-Pegel
  MOVLW 63
  MOVWF GPIO
  SLEEP

  END

Wenn ich nun mein PIC Programmiere passiert garnix, MPLAB sagt alles ist 
in Ordnung.
Ich gehe mal davon aus das etwas an dem code nicht stimmt.
Wenn ihr nen tipp für mich habt wäre ich dankbar.
Mfg.

Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm... Was macht dein Prozessor denn danach?!

Wo ist Endlosschleife?!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pronbiers mal so:

#include <C:\cc5\12F508.h>    // Prozessor-Typ definieren

#pragma config |=0b11001

void main(void)        // Start des Hauptprogramms
{
TRISGPIO = 0b.0000.0000;    // Alle Pins sind Ausgänge
GPIO = 0b.0011.1111;            // Alle High-Pegel
}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Pronbiers mal so:

Wie kommt denn das n da rein? Scheiß Hitze, blöde Laptoptastatur;)

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du jagst den PIC ja sofort wieder in den Reset nachdem das Programm 
einmal durchgelaufen ist.

Endlosschleife fehlt !
Dann wären die Config-Bits noch interessant und verifizier mal das auf 
den PIC geschrieben.

Wie sieht's mit Taktquelle aus ?!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie sieht's mit Taktquelle aus ?!

Autsch.

#pragma config |=0b11010

Für INTRC;)

Autor: Malte K. (mallatomalla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe.
Habe die config nun innerhalb meines codes erstellt, MPLAB hat es trotz 
der entsprechenden Einstellung nicht selber gemacht.
Bleibt bei mir noch eine Frage offen.
Kann ich den PIN Nr.2 GP2/TOCKI als normalen Output benutzen?
Wenn ja, muss noch etwas spezielles umgestellt werden, im mom bekomm ich 
kein high pegel mit ihm erzeugt, alle anderen funktionieren.
MFG

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Kann ich den PIN Nr.2 GP2/TOCKI als normalen Output benutzen?

Ja. GP3 kann nur ein Input sein.

Autor: Malte K. (mallatomalla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich den oben angegeben code brenne, dann schwankt GP2 zwischen 
Spannungen von 0.2 bis 2V ... hat jemand eine erklärung dafür?
Muss ich zwecks GP2/TOCKL noch was umstellen?
Hab den Pic schon ausgetauscht weil ich dachte er sei defekt.
MFG

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>dann schwankt GP2 zwischen
>Spannungen von 0.2 bis 2V

Bist du sicher das du nicht an GP3 misst?

Autor: Malte K. (mallatomalla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jop, GP3 liegt aus relativ konstanten 0,7V. Das dürfte als 
unbeschalteter Input ja auch in ordnung sein.

Autor: Stephan S. (uxdx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Malte K. schrieb:
> Kann ich den PIN Nr.2 GP2/TOCKI als normalen Output benutzen?

Pin Nr. 2 ist NICHT GP2, sondern GP5

GPO bis GP2 und GP4 bis GP5 sind Input/Output (per TRIS-Befehl 
einstellbar), GP3 (Pin 4) ist immer Input, egals was Du beim TRIS-Befehl 
sagts.

Autor: Malte K. (mallatomalla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich meine natürlich Pin Nr. 5.
Schaffe es einfach nicht einen High Pegel damit zu erzeugen, ist nun 
auch nicht weiter schlimm, weil ich den auch als Input Pin benutzen 
kann... das funktioniert ohne Probleme.
Ich hab zwar immer noch keine Ahnung warum sich GP2 nicht auf high 
schalten lässt aber danke euch trotzdem für eure Hilfe.
Falls jemand doch noch einen Gedankenblitz hat, warum GP2 nicht will 
kann er ja nochma schreiben.
Mfg

Autor: Stephan S. (uxdx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier's doch mal mit MPLAP direkt in Assembler ...

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.