Forum: Mikrocontroller und Digitale Elektronik rudimentäre C-Programmierung PIC 18F6680


von Michael h. (mzninja)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

bin für ein Studienprojekt dabei einen PIC mit CAN zu programmieren. 
Grundlage ist dabei das Board von Modtronix SBC68EC. Ich bin langsam am 
Verzweifeln weil ich nicht mal die einfachsten Sachen darauf zum Laufen 
bekomme. Nach verschiedenen Versuchen mit Code-Samples von der 
Microchip-Homepage habe ich nun folgenden Code übertragen um einfach nur 
die LED an und aus zu schalten und nicht mal das funktioniert.

Welche grundlegenden Fehler mache ich bei der Erstellung des Codes? Die 
Programmierung der 16F690 hat immer problemlos funktioniert.

#include <cpuconf.h>
#include <stdio.h>
#include <stdlib.h>
#include <p18f6680.h>
#include <p18cxxx.h>
/*
 *
 */


void main(void) {

TRISB = 0x00;

    PORTB = 0xFF;
    return;
}

meiner bescheidenen Meinung nach müssten diese Zeilen den Port B als 
Eingang definieren und dann alle Ports auf 1 setzen.

von micha (Gast)


Lesenswert?

Nein Ausgang.

von Michael h. (mzninja)


Lesenswert?

micha schrieb:
> Nein Ausgang.

ja natürlich, das meinte ich, sonst würde es keinen Sinn machen eine LED 
anzusteuern :)

von micha (Gast)


Lesenswert?

Port auf Digital geschaltet ?
Sehe ich nirgends.
Siehe Datenblatt.

von micha (Gast)


Lesenswert?

Hier sollte man das LAT Register nehmen.
Nicht PORT.

von Michael h. (mzninja)


Lesenswert?

PortB hat doch gar keine AD-Funktion?

von micha (Gast)


Lesenswert?

Bin von dem 16F690 ausgegangen.
Weil es oben steht.
LAT register genommen ?
Fuses richtig eingestellt ?

von Erich (Gast)


Lesenswert?

Ok, du hast ein fertiges Board mit einem bestimmten uC Typ drauf.
Da solltest du dann passende Beispiele für dieses Board suchen, ansehen 
und analysieren um daraus zu lernen.

Hierbei kann GOOGLE auch dein Freund sein!
Frage dort mal nach ...
   Modtronix "SBC68EC"
so landet man sofort bei der Herstellerseite zu diesem Produkt
   http://www.modtronix.com/products/sbc68ec/websrvr68_v306/page_update_firmware.html
und dort bei den Reitern <Files> oder <Examples> , das sieht doch gut 
aus!

Und Infos die nicht von der Herstellerseite kommen findet GOOGLE über 
...
  Modtronix "SBC68EC" -site:www.modtronix.com "ADC" "source code"
  Modtronix "SBC68EC" -site:www.modtronix.com "ADC" "example" "code"

z.B. diese Wetterstation zum Anschluß an deine Platine
http://wx-station.googlecode.com/svn/trunk/
http://wx-station.googlecode.com/svn/trunk/schematicWxStation/schematic.tif
http://wx-station.googlecode.com/svn/trunk/src/

Gruss

von Erich (Gast)


Lesenswert?

Noch'n Nachtrag, Info auf des deutschen Vertriebs des Boards SBC66EC

http://www.digitale-elektronik.de/shopsystem/product_info.php?cPath=&products_id=576&osCsid=372d415b4e83

von Michael h. (mzninja)


Lesenswert?

dass ich nicht zu doof bin diese Schlagworte zu googlen stand für mich 
außer Frage, es ging mir viel mehr um die Implementierung von CAN und 
das Verständnis. Die SW-Pakete die von Modtronix und dem deutschen 
Vertrieb bereitgestellt werden dienen nicht gerade dem Verständnis und 
lassen sich in der Regel nicht einfach kompilieren und aufspielen.

Wir versuchen unser Glück noch immer einen funktionierenden CAN zu 
implementieren. Inzwischen sind wir allerdings auch soweit dass es 
hierzu nicht einmal eine Lösung im Modtronix-Forum gibt. Wir verzweifeln 
langsam an unserer Arbeit und wären sehr dankbar wenn irgendjemand einen 
qualifizierten Code zur Verfügung stellen könnte.

von Erich (Gast)


Lesenswert?

Michael hab' ich auch schrieb:
> dass ich nicht zu doof bin ...

Ok.
Danke für das Lob zu meinem gutgemeinten Hinweis.
Musste dir künftig Rat bei den anderen vielen Beiträgen auf deinen 
Hilferuf suchen.

Gruss

von Frank (Gast)


Lesenswert?

Haste mal das OSCCON Register mit dem Datenblatt gegengecheckt?
Was ist mit dem Watchdog Timer (WDT)?

Gruß,

Frank DelaSada

von Linüx (Gast)


Lesenswert?

Herrgott mach doch einfach ein Tutorial. Ein Mikrocontroller dessen 
Programm endet geht immer wieder in den Reset. Darum: Immer Immer Immer 
Immer Immer beinhaltet die Main() eine

ENDLOSSCHLEIFE

und im Normalfall kein Return.


E N D L O S S C H L E I F E

schreib dir das hinter deine Ohren.

von Chris B. (dekatz)


Lesenswert?

Das "Ding" läuft auch ohne Endlosschleife im Kreis und auch ohne LATB 
etc... nur erweitert um ein < PORTB = 0x0; > um Aktivität zu sehen.
Compiliert mit C18, getestet am Simultor. PORTB tut was er soll!
Nicht eingebunden habe ich diese cpuconf.h sondern mit der 
Defaultconfiguration des Controllers.
Entweder ist in der cpuconf.h was faul??
oder gibt es irgendwelche Jumper am Board die falsch gesteckt sind??

von Michael h. (mzninja)


Lesenswert?

Vielen Dank für die Infos. Werde jetzt direkt in die Vollen gehen und 
die CAN-Funktion direkt in den bestehenden Webserver einbinden. Sollte 
ich irgendwann in naher Zukunft zu einem Abschluss kommen werde ich den 
Lösungsweg gerne hier darstellen wenn Interesse besteht :))

von Erich (Gast)


Lesenswert?

Ob wir das jetzt ganz toll finden sollen mit deinem Doppelposting unter 
anderem Pseudonym?
Beitrag "CAN auf PIC18F6680"

Dort tueste so, als würdest was mit dem speziellen uC bauen 
Beitrag "CAN auf PIC18F6680"
um dann hier später auf deine eingekaufte Platine zu verlinken.
Beitrag "Re: CAN auf PIC18F6680"

Nur noch traurig.
--> Laßt ihn schmoren!
Dank bekommt von dem keiner siehe 
Beitrag "Re: rudimentäre C-Programmierung PIC 18F6680"

von Michael h. (mzninja)


Lesenswert?

Tja Erich, vielen Dank für die Unterstützung! Es handelt sich nicht um 
einen Doppelpost, schonmal dran gedacht dass zwei Menschen, zufällig von 
der gleichen Hochschule an einem gleichen Projekt arbeiten! Nein, 
verdammt! Dann lasst mich doch einfach schmoren :))

Die Idee ein fertiges Board zu nehmen kam auch hier aus dem Forum, siehe 
dazu auch meinen ersten Thread, daher posten hier unterschiedliche 
Menschen mit gleichem Anliegen. Bei uns gilt immer die Devise "Erst 
fragen, dann schlagen und nicht umgekehrt!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.