Forum: Mikrocontroller und Digitale Elektronik Code Ausführung funktioniert nicht


von spark (Gast)


Lesenswert?

Hallo
Nachdem ich es endlich geschafft habe einen Schaltkreis für eine Led 
Sequenz aufzubauen, habe ich versucht den Code laufen zu lassen. Dieser 
funktioniert perfekt auf meinem DemoBoard (auf PORTD), nicht aber in 
meiner Schaltung. Hier bleibt die LED an RB4 auf on und auf RB3 blinkt 
es nicht. Die Schaltung habe ich mehrfach überprüfen lassen, daran liegt 
es nicht. Sie besteht aus +5V and beiden VDD und Ground an beiden VSS, 
dazwischen je ein Kondensator. MCLRE ist mit einem 10Ohm Kondensator an 
VDD, von RB0 - RB7 ist je eine LED mit 150k Widerstand daran. Die 
Spannung kommt von einem Spannungsgeber (5V).
Mein Code ist unten.
Woran könnte der Fehler liegen? Ich vermute stark dass sich der Quarz 
irgendwie aufhängt, wüsste aber nicht warum. Vielen Dank für jegliche 
Hilfe.
1
#include<p18f45k22.inc>
2
3
  CONFIG WDTEN = OFF    
4
  CONFIG MCLRE = INTMCLR  
5
  CONFIG DEBUG = OFF    
6
  CONFIG LVP = OFF     
7
  CONFIG FOSC = INTIO67 
8
9
10
Delay1 res 1
11
Delay2 res 1
12
Delay3 res 1
13
14
 org 0                  
15
  CLRF PORTB
16
  CLRF TRISB
17
  CLRF Delay1
18
  CLRF Delay2
19
  CLRF Delay3
20
  BSF PORTB, RB4
21
22
Loop
23
  DECFSZ Delay1, F
24
  GOTO Loop
25
  DCFSNZ Delay2, F
26
  BTG PORTB, RB3
27
  GOTO Loop
28
  end

Gruss
Patrick

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

>  Ich vermute stark dass sich der Quarz irgendwie aufhängt,
> wüsste aber nicht warum

deine Vermutng ist genauso unsinnig wie die Annahme, daß Außerirdische 
deine Schaltung per Fernwirkung sabotieren.

Aus welchem Grund und mit welchem physikalischen Gegebenheiten sollte 
sich "ein Quarz aufhängen" ????

von holger (Gast)


Lesenswert?

>MCLRE ist mit einem 10Ohm Kondensator an VDD,

Bisschen klein das Teil.

> von RB0 - RB7 ist je eine LED mit 150k Widerstand daran.

Das soll ja wohl ein Witz sein oder was?

von Rob (Gast)


Lesenswert?

spark schrieb:
> MCLRE ist mit einem 10Ohm Kondensator an

Ich hoffe du weißt schon das du da wirres Zeug geschrieben hast?!

Und das mit den 150k kannst du gleich vergessen ;).

Rechne mal den Strom aus den dann hättest...bei 5V und 150k hättest du 
einen Strom von knapp 33µA.
Ich geh mal davon aus das du ganz normale 20mA standart LEDs hast. Dann 
kannst du dir ja ganz einfach ausrechnen, das eine LED einen R von 250 
Ohm brauch!

von Hans W. (stampede)


Lesenswert?

Ob am MCLR nun 10k dran ist oder 10R spielt an und fuer sich keine so 
grosse Rolle (mal so Geschichten wie Latchup etc. ausgeschlossen).
Aber der LED Strom....

Ich nutze diese Config
1
        CONFIG FOSC = INTIO67, PLLCFG = ON, PRICLKEN = ON
2
        CONFIG PWRTEN = OFF, BOREN = OFF, WDTEN = OFF, HFOFST = ON, PBADEN = OFF
3
        CONFIG CCP2MX = PORTB3, CCP3MX = PORTB5, P2BMX = PORTB5, T3CMX = PORTC0
4
        CONFIG MCLRE = EXTMCLR, LVP = OFF, DEBUG = OFF, XINST = OFF
5
        CONFIG CP1 = OFF, CPB = OFF, CP0 = OFF

