mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC18F4550 - PIC macht "nix"


Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe Schwierigkeiten meinen PIC18F4550 in Betrieb zu nehmen!

Ich habe zunächst erstmal nur vor mit dem PIC ganz simpel zwei LEDs und 
einen Piezosummer zu schalten, alle jeweils mit Transistor verschaltet.
Wenn ich den PIC aus der Fassung nehme und an die jeweiligen Steuerpins 
5V anlege leuchten die LEDs und der Piezosummer summt, also stimmt 
schonmal der "Rest" der Schaltung.

Allerdings macht es der PIC nicht. Ich programmiere den PIC in C und 
habe als Taktquelle einen 20MHz Quarz mit 15pF Lastkondensatoren 
gewählt. Die 15pF habe ich aus dem Datenblatt so entnommen.

Ich habe mal ein Screenshot vom Signal am OSC2 Pin gemacht und 
angehängt.
Was ich komisch finde: Wenn ich am OSC1 Pin mit dem Scope messe und ich 
so vorgehe, dass ich den Tastkopf mit an den PIN hänge und DANN die 
Spannung einschalte, dann messe ich ein Signal 20Mhz und ca. 2,3V mit 1V 
Offset.

Wenn ich aber wiederum es umgekehrt mache also die Spannung einschalte 
und jetzt erst mit dem Tastkopf an den PIN gehe, messe ich das selbe 
Signal aber mit 2,8V Amplitude (immer noch 1V Offset!).

Am Ausgang (OSC2) ist bei beiden Varianten das Signal wie im Anhang!

Hier jetzt nochmal mein Code, ganz simpel möchte ich nur die drei 
Ausgänge auf High schalten:
#include <p18f4550.h>               // Für den PIC - wird autom. erkannt
#include "delays.h"                      // Für die Warteschleife 

#pragma config FOSC=HS            // Taktbereich auswählen
#pragma config PWRT=ON            // Power On Timer An
#pragma config WDT=OFF            // 
#pragma config BOR=OFF            // Brown Out Reset Aus
#pragma config LVP=OFF            // Low Voltage Programming Disable
#pragma config PBADEN=OFF          // 
#pragma config VREGEN=OFF          //
#pragma config MCLRE=ON            // Master Clear Reset An



void main(void)  
{
    LATA = 0x00;                    // PORTA löschen (kann beim Start undef. Zustand annehmen)
    LATB = 0x00;                    // PORTB löschen (kann beim Start undef. Zustand annehmen)
    LATC = 0x00;                    // PORTC löschen (kann beim Start undef. Zustand annehmen)
    LATD = 0x00;                    // PORTC löschen (kann beim Start undef. Zustand annehmen)
    LATE = 0x00;                     // 

    TRISA = 0x29;                   // 
    TRISB = 0xFC;                   // 
    TRISC = 0x02;                   //   
    TRISD = 0x00;                   // 
    TRISE = 0x00;                   // 

    ADCON1 = 0x0F;          // Alle Port Pins auf Digital gesetzt

//  GLCD_Init();
//  Setup_ADC();

  while(1);
  {
    LATAbits.LATA2 = 1;      //  
    LATEbits.LATE0 = 1;      //
    LATAbits.LATA4 = 1;      //  
  }
}

Dann habe ich nebenbei gleich nochmal eine Frage und zwar arbeite ich 
bei dieser Schaltung mit ICSP der Brenner erkennt den PIC und brennt ihn 
auch ohne Probleme. Jetzt meine Frage muss ich eigentlich dann RB7/6 als 
Eingänge konfigurieren oder spielt das keine Rolle?

Ich hoffe Ihr wisst was da schief läuft und ich bedanke mich jetzt schon
im voraus für jeden der helfen möchte!!

LG Nico

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oh der Anhang ging wohl verloren!

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe mal den 20Mhz mit den beiden 15pF durch 4Mhz und 2x 30pF 
getauscht das hat am Verhalten nix geändert! Aber jetzt gefällt mir das 
Signal an OSC1 besser (3,8V @4Mhz OHNE Offset)!

Irgendwelche Tipps?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan ?

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#pragma config MCLRE=ON            // Master Clear Reset An

1. Stell den mal OFF oder leg den MCLRE per Widerstand auf VDD.

2. Mach die Kondensatoren mal grösser, ich habe gute Erfahrungen mit 27 
oder 33 pF gemacht.

3. An OSC1 zu messen, verfälscht die ganze Charakteristik des 
Oszillators. Man darf PICs nur an OSC2 messen.

4. Beim Brennen sind die Zustände von RB6/RB7 egal.

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5. Mal auf den internen 8 MHz - Oszillator umschalten, um Probleme mit 
dem externen Quarz auszuschließen.

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hätte den Schaltplan gerne als Grafik angehängt der ist aber so 
groß, dass wenn ich einen Screenshot mache man die Werte etc. nicht mehr 
lesen kann daher die Target Datei im Anhang wer Target nicht hat ich 
beantworte auch alle Anfragen.

Zu 1. Habe den MCLRE Pin über 20K und 1N4148 auf Vdd.
Zu 2. Wie gesagt habe schon auf 4Mhz gewechselt und damit 30pF, hilft 
nicht.
Zu 3. Gut zu wissen!
Zu 4. Danke!
Zu 5. Kann ich dann die Verbindungen bei behalten oder muss ich den 
Quarz auslöten?

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ist so zwar nicht gerade komfortabel aber ich hoffe es geht 
einigermaßen.

edit: Die Batterie und der Goldcap sind nicht bestückt!

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Zu 5. Kann ich dann die Verbindungen bei behalten oder muss ich den
> Quarz auslöten?
Kann angeschlossen bleiben.

Oha, das ist mal ein wilder Schaltplan. Da würde mich dann doch dazu 
auch ein Foto des Aufbaus interessieren...

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:
  • preview image for t.jpg
    t.jpg
    211 KB, 438 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Ja der Schaltplan entstand immer so nach und nach, da wurde es dann 
etwas wirr =)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll denn da für ein LCD dran ?
Ein normales LCD hat 6 Leitungen und mehr nicht.
Und was soll die Diode D1,D2 für einen Sinn haben ?

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, kommt ein Grafik LCD dran aber das später. Die Diode D1 ist eine 
Schottky Diode zum entkoppeln der Vdd/PIC von Vdd/Rest damit mein 
Brenner nicht die ganze Schaltung (dann GLCD) mit 5V versorgt. Und die 
D2 ist auch wegen dem ICSP, damit die Programmierspannung von 12V nicht 
leitend zu den 5V verbunden ist.

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wer es sich an tun will, mal als PNG angehängt

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Autor: Sebastian Hepp (sebihepp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Microchip sollten beim Quarz beide Anschlüsse über ein C nach GND.

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Laut Microchip sollten beim Quarz beide Anschlüsse über ein C nach GND.
...und laut Schaltplan und Foto hat der TE dies auch korrekt 
umgesetzt...

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin echt am verzweifeln.. woran liegt das denn zum Geier ^^
@ Sebastian, Hey danke habe ich aber gemacht.. =/

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Photo: Die Quarze und die Last-Kondensatoren sind für 20MHz 
erkennbar zu weit vom PIC weg. So dicht wie möglich, die Cs am besten 
gleich an den PIC (da kleiner), danach unmittelbar den Quarz.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja habe das auch schon wo anders gelesen habe daher auch den 20Mhz durch 
einen 4MMhz Quarz ersetzt mit jeweils 30pF Last Kondensatoren.

Also bei 4Mhz kann der Abstand nicht mehr das Problem sein, das habe ich 
nämlich schon bei x anderen Schaltungen (anderer PIC) genauso gemacht =(

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste mal ein Oszill.-Photo vom Anschluss OSC2.

Noch ne Idee_1: schliess mal einen Widerstand 330 Ohm zwischen Quarz und 
OSC2 an (so wie bei den Resonatoren im Datenblatt) oder einen Widerstand 
1 MOhm parallel zum Quarz.

Noch ne Idee_2: Bau Dir aus einem Gatter (Inverter), Quarz und den 
Kondensatoren einen externen Oszillator (oder nimm einen fertigen, falls 
vorhanden) und schliess den an OSC1 an. Wenns dann geht, ist es das 
Platinenlayout.

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier an OSC2 gemessen..

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte aber ein Rechteck sein ...

Brauchst Du denn unbedingt - z.B. wegen zeitkritischer Dinge - einen 
Quarz für den Oszillator, bei mir reichen in 90% der Schaltungen die 1% 
Genauigkeit des internen Oszillators. Wie ich sehe, hast du ja auch den 
timer1 schon für einen Quarz vorgesehen (mache ich auch gerne), da 
kannst Du ja auch genaue Zeiten abgreifen. Oder nimm einen Resonator 
(0.5% Genauigkeit), 20 MHz sind aber schwierig zu beschaffen (z.B. bei 
http://www.futurlec.com/ICCrystalsResonators.shtml, Lieferzeit meist 
etwa 2 Wochen).

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Güte, jetzt teste das Ganze doch einfach mal mit dem internen 
Oszillator.
Ich glaube nicht, dass es an der externen Taktversorgung liegt. Das Ding 
schwingt doch ganz passabel.
Vielleicht baut der Compiler auch einfach nur Mist oder es liegt 
anderweitig ein Problem in der Software vor. DAS solltest Du zuerst 
ausschließen und dafür gibt es keinen einfacheren Weg als über den 
IntOsc.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, nein für den PIC als Takt ist es unkritisch, da ich ja wie du ja 
schon erkannt hast den Timer1 vorbereitet habe. Kannst du mir sagen wie 
man den internen Oszillator verwendet?

Ich habe im Datenblatt erstmal nur das OSCCON Register gefunden und 
würde daraus erstmal schließen, dass ich SCS1 und IRCF0-2 auf 1 setzten 
muss, ist das richtig? Was muss noch gemacht werden..?

Danke soweit schon mal ... =)

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kannst du mir sagen wie man den internen Oszillator verwendet?
> Ich habe im Datenblatt erstmal nur das OSCCON Register gefunden und
> würde daraus erstmal schließen, dass ich SCS1 und IRCF0-2 auf 1 setzten
> muss, ist das richtig? Was muss noch gemacht werden..?

An dieser Stelle ist die Hilfedatei "hlpPIC18ConfigSet.chm" aus dem 
C18-Doc-Verzeichnis sehr zu empfehlen.

Ich würde erstmal folgendes vorschlagen:

Config Bits:
FOSC = INTOSC_HS

...und dann noch im OSCCON-Register die Frequenz konfigurieren
(wenn Du dies nicht tust - auch nicht schlimm - dann läuft der PIC 
standardmäßig mit 1 MHz).

gruß
daniel

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kenne mich mit C nicht so aus, aber eine fehlende Compare-Zuweisung ist 
ein Fehler, den ich immermal gerne vergesse.
CMCON=0x07

Ausserdem gefällt mir deine MCLR-Beschaltung nicht, setze den Pin 
einfach mal an Gnd, zum Testen.

USB hast du nicht in der Configuration eingeschaltet?

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also habe mal die Config wie folgt geändert:
#pragma config FOSC=INTOSC_HS    // Taktbereich auswählen
#pragma config PWRT=ON      // Power On Timer An
#pragma config WDT=OFF      // 
#pragma config BOR=OFF      // Brown Out Reset Aus
#pragma config LVP=OFF      // Low Voltage Programming Disable
#pragma config PBADEN=OFF    // 
#pragma config VREGEN=OFF    //
#pragma config MCLRE=ON      // Master Clear Reset An

Und dann noch die Frequenz auf 8Mhz eingestellt:
OSCCONbits.IRCF0=1;
OSCCONbits.IRCF1=1;
OSCCONbits.IRCF2=1;

@Helmut, die Beschaltung für den MCLRE Pin habe ich mir so von Sprut ab 
geguckt: http://www.sprut.de/electronic/pic/icsp/icsp.gif

USB ist nicht eingeschaltet.. Ich werde die Comparatoren mal einstellen 
bzw. aus stellen.. mal schaun.

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe gerade: USBVoltage ist ausgeschaltet.
Wenn nichts hilft, könnte ich dir mal ein Testprogramm zum Testen der 
Ports schreiben.

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MCRLE gehört NICHT an GND, da dann Dauer-Reset


für die CONFOG:

   FOSC = INTOSC_HS     ; die PLL geht nur beim Quarz,
                        ; nicht beim int. Oszillator

und weiter in Assembler:

   movlw b'01110010'    ; int. Oszill. 8 MHz
   movwf OSCCON

bzw. in C:

   OSCCONbits.SCS1=1;
   OSCCONbits.SCS0=0;

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe den internen Oszillator eingeschaltet, so lange das 
richtig war:
#pragma config FOSC=INTOSC_HS    // Taktbereich auswählen

OSCCONbits.IRCF0=1;
OSCCONbits.IRCF1=1;
OSCCONbits.IRCF2=1;

..dann noch die Komparator Eingänge deaktiviert:
CMCON=0x07;

und dann nochmal den internen Oszillator ausgeschaltet und die 
Abschaltung der Komparator Eingänge behalten. Nichts passiert. Habe 
jetzt noch mit rein geschrieben, dass er den kompletten PORTD auf High 
setzten soll:
LATD=0xFF;

..und hier passiert auch nichts.


@Helmut, das wäre super! Vielleicht ist ja auch der PIC kaputt wobei
ich das noch nie erlebt habe zumal lässt er sich auch problemlos 
brennen..

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst noch die SCS-Bits im OSCCON setzen (siehe oben)

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und schalte den verdammten MCLRE ab, der stört nur

#pragma config MCLRE=OFF

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LatD=0xFF ? nicht PortD=0xFF

Nagut, ich setze mich gleich mal hin, Quarz 8Mhz hast du?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>... und schalte den verdammten MCLRE ab, der stört nur
>#pragma config MCLRE=OFF

Das lässt er besser mal schön so wie es ist.
Ich würde mir mal ein Multimeter schnappen
und den Pegel am Reset Pin messen. Wenn da keine
5V sind dann läuft auch nix.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hatte ich zu spät gelesen. Also auch wenn ich den internen 
Oszillator benutzte funktioniert es nicht (auch bei abgeschaltetem 
MCLRE).

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn ich den MCLRE aus schalte und INTOSC verwende hab ich doch ein 
Problem oder:

http://www.sprut.de/electronic/pic/fallen/fallen.h...

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den MCLRE braucht er nicht, da mit

#pragma config PWRT=ON      // Power On Timer An

ein sauberer Reset gesichert ist und die Schaltung sowie keinen 
Hardware-Reset vorsieht.

Autor: stephan_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das INTOSC und MCRLE-Problem gibt es nur beim Brennen. Ich habe mit 
dieser Configuration aber noch nie Probleme gehabt.

Dazu eine Idee: kann der Brenner den PIC auslesen? Dann schau mal, wo 
das Programm steht.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am MCLR habe ich 4,77V durch die Diode bedingt aber das hab ich wie 
gesagt so von Sprut und das kann auch nicht die Ursache sein, da ich das 
bei vorher gehenden Schaltungen genauso gemacht habe.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann den PIC auslesen habe dann das Hex File hilft das? Also kann 
man daraus erlesen wo das Programm steht?
:020000040000FA
:100000006FEF00F012000000060EF66E000EF76EA5
:10001000000EF86E00010900F550656F0900F550FB
:10002000666F03E1656701D03DD00900F550606F50
:100030000900F550616F0900F550626F0900090071
:10004000F550E96E0900F550EA6E09000900090053
:10005000F550636F0900F550646F09000900F6CF91
:1000600067F0F7CF68F0F8CF69F060C0F6FF61C0C5
:10007000F7FF62C0F8FF0001635302E1645307E039
:100080000900F550EE6E6307F8E26407F9D767C020
:10009000F6FF68C0F7FF69C0F8FF00016507000EB2
:1000A000665BBFD71200896A8A6A8B6A8C6A8D6A1E
:1000B000290E926EFC0E936E020E946E956A966AED
:1000C0000F0EC16ED388D38AD38CD382D390070E00
:1000D000B46EFFD789848D8089888C68120013EEF6
:1000E00000F023EE00F0F86A019C04EC00F084ECD0
:1000F00000F053EC00F0FBD7120000EE00F00F0E02
:0A010000EE6AEA62FDD71200120059
:020000040030CA
:0E0000003F0B181E000181000FC00FE00F40E3
:00000001FF

Das erscheint mir auch irgendwie ein bisschen wenig oder?
Ich benutze übrigens noch den Brenner8 von Sprut.

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häng mal das List-File (also die vom Compiler erzeugte 
Assembler-Listing-Datei) von Deinem Programm hier an. Und das C-File 
gleich mit.

> Du musst noch die SCS-Bits im OSCCON setzen (siehe oben)
Nicht nötig, die SCS-Bits stehen standardmäßig auf der primären 
Taktquelle (und diese ist ja nun bereits über FOSC auf den internen OSC 
festgelegt).

> LatD=0xFF ? nicht PortD=0xFF
Port beschreiben: LatD
Port lesen: PortD

> Das erscheint mir auch irgendwie ein bisschen wenig oder?
Wieso? Was tut Dein Programm denn schon großartiges? :-D

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Da hast du auch wieder recht =) Ja LATD ist mir schon klar hab mich nur 
vertippt ist aber richtig im Programm. Okay dann hier mal die beiden 
Dateien!
Ich weiß nicht genau welche Datei du damit meinst aber habe mal alles 
aus dem Ordner angehängt!

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hab jetzt nicht alles genau gelesen, aber hab gesehen, dass Du die 
20MHz, die dein Quarz liefert nicht teilst, da der PIC nur 4 MHz 
verträgt.

Ich würd folgende Einstellungen machen: (Der PIC läuft dann intern mit 
48 Mhz-- generiert durch PLL (96Mhz) / 2 = maximale Arbeitsfrequenz des 
18F4550)

FOSC = HSPLL_HS
PLLDIV = 5      //Divide by 5 (20 MHz oscillator input)
CPUDIV = OSC1_PLL2     //[OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]

PLLDIV (Prescaler) musst Du auf jeden Fall machen, da der Input wie 
gesagt nur 4 MHz verträgt.

Versuch mal diese Einstellungen und berichte dann.

MfG Darkleon

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vergessen..

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zusatz:

So werden auch praktischerweise gleich die 96MHz für USB 2.0 generiert. 
Falls Du USB später mal brauchst.

Schön zu sehen auf Seite 26 des Datenblattes.

MfG Darkleon

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Darkleon,
also habe deinen Tipp mal übernommen hat aber leider ebenfalls nicht zum 
Erfolg geführt. Trotzdem danke für die vielen Tipps!!!

edit: spielt ja jetzt erstmal keine Rolle da ich eh auf 4Mhz gewechselt 
habe sollte also kein Problem sein (ohne Teiler).

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hast Du auch folgendes aus Deinem Code genommen?
OSCCONbits.IRCF0=1;
  OSCCONbits.IRCF1=1;
  OSCCONbits.IRCF2=1;
    OSCCONbits.SCS1=1;
    OSCCONbits.SCS0=0;

Das gehört dann klarerweise nicht mehr dazu, da Du wieder mit Deinem 
externen Quarz arbeitest ;)

Meld Dich dann wieder.

Mfg Darkleon

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zusatz:

Und natürlich das:
CMCON=0x07;

MfG

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ja selbstverständlich das habe ich raus genommen.

Aber CMCON=0x07; sollte doch stehen bleiben, sonst sind ja die Eingänge 
wieder auf Komparatorbetrieb?!?

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt;)

In Deinem riesigen Schaltplanbild (arbeite mit einem 10" Netbook) sehe 
ich, dass der 20 MHz Quarz mit nur einem Kondensator nach GND verbunden 
ist. Es gehört aber an jedes Beinchen ein eigener Kondensator und die 
zusammen dann auf GND (Oder hab ich das nur nicht gesehen). Auch konnte 
ich die 100nF Kondensatoren zwischen VDD und GND am PIC nicht finden. 
(mit 10" und Mouspad ist das große Bild schnell unübersichtlich ;)). Die 
100nF kommen auf beide Seiten (Der Controller hat ja links und rechts 
VDD und GND, und diese müssen auch beschalten sein).

Hab ich das nur nicht in Deinem Schaltplan gesehen, oder hast Du es 
anders??

MFG Darkleon

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das Assemblerlisting nicht erzeugt wird, dann tu bitte Folgendes 
(und zwar für den C-Code, den Du vorhin bereits angehängt hast!):

1.) Compilieren
2.) View->Disassembly Listing (daraufhin erscheint dieses in einem 
Fenster)
3.) Dort Rechtsklick und "Output to file..." wählen.
4.) Den Ranz hier mit Anhängen.

@alle anderen:
Vielleicht erstmal nicht weiter Verwirrung mit unterschiedlichsten 
Oszillatoreinstellungen stiften. Der interne OSC ist in diesem Fall 
definitiv die einfachste/sicherste Methode und wenn sich hier schon 
nichts rührt, dann liegt es wohl eher am Code des Testprogramms (oder 
doch an der Hardware...)

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Darkleon ist alles angeschlossen siehe Anhang!

@Zwirbeljupp, die txt ist im Anhang, danke dass du dich so rein hängst 
=)!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:020000040030CA
:0E0000003F0B181E000181000FC00FE00F40E3

Die Config Words sehen gut aus. Eigentlich müsste der jetzt
mit INTOSC laufen.

Da ist doch was oberfaul;)

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zwirbeljupp!

Also ich schließe mal die Software aus, denn er hat den richtigen PIC 
gewählt.
Dann definiert er z.B.: den kompletten Port D mit 0. Danach setzt er den 
kompletten Port auf Ausgang und in seiner Schleife schaltet er den 
kompletten PortD auf High. Auch wenn einige Pins am PortD mit 
irgendeiner Hardware standardmäßig arbeiten sollte zumindest eine (oder 
mehrere LEDs leuchten).

Voausgesetzt ist natürlich, dass der Teiler (bei 4MHZ nicht notwendig) 
richtig eingestellt ist, die richtige Option für den Takt ausgewählt ist 
(HS,HS_PLL,...),der Quarz und die Versorgnungspins korrekt mit 
Kondensatoren beschaltet sind und die richtige Spannung an den richtigen 
Pins anliegt ;).

Ist eines nicht korrekt läufts nicht, und da die Software schon mit fast 
allen möglichen Taktmöglichkeiten probiert wurde (und diese durchaus 
korrekt waren) schließe ich die Software aus.

MfG Darkleon

Autor: Helmut H. (der_andere)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei ein Testprogramm, macht bei 8Mhz jedes PortPin für 1 sek auf High.
Konnte es nicht testen. Habe iM nur ein 2550, da lief es(Beschränkte 
Ports)
Gruß Helmut

Autor: Darkleon (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ja Deine Anschlüsse sind falsch. Richtigerweise (auch zu sehen im 
Datenblatt) im Anhang. Der 100nF Kondensator zwischen VDD und GND soll 
so knapp wie möglich an den PIC. So wie im Anhang dann auch auf der 
rechten Seite des 18F4550,denn dort hat er auch Pins für VDD und VSS. 
Diese müssen auch mit der Versorgungsspannung verbunden werden.

Also korrigiere das mal und versuche es mit dem externen Quarz, 
(Anschluss auch im Anhang).

Dann sollte es hardwaremäßig keine Probleme mehr geben.

Gib dann Bescheid.

MfG Darkleon

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh Gott, wie bin ich denn heute drauf.....

Sorry,vergiss meinen letzten Post. Hast es ja eh korrekt. Sah nur die 
zweiten Kondensatoren bei den Quarzen nicht....

Sorry..muss mal eine Rauchen gehen ;)

Mfg Darkleon

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi =) So ist es auch.

Ich habe beide Vdd und beide Vss verbunden und zusammen dann mit einem 
100nF gekoppelt. Der 100nF ist aller höchstens 2cm von den Pins 
entfernt.

siehe Anhang, LG

edit: Ok hat sich ja dann erledigt =) Kein Problem ich freue mich dass 
mir geholfen wird!!

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solltest deinen 2200µF Elko mal überdenken, der Ladestrom könnte die BAT 
gefährden. 2200 am Eingang Spannungsregler -->7805  --->Diode--->100µF 
sollte auch gehen.
Ist eigentlich Schade, dass du den USB-Kram nicht benutzt und die GLCD 
Pins so benutzt. Wäre `ne schöne Sache für Später.
Aber, deine Sache ;-)

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp. Ja also Schade ist es stimmt schon aber das ist erst 
mein 2. mal mit einem GLCD und dieses hat dazu noch Touch deshalb will 
ich erstmal Schritt für Schritt anfangen. Und jetzt läuft ja nicht mal 
der PIC ^^

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du das auch auf einem Steckbrett?

Ich glaube nämlich immer noch, dass nur ein 100nF für beide VDDs zu 
wenig ist, denn ich auf beiden Seiten jeweils einen 100nF und in 
diversen Schaltplänen im Netz hab ich auch immer zwei gesehen. Bei mir 
läufts (zwar nicht Dein Code, da ich momentan keine Möglichkeit habe den 
zu testen) und ich glaube deshalb,dass nur ein 100nF zu wenig ist..Kann 
mich aber natürlich auch täuschen.

MfG Darkleon

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne habe es leider leider nicht aufm Brett... das wäre evtl. noch ne 
Möglichkeit. Ich werde einfach einen rein löten Masse habe ich ja eh 
überall (Polygon)..

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hast Du das auch auf einem Steckbrett?

Die Fotos oben nicht gesehen? Ich vermute
das da auf der selbstgebastelten doppelseitigen Platine
irgendwo ne Durchkontaktierung fehlt.

Autor: PIC Nico (eigo) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ein zusätzlicher 100nF direkt an dem PIN der erst den Bogen hinter 
dem 1. 100nF herum macht. An den beiden gelben Stellen im Bild (s. 
Anhang).
Aber das hilft auch nicht!

Autor: Helmut H. (der_andere)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal wie weit meine C`s sind. Dass es überhaupt nicht läuft hat 
sicher noch andere Ursachen

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
> Ich vermute
> das da auf der selbstgebastelten doppelseitigen Platine
> irgendwo ne Durchkontaktierung fehlt.

Wieso? Es liegen doch überall die entsprechenden Signale an? Und der PIC 
und der Quarz hat Verbindung zur Masse.

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi holger.

Klar hab ich die gesehen.
Ich hab aber geschrieben, ob er das AUCH auf einem Steckbrett hat.

Also zwischen
> Hast das auch auf einem Steckbrett?
und
> Hast das auf einem Steckbrett?

ist ein Unterschied, oder??

P.S.: Nich böse nehmen ;)

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Testprogramm läuft auch nicht?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hi holger.
>
>P.S.: Nich böse nehmen ;)

Tu ich doch nicht;)

>Wieso? Es liegen doch überall die entsprechenden Signale an? Und der PIC
>und der Quarz hat Verbindung zur Masse.

Ja, wenn dein OSCI dranhängt schwingt der Quarz auch. Das sieht
eigentlich alles gut aus. Dein Programm läuft aber nicht.
Läuft es mit OSCI dran? Hast du das Programm von Helmut versucht?

Das stinkt doch geradezu nach Hardwarefehler!

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi mit dem Code von Helmut passieren jetzt diverse neue Dinge, kannst du 
mir mal genau beschreiben was du in dem Programm geschrieben hast? 
INTOSC?

Ich werde morgen weiter machen.. Melde mich dann wieder! Danke !!

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird Nicolas doch hoffentlich "spannungsmässig" an den Prozessorpin`s im 
Betrieb durch gemessen haben, soviel Zeit wie schon in der Fehlersuche 
steckt.

Aber, wer kennt es nicht, die einfachsten Fehler sieht man nicht.  --->
ein neuer Tag, eine andere Sichtweise.... ;-) und da haben wir den 
Fehler....

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen knacken wir's =)
So schaue Championsleague man man Bayern liegt 0:2 zurück =)
Bis morgen!

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Recht hast du, mal was anderes sehen.
Das Programm macht als Enlosprogramm für PortA.0 bis PortD.7 für 1 Sek 
High an den entsprechenden Pin und schaltet ihn dann wieder aud Gnd.
Solltest deine Peripheriechips für den Test besser rausnehmen.

So:
while true


PortA.0=1
delay_ms(1000)
PortA.0=0

PortA.1=1
delay_ms(1000)
PortA.1=0

PortA.2=1
delay_ms(1000)
PortA.2=0

.....bis....

PortD.7=1
delay_ms(1000)
PortD.7=0

wend

'   Main program
end.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso! Ja gut dann funktioniert dein Programm!
Ich dachte es würden alle an.. 1s.. alle aus.

Kannst du mir die C Datei schicken? Jetzt brenne ich aber darauf was der 
Fehler ist.

Nabend

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie geil ist das denn.. Bayern hat ManU raus gehauen :D herrlich!

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ja kein Bayern Fan, aber England, nee, dann lieber Bayern.


Ist kein C-Programm, MikroeBasic, für C reicht mein Brain nicht.

Man kann aber auch mit Basic brauchbare Programme basteln.

Aber jetzt keine Diskussion ob C oder was weiß ich, jeder nach seinen

Fähigkeiten und Geschmack. Was hinten raus kommt zählt.

Siehe mein GLCD-Touchscreen-Modul für CAN- oder USB-Kontroller.

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ja ärgerlich. Dann habe ich jetzt aber den Beweis, dass meine 
Hardware i.O. ist. Also mal wieder ein bisschen nach 1 und 0 suchen =)

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Zeit mit einer Sekunde kommt hin?

Ausserdem, das ist doch erfreulich.

Freu dich darüber, seih stolz auf diesen Teil.

Mit dem C-Programm kann dir sicherlich auch jemand helfen.

Mach erst einmal ein ganz einfaches Main-Programm, PortB.1 blinken 
lassen

zB, damit testest du deine Configuration, wenn Das läuft mach weiter.

Viel Erfolg

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, bin gerade erst dazu gekommen, mir das Assemblerlisting zur Brust zu 
nehmen. Und - entgegen aller Zweifler - es liegt natürlich doch an einem 
verkorksten Programm!

Man schaue sich einmal folgenden Ausschnitt aus dem zuvor von Nicolas 
geposteten Code genau an:

  while(1);
  {
    LATAbits.LATA2 = 1;      //  
    LATEbits.LATE0 = 1;      //
    LATAbits.LATA4 = 1;      //  
  }


Man sieht es leider erst auf dem zweiten Blick, aber dann ist es 
ziemlich klar, warum weder Pin A2, E0 noch A4 gesetzt werden ;-)
Die Lösung des Rätsels gibts nach der Kaffeepause...

Gruß
Daniel

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar! Das ";" hinter while muss natürlich weg!
Man ey immer sone Kacke ^^ Vielen vielen Dank an alle!!!

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bedeutet das, es läuft?

Hat dein Entwicklungssystem keinen Simulator?

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja läuft! Doch hat sie hätte ich mal benutzen sollen aber hinter her ist 
man ja immer schlauer.

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.