-         

Ergebnis 1 bis 5 von 5

Thema: PIC Probleme evtl. defekt?!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2006
    Beiträge
    19

    PIC Probleme evtl. defekt?!

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo, ich lese zwar schon länger interessiert mit, aber jetzt wurde es mal Zeit das ich mich anmelde.

    Ich bin gerade dabei meine ersten Schritte mit dem PIC zu machen, leider bin ich nicht weit gekommen

    Ich benutze einen PIC16F870, als Entwicklungsumgebung MPLAB IDE v7.40 und zum Brennen des Hex-Files PBrenner37U.

    So quasi als "Hello World" wollte ich einfach mal ein paar Portpins auf 1 setzen.


    Code:
    #include<pic.h>
    #include <pic1687x.h>
    
    void main(void)
    {
    int i=1;
    TRISC=0x00;
    TRISB=0x00;
    TRISA=0x00;
    
    
    
    while(i>0)
    	{
    		PORTC=0x01;
    		PORTB=0x02;
    		PORTA=0x04;
    	}
    }
    So weit scheint auch alles gut. Ich brenns rein, keine Fehler. Aber wenn ich den PIC in Betrieb nehme, ist nur der RB7 "1", alle anderen Ausgänge sind "0". Ich weiß echt nicht mehr weiter, kann es sein das der PIC kaputt ist? Ich habe ausversehen den PIC einmal mit RC als Taktgeber in der config gebrannt, aber ich verwende einen Quartz. Irgendwo habe ich gelesen, daß die das nicht so mögen

    Hilfe...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hast Du PullUp-Widerstände an den Ausgangs-Pins ?
    Die PIC-Ausgänge schalten (im Gegensatz zum AVR) an den Ausgangs-Pins nur den GND raus. Für High-Pegel mußt Du selber sorgen oder für Port B die internen PullUps enablen: bcf OPTION_REG,7
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    32
    Beiträge
    456
    Ähm, nö, das dürfte nicht das Problem. ^^
    Einzig der RA4 (oder ein anderes Pin von PortA) besitzt einen Open Collector Ausgang (also, dass er nicht nach VCC ziehen kann), alle anderen Pins sind mit TTL-Pegeln und können sowohl nach 5V, wie auch nach GND ziehen. Was du meinst ist, wenn die Pins als Eingang definiert sind, nur dann sind die internen Pulluos aktiv.

    Hum, was mir auf die Schnelle einfallen würde, ist, dass du vllt. den A/D-Wandler von den I/O-Pins nehmen solltest (RA0-RA5). Dazu schreibst du einfach 0x07 in den ADCON1. Ansonsten fällt mir eigentlich nichts auf dem Programm auf, das Probleme bereiten sollte.
    Versuch mal die anderen Ports ebenfalls zu setzten und durchzutesten (vielleicht auf eine Frequenz auf der einen ausgeben, wenn du ein Osci hast). Leider bin ich in C, zumindest was ein PIC angeht nicht wirklich versiert, ich bevorzuge lieber Assembler .

    In C schaut das ca. so aus (XOR auf einen Pin, lässt diesen toggeln):
    Code:
    while(1)
    {
        PORTB^=0x01;
    }
    MfG
    Mobius

    €dit: Weißt du eigentlich mit sicherheit, ob der Quarz schwingt? WElche Frequenz hast du und wie viel pF? Oder hast du einen Oscillator dranhängen?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo Mobius,
    Du hast Recht, ich habe da was durcheinander geschmissen; der High-Pegel für Ausgänge ist Vcc minus 0,7V. Auf meinen Platinen sind die PullUp-Widerstände aus einem anderen wichtigen Grund drauf: nach dem Einschalten bis zur Initialisierung und während Reset sind die I/O-Pins Eingänge mit ungewissem 'Ausgangs-Pegel'. Damit meine Ausgangs-Treiber keine 'Sauereien' machen können, bekommen sie so lange über die PullUps High-Pegel.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2006
    Beiträge
    19
    Also, die Platine die ich verwende ist ein Projekt von unserer FH. Leider mit mehr als beschissener Dokumentation. Mein Projekt ist jetzt eine dafür zu erstellen Da ist alles schon fertig drauf, ich muss mich jetzt ein bißchen durchwurschteln. Also der Takt wird über einen Ozillator generiert mit 20MHz.

    Aber das wichtigste: Ich habs hinbekommen Meine Vermutung ist, daß der Reset nicht richtig ausgeführt wird. Ist quasi Zufall, obs geht oder nicht....

    Ich werds jetzt mal mit dem Brownout Reset probieren, vielleicht schafft das Abhilfe

Berechtigungen

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