Geändert von witkatz (22.03.2017 um 17:28 Uhr)
Hallo Witkatz !
Vielen Dank für Deine beispielhafte Unterstützung!
Nur ich verstehe eines nicht , warum hier im anderem Programm "__delay_ms(150) " wunderbar funktioniert.
Ich kann keinen Unterschied an der Konfigurierung feststellen, oder gibt es da Falltürchen in den man als Anfänger noch fällt ??
Gruss und DankCode:#include <xc.h> #define _XTAL_FREQ 4000000 // aktuelle Oszillatorfrequenz für die richtige Zeitdauer des __delay_ms Makros // hier 4.0MHz // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) void init(void){ TRISD = 0x00; // RD0 bis RD7 = Ausgang } void main(void){ init(); // Endlos Hauptschleife while(1){ PORTD = 0; // Port D = 0, alle 8 LED aus do{ // do While Kontrolle am Ende __delay_ms(150); // der Zaehlschleife 150ms warten PORTD++; } while (PORTD != 0xFF); // Zaehlende max 255/0xFF } }
Gerhard
- - - Aktualisiert - - -
Nachtrag:
Menno bin ich ein "Blödian" , habe ich doch das __delay_ms(xy) hinter der zweiten Zeile : PORTD = 0b11111000 ; vergessen...vor den Kopf fasse....grolll!!!!!!!!!!!!!!
Ich habe doch daran nicht gedacht, das die "main" eine "loop" ist....grrrrrr
So funzt es jetzt:Ja , ja so ist es, wenn einem die Frauensleut immer vom Programmieren wegholen, um "niedere" Hausarbeiten zu machenCode:void init(void){ TRISD = 0x00; // RD0 bis RD7 = Ausgang } void main(void) { init(); PORTD = 0B11000000; // "0" Segmentausgabe, an PORD uebergeben (7-Segm.LED) __delay_ms(500); PORTD = 0B11111000; // "7" Segmentausgabe, an PORD uebergeben (7-Segm.LED) __delay_ms(500); /* while(1) { //hier main-loop bei Bedarf halten } */ }![]()
Bitte meinen Aufruhr hier vielmals zu Entschuldigen....na ja man wird älter und vergesslicher
Gerhard
Geändert von oderlachs (23.03.2017 um 08:46 Uhr)
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Äh, nö. Main ist keine Schleife. Ohne loop läuft der Programmcounter nach der main weiter, läuft im besten Fall über und fängt bei 0 wieder an, im schlimmsten verläuft er sich im Nirvana. Also, die endlos-loop sollte man schon selber implementieren.
Gruß vom anderen PIC Neuling
witkatz
Hallo Witkatz...
Na ja ich habe ja auf der Programmierer-Schulbank auch reines C/C++ "klopfen" dürfen.... es ist ja auch schon viel Unterschied zw. Bohrland/Inprise und Microsoft.
Nun macht mir aber die Hardware mehr Probleme, als die Software, letzteres sind meistens nur Denkfehler.
Der Programmiersockel von microbot.it ist eingetroffen, aber denkste das man damit arbeiten kann..nicht ein Chiptyp geht. Muss mal die Schaltung ausfindig machen, per Durchgangsprüfung.....
Habe mir aber mit einigen Problemen(Finger) zwei Progadapter(28 u.40pol) zum Aufstecken auf das EasyPIC-40 gebastelt...na einige Drahtfädchen muss ich noch löten...Fummellei
Ja so schwer ist mir eigentlich der AVR Einstieg nicht gefallen...STK 500 AVR Studio und ab ging es...
Na es wird werden , denke ich..
Gruss und Dank
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Englische Anleitung gelesen und verstanden? Die Handhabung hat ja doch Fallstricke.
Wie sind denn die Fehlermeldungen, wenn das Programmieren nicht klappt?
Ups, warum nicht gleich einen eigenständigen ICSP-Adapter für das PICkit?
Mit den Adaptern hast du jetzt auch noch das ganze EasyPIC-40 als Fehlerquellenspender im Boot.
Ich denke auch, dass du das noch hinkriegst. Bist ja sehr ausdauernd.
So ich habe einen kleinen Zwischenstecker gebastelt, zur separaten Einspeisung von Vdd (3.3/5.0V), nun klappt alles.
Scheinbar will das PIC-KIT3 von Sure-Electronics das nicht so ganz mit der Target Spannung versorgen, immer ca 250mV Abfall und dann meckert das System.
Gerhard
- - - Aktualisiert - - -
Der Zwischenstecker mit NULL-Kraftsockel dient nur dem Easy-PIC40 weil der 40 Pinner sich schwer Einsetzen/Entfernen lässt, weil auf dem Board nur einfache Steckfassung und etwas verbaut, um per Hilfsmittel schnell mal den PIC aus hebeln zu können.
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Wird vom Stromverbrauch deiner Schaltung abhängen. So 50mA würd ich dem PICKit zutrauen.
Warum den Prozessor überhaupt rausnehmen? Ich hab mal auf das Bild von dem Board geschaut. Da gibts einen 6-poligen Westernstecker mit der Bezeichnung ICSP. Dies ist der Programmieranschluß. Microchip hat bei früheren Programmern diesen gerne benutzt. Darunter ist eine 6-polige Pfostenleiste. Da sind ebenfalls die 5 nötigen Anschlüsse für den PICKit (siehe meinen Post weiter oben). IMHO kann man den PICKit direkt 1 zu 1 anschließen.Der Zwischenstecker mit NULL-Kraftsockel dient nur dem Easy-PIC40 weil der 40 Pinner sich schwer Einsetzen/Entfernen lässt, weil auf dem Board nur einfache Steckfassung und etwas verbaut, um per Hilfsmittel schnell mal den PIC aus hebeln zu können.
Das Board ist so gebaut, daß man den Prozessor nicht rausnehmen muß. Es macht auch keinen Sinn, Man kann mit dem PICKit nur debuggen, wenn der Prozessor eingebaut ist.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Lesezeichen