Pic18 problem

Gast #2135950
Guten Tag,

ich hab ein kleines Problem mit meinem Pickit 3.
Hab ein programm geschrieben wo einfach nur ein paar Led´s angehen 
sollen und hab mich jetzt mit der konfig rum geschlagen.
Kompeliert bekommt man das auch alles, übertragen scheint auch zu 
funktionieren nur laufen tut nix.
Mir fällt solangsam nix mehr ein woran es liegen könnte einer von euch 
eine Idee!
freu mich über jeden rat

Programm:

//-------- INCLUDE --------

#include <p18cxxx.h>
#include "delays.h"
//-------- PIC CONFIG --------


#pragma config WDTEN  = OFF
#pragma config FOSC   = INTIO67
#pragma config LVP     = OFF
#pragma config LPT1OSC   = OFF
#pragma config PBADEN  = OFF
#pragma config STVREN  = OFF
#pragma config BOREN  = OFF


//-------- MAIN ROUTINE --------

void main(void)
{
  TRISD = 0x00;


  while(1)
  {

    LATD = 0x00;

    LATD = 0xFF;
  }


}

Gruß Björn
Angehängte Dateien:
Gast
Welcher PIC18 wird eingesetzt? Willst du debuggen oder hast du vor die 
LEDs mit einem Oszi abzugreifen? (Blinkfrequenz wird ziemlich hoch wenn 
du direkt hintereinander den Port setzt bzw. löscht)
Gast
Es ist der Pic18F45K20 verwendet.
Würd mir schon reichen wenn ich das mit dem Oszi abgegriffen bekomme.
Wäre froh wenn der Pic überhaupt mal was macht.
Gast
Ich glaub du musst genauer erklären was du machst und was du erwartest 
bzw. was nicht funktioniert. Auf den ersten Blick sehe ich jetzt keine 
schlimmen Fehler, der PORTD sollte auch laut Datenblatt ohne weiteres so 
nutzbar sein.

Also, wie gehst du (der Reihe nach) vor? Wie sieht deine Hardware aus?
Bjoern schrieb:
> //-------- MAIN ROUTINE --------
>
> void main(void)
> {
>   TRISD = 0x00;
>
>
>   while(1)
>   {
>
>     LATD = 0x00;
>
>     LATD = 0xFF;
>   }
>
>
> }
>
> Gruß Björn

Servus,

nimm unbedingt das LATD = 0x00; wieder raus - es bringt nix außer, dass 
du nur 50% duty-cycle am Pin hast.

Unbedingt rausnehmen.

Spannungsversorgung checken (direkt an den Pins messen).

Was ist mit deinem MCLR? Hoffe der liegt auf Vdd (+5V bzw. 3.3V je 
nachdem). Wie hast du das gemacht?

Alle GND und Vdd beschaltet?



Noch eine kleine Sache - ich bin mal einen halben Tag vor meinem 
Programm gesessen und es lieft auch nix.

Ich hatte den ICD2 (damals) dran - das Programm wollte einfach nicht 
loslaufen.
MPLAB:
Project -> Build Configuration
bei mir war damals das Häckchen bei 'Debug'. Das musste aber bei 
'Release' stehen, dann lief das Programm los.

Viel Erfolg
Gast
Guten Morgen,

Also hab gerade LATD = 0 wieder rausgenommen was an der situation nix 
ändert.
Hab gerade das Oszi mal angeschmissen und nachgemessen.

Versorgungsspannung liegt an. Das Pickit 3 versorgt Ihn mit 3.5 V.
Am Pin MCLR liegen kurzfristig beim Pogrammieren ca. 8 V an. Wird auch 
direkt über das Pickit angesteuert, das geht direkt auf den pin 1 des 
Pickit und pin 1 soll laut anleitung VPP/MCLR sein.

Mplap steht auch auf Release.
Nach dem Programmieren bekomme ich auch die Meldung Programming...
Programming/Verify complete. Nur anlaufen will das ganze nicht.
Gast
Ja sind sie, das ist ein Demoboard von Microchip was direkt dabei war. 
Am anfang war auch ein Demoprogramm von denen aufgespielt und dort 
Funktionierte alles.
Müsste also Hardwaremässig alles okay sein.
Scheint Irgendwie an der Software zu liegen bzw. eventuell an der Config 
oder MPLAP
Gast
Hallo so jetzt hab ich das Programm der Lesson 1 ausprobiert.
Habs rauskopiert und Compiliert und es geht auch nicht.

Mir ist jetzt aufgefallen das ich beim linker script nur den 
18f45k20.lkr auswählen kann und nicht wie gefordert den 18f45k20i.lkr 
ich weiß jetzt nicht ob es daran liegen kann. Ich weiß nicht was der 
unterschied ist ob mit oder ohne "i"
Hi

ISt schlecht dokumentiert.
Hat mich auch verwirrt.

In der aktuellen Version vom C18 und dMPLAB braucht man KEIN 
Linkerscript mehr anzugeben. Das "i" war wohl für das Hardware Debuggen 
notwendig.
Jetzt erzeugt MPLAB automatisch die richtigen Einstellungen.
Also im Projekt NUR den C-Code eintragen.

Kannst Du auch mal den Software MPLAB SIM Debugger laufen lassen.
Dann siehst Du, das der Code funktioniert.

Du kannst auch mal NUR die HexFiles brennen. Die müssen auch laufen.

Gruß
Thomas
Gast
TRISD = 0  muß drinbleiben, weil sonst der ensprechende Pin nicht auf 
Ausgang geschaltet wird.


>#pragma config FOSC   = INTIO67
Das bedeutet du benutzt den:
OSC = INTIO67 INTRC-OSC2 as RA6, OSC1 as RA7
Na ob das defaultmäßig was wird?

Ich schlage vor:
//Oscillator Selection bits:
#pragma config FOSC = HS

Und probier mal die
STVREN = OFF Stack overflow... kannste hier eigentlich weglassen.


Ich empfehle dir das PIC18 CONFIGURATION SETTINGS ADDENDUM, in diesem 
Kochbuch sind die Configs alle schön aufgelistet. Hat mir in der 
gleichen Situation mit einem Olimex-Board weitergeholfen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.