Aussderdem musst du die ANSEL Register setzen (je nach Einstellung des 
PBADEN Bit).
Auch bei manchen Sachen des PIC das akutelle Errata beachten, der 
PIC18F45K22 hat da paar kleinere Bugs.

Sonst fuer PIC gerne www.fernando-heitor.de anschauen. :)

von spark (Gast)


Lesenswert?

Es ist natürlich ein 150 Ohm Widerstand.... Die LED leuchten ja auch. 
Sie laufen mit 2V und 20mA.

Danke Hans W. ich werde das heute mal ausprobieren und mir das mit den 
ANSEL Register anschauen.

von spark (Gast)


Lesenswert?

> deine Vermutng ist genauso unsinnig wie die Annahme, daß Außerirdische
> deine Schaltung per Fernwirkung sabotieren.


Dachte die Wahrscheinlichkeit dass etwas mit dem MCLRE oder mit dem 
Widerstand nicht stimmt und er dadurch dauernd resettet sei grösser, als 
das Ausserirdische meine Schaltung sabotieren würden...

Gibt es keine Entsprechung von PBADEN für PORTA? Warum werden hier die 
ANSEL Bits nicht gleich gesetzt wie bei den anderen Ports?

von spark (Gast)


Lesenswert?

Noch ne Frage: Mir ist nicht klar wofür das output mux bit ist. Im 
Datasheet steht zwar was die Setzung von P2BMX bewirkt, auch dass der 
jetztige Wert falsch ist, ich möchte aber die Funktion dieses Bits 
verstehen.

von spark (Gast)


Lesenswert?

Leider funktioniert der Code immer noch nicht
Was sind mögliche Fehlerquellen?
Der Code sieht jetzt so aus:
1
#include<p18f45k22.inc>
2
3
  CONFIG WDTEN = OFF    
4
  CONFIG MCLRE = INTMCLR  
5
  CONFIG DEBUG = OFF    
6
  CONFIG LVP = OFF     
7
  CONFIG FOSC = INTIO67 
8
  CONFIG PBADEN = OFF
9
  CONFIG PLLCFG = ON, PRICLKEN = ON
10
  CONFIG PWRTEN = OFF, BOREN = OFF, HFOFST = ON
11
  CONFIG CCP2MX = PORTB3, CCP3MX = PORTB5, P2BMX = PORTC0, T3CMX = PORTC0
12
  CONFIG XINST = OFF
13
  CONFIG CP1 = OFF, CPB = OFF, CP0 = OFF
14
15
16
Delay1 res 1
17
Delay2 res 1
18
Delay3 res 1
19
20
 org 0                  
21
  CLRF PORTB
22
  CLRF TRISB
23
  CLRF Delay1
24
  CLRF Delay2
25
  CLRF Delay3
26
  BSF PORTB, RB4
27
28
Loop:
29
  DECFSZ Delay1, F
30
  GOTO Loop
31
  DCFSNZ Delay2, F
32
  BTG PORTB, RB3
33
  GOTO Loop
34
 end

Allerdings bleibt nur die Lampe an RB4 stehen, RB3 blinkt nicht.
Bitte um Hilfe, ist zum Verzweifeln...

von Hans W. (stampede)


Lesenswert?

Schreib mal die Loop um

Loop:
  DECFSZ Delay1, F
  GOTO Loop
  DCFSNZ Delay2, F
  GOTO Loop
  BTG PORTB, RB3
  goto Loop

Das sollte ein Blinken von so 7Hz ergeben.

von Hans W. (stampede)


Lesenswert?

>Gibt es keine Entsprechung von PBADEN für PORTA? Warum werden hier die
>ANSEL Bits nicht gleich gesetzt wie bei den anderen Ports?

Weils so ist und das Bit in der CONFIG PortB Analog Enable (oder so 
aehnlihc heissen soll).

>Noch ne Frage: Mir ist nicht klar wofür das output mux bit ist. Im
>Datasheet steht zwar was die Setzung von P2BMX bewirkt, auch dass der
>jetztige Wert falsch ist, ich möchte aber die Funktion dieses Bits
>verstehen.

Wenn es doch im Datenblatt steht, was ist nicht klar? Es legt fest wohin 
der Ausgang der CCP Module gelegt wird (die du aber gar nicht 
verwendest, daher der Wert nicht falsch sein kann).

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.