PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC Programmierung (18F2455)



mf01
10.03.2006, 14:03
Hallo,
Für ein Projekt in der Schule müssen wir einen PIC progframmieren.
Jedoch kennen wir uns mit der PIC Programmierung kaum aus und so
funktioniert unser erstes Programm nicht. Vielleicht könnte einer von
euch das Programm ansehen und uns helfen es lauffähig zu bekommen.
Wir programmieren mit MPLAB 7.31 und dem C18 Compiler (MCC18).
Eventuell liegt der Fehler auch an Einstellungen die man im Programm
vornehmen muss.
Ich hoffe, ihr könnt uns helfen.

*Mario*
10.03.2006, 16:58
Hallo,

also Dein Programm ist ziemlich schlecht lesbar. Bei mir sind jedenfalls alle Zeilenumbrüche verschunden und damit ist das ganze kaum lesbar.

Nun was mir jedenfalls aufgefallen ist:
- Schalte LVP aus
- Achte auf die korrekte Konfiguaration des Oszillators (RC/Int/XT/HS).
- Bei Port A: Achte darauf sie in ADCON1 als digitale Ports zu definieren
(sooweit bei deinem PIC damit gemultiplexed), achte
darauf dass einige Eingänge mit/ohne Pull-ups und auch Schmitt-Trigger
ausgeführt sind.
- gehe die Fallen Rubrick in www.sprut.de durch.

Wenn Du das Programm nochmals in lesbarer Form hochlädst, kann ich Dir sicher noch besser helfen.

Gruß
Mario

mf01
13.03.2006, 14:37
hi
ich habe ein paar Änderungen wieder gemacht

ich habe auch ein paar Fragen:
habe ich das Adcon1- Register jetzt richtig gesetzt?
wie stellt man den Oszilator ein?


index= !(PORTBbits.RB4)*1 + !(PORTBbits.RB5)*2 + !(PORTCbits.RC0)*4 + !(PORTCbits.RC1)*8;

passt die Zeile?

const int zu_tab[16]={0,1,0,2,0,0,0,3,0,0,0,0,0,0,0,4};damit wollen wir 4 Pins negieren und unterschiedlich wichten
und dadurch einen bestimmten Wert aus der Zuweisungstabelle bekommen

ich habe das C- File nochmal hochgeladen
ich hoffe du kannst das File jetzt lesen
und vielen Dank für deine Hilfe
vielleicht kannst du mir noch weiter helfen

*Mario*
14.03.2006, 17:52
zu Deinen Fragen:

Ob Du das ADCON1-Register richtig gesetzt hast, kann Dir nur das Datenblatt beantworten, das kann sich bei den unterschiedlichen PIC's unterscheiden. Rein gefühlsmässig würde ich mal sagen, dass das ganz gut aussieht.

Oszillator: Ich selbst bin eher bei Assembler zuhause (was die PIC's angeht), aber die Oszillator-Einstellungen sind gleich wie WDT und LVP zu treffen (#pragma XT ?)

Gibts auch bei Sprut eine gute Erklärung dazu.

Tipp: Um zu checken ob der Osz läuft, kannst Du ja zu Beginn einen Port auf "high" setzten und eine LED dranhängen, dann weißt Du dass der Programm mal läuft - und damit der OSZ.

Ob die Tabelle mit den definierten Konstanten so passt, musst Du schon selber wissen. Das Denken kann Dir niemand hier abnehmen :).

mf01
31.03.2006, 14:31
Hallo,
wir haben jetzt ein neues Problem. Und zwar passt zwar das Programm aber der PIC schaltet jedesmal wenn man mit der Hand in die Nähe der Schaltung kommt. Woran könnte das liegen bzw. was kann man dagegen machen?

mfg mf01

PICture
31.03.2006, 20:32
Hallo mf01!

Das könnte vom Pin 1 (/MCLR), das unbeschaltet ist, verursacht werden. Die Lösung (wenn das zutrifft) ist: das Pin so wie auf der Skizze beschalten. Das ist (wahrscheinlich) eine Falle, die ich vergessen habe, in die Sammlung aufzunehmen.

MfG



VCC
+
|
.-.
| |R
| |ca.10k
'-'
|
V D
-
|
|
|
|
|
V
____
MCLR Pin (1)

djdune
01.04.2006, 00:44
Außerdem sind Kondensatoren in der Nähe der Spannungsversorgungspins sehr hilfreich (ca 100n sollten reichen)