mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm läuft nicht


Autor: Fichtendickicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bastle grad an einem Project in C18 und einem Pic 18F4685 rum. Ein 
bestehendes Programm funktioniert einwandfrei. Das neue macht nichts. 
Ich hab nun mal alles ausgeklammert und möchte nur, dass eine LED 
eingeschalten wird (Port B0). Auch das macht es nicht. Füge ich den 
gleichen Code beim alten Programm ein, funktioniert es. Woran kann das 
liegen?

#include <p18f4685.h>

#pragma config OSC = HS
#pragma config PWRT = ON
#pragma config WDT = OFF
#pragma config LVP = OFF


void main (void)
{
  TRISBbits.TRISB0=0;
  LATBbits.LATB0=1;

  while(1);
}


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal ins Datenblatt geschaut ?
Wahrscheinlich nicht. Die Ports müßen doch
bestimmt noch geschaltet werden. Oder sind die Digital usw....

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal auf die Zweitfunktionen des PORTB.
Deinen PIC kenne ich jetzt nicht. Falls auf
PB0 eine Analogfunktion liegt (ADC/Komparator)
musst du den Pin evtl erst auf Digital I/O umschalten.
Das geht evtl. auch über das Config Word wenn dort
PBADEN deaktiviert wird.

Autor: Fichtendickicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um das geht es aber nicht. Der Code läuft ja einwandfrei in dem alten 
Projekt. Im neuen nicht mehr. Ich hab linker Files usw überprüft scheint 
sonst alles in Ordnung zu sein

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Selber µC im alten Prg. ?
Alte Prg selber geschrieben, ist allso das selber was du hier postest ?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, Datenblatt mal gezogen ;)
Auf PB0 liegt AN10.

Füg doch mal folgendes hinzu

#pragma config PBADEN = OFF

Autor: Fichtendickicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, geht aber leider auch nicht

ich glaub ich hab den Fehler gefunden. Das compilierte Programm, also 
die Hex ist 160KB groß. Der PIC hat aber nur 96KB Programmspeicher. 
Sollte denn dann nicht MPLAB melden, dass der Code zu lang ist und in 
zweiter Instanz noch das Brennprogramm?

Autor: Fichtendickicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aja, ich das Programm ist teils von mir, ich benutze eine MMC-Lib von 
Microchip

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>danke, geht aber leider auch nicht

Hmm, dann kennt der Compiler PBADEN nicht.
War nur geraten. Sorry. Wie es wirklich heisst
weiss ich leider nicht. Dann würde ich jetzt an deiner Stelle
mal ADCON1 ändern.

>ich glaub ich hab den Fehler gefunden. Das compilierte Programm, also
>die Hex ist 160KB groß.

Quark. HEX Dateien sind ASCII Code. Die sind immer mindestens
doppelt so groß wie die Daten die wirklich drin stehen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hmm, dann kennt der Compiler PBADEN nicht.

Stimmt nicht, gerade bei google gefunden.
Er kennt PBADEN = Off. Dann würde ich mal sagen das
irgendwo in deinem Programm TRISB oder LATB wieder geändert wird.

Autor: Fichtendickicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Programm besteht aus nur den 3 Zeilen also kann da auch später 
nichts geändert werden. Mitlereile hab ichs mal geändert, aber auch ohne 
Erfolg


void main (void)
{

  TRISBbits.TRISB0=0;
  while(1)
  {
    LATBbits.LATB0=1;
    Delay10TCKYx(10);
    LATBbits.LATB0=1;
    Delay10TCKYx(10);
  }
}

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenn den MC nicht. Aber z.B auf einen 18f2550,
würde das Programm nicht laufen, weil die Register
nicht gesetzt sind. Hier wird es auch so sein.
Wie gesagt, siehe ins Datenblatt, welche Register
gesetzt werden müßen. Kann mir nicht, bei so einen
komplizierten µC, vorstellen das man da keine Register
setzen muß.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier das hier:
#include <p18f4685.h>

#pragma config OSC = HS
#pragma config PWRT = ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF

void main (void)
{
  TRISBbits.TRISB0=0;
  LATBbits.LATB0=1;
  ADCON1 = 0x0F;

  while(1);
}

Wenn das nicht funktioniert machst du woanders Mist.

Autor: Lukas B. (lukas-1992) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
teste mal das:

void main(void)
{
  LATB = 0x00; 
  TRISB = 0xFE;

  while(true)
  {
    LATB = 1;
    Delay10KTCYx(100);
    LATB = 0;
    Delay10KTCYx(100);
  }/
}


Autor: Lukas B. (lukas-1992) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja das musst du noch includen:

#include "delays.h"

Autor: Hermann U. (Firma: !www.pcb-devboards.de) (gera82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void main(void)
{
  LATB = 0x00; 
  TRISB = 0x00;      //Alle ausgänge
  ADCON1 = 0b00001111 // digital

  while(true)
  {
    PORTB.RB0 = 1;
    Delay10KTCYx(100);
    PORTB.RB0 = 0;
    Delay10KTCYx(100);
  }
}

so geht es bestimmt

Autor: Lukas B. (lukas-1992) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>
> #include <p18f4685.h>
> 
> #pragma config OSC = HS
> #pragma config PWRT = ON
> #pragma config WDT = OFF
> #pragma config LVP = OFF
> 
> 
> void main (void)
> {
>   TRISBbits.TRISB0=0;
>   LATBbits.LATB0=1;
> 
>   while(1);
> }
> 
> 

was mir noch aufgefallen ist:
Kann es eventuell sein das folgendes fehlt?

#pragma code

also

 #include <p18f4685.h>
 
 #pragma config OSC = HS
 #pragma config PWRT = ON
 #pragma config WDT = OFF
 #pragma config LVP = OFF
 

 #pragma code 
 void main (void)
 {
   TRISBbits.TRISB0=0;
   LATBbits.LATB0=1;
 
   while(1);
 }
> 
> 

Autor: Fichtendickicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für die Mühen

läuft aber trotzdem nicht. Wenn ich das alte Programm kompiliere. läufts 
auf Anhieb, was wohl heitßt, dass der PIC selber in Ordnung ist. Naja 
ich mal mal Schluss für heut, vll überlegt sichs der PIC bis morgen ja 
noch :)

Gruß
Tom

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.