Gast
#5866703
Hallo zusammen, ich bin jetzt seit gefühlt Tagen dabei, einen PIC16F72 und einen PIC16F872 zu programmieren. Ich habe auch mehrere Microcontroller da, das heißt ein Problem mit kaputten sollte ich nicht haben. Ich habe schon PIC's programmiert und benutze einen Pickit3-clone. Mit dem hat das auch schon wunderbar funktioniert. Ich programmiere über MPLAB x IDE v5.00. Ich probiere immer nur das einfachste Programm aus, siehe unten, bekomme eine Verbindung zum Pickit3 und der Controller wird auch programmiert. Ich bekomme allerdings kein Signal an den Output pins. Ich habe schon alles mögliche probiert: Alle Ports durchprobiert, Power über USB und ohne, Prozessorfrequenz auf 16 oder 20 MHz, Verbindung zum Board so kurz wie möglich machen, sämtliche Hardware weglassen und mit Multimeter und Oszi direkt an den Pins messen, bootloader neu auf Pickit3 laden, MPlab IDE neu starten. Aber ich bekomme kein Ergebnis. Die Spannung bleibt bei wenigen Milivolt. Ich habe gerade kein Foto vom Board, aber ich habe nur die Verbindungen wie auf den Standard Beschreibungen/Bildern für Pickit3 zu sehen. Vdd, GND auf beiden Seiten, PGC, PGD. PGM auf Masse und MCLR mit 10k auf Vdd. Ich habe keine Ahnung, was ich noch ausprobieren könnte. Hat jemand eine Idee? main.c: #include <stdio.h> #include <stdlib.h> #include <xc.h> #include <pic16f872.h> //pic16f72.h #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config CP = OFF // FLASH Program Memory Code Protection bit (Code protection off) #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled) #define _XTAL_FREQ 20000000 void delayms(int x); void main() { // ADCON0=0x00; // ADCON1=0x07; TRISA = 0x00; PORTA = 0xFF; while (1){ //habs auch schon nur mit Output probiert, ohne delay PORTA=0x00; delayms(100); PORTA=0xFF; delayms(100); } } void delayms(int x){ int y=((float)(x*300))/3; do{ y--; }while(y != 0); }