Forum: Mikrocontroller und Digitale Elektronik uC springt aus Schleife


von Lukas R. (eckoe17)


Lesenswert?

Ich bin grade komplett planlos. Mein ADUC7026 springt aus der Schleife 
aund nimmt wieder den Wert (6500) von vor der Schleife an.
Hat jemand ne Ahnung?
1
#include<ioaduc7026.h>
2
3
void waittime(int);
4
long value;
5
6
int main(void)        
7
{
8
9
10
11
GP3CON = 0x12222211;    //  PWM auf P3.0 and P3.1 ermöglichen
12
                       
13
PWMCON = 0x0001;       // PWM generell ermöglichen
14
PWMDAT0 = 20000;      // Periodendauer
15
PWMDAT1 = 0x00;        // Totzeit 0 (muss gesetzt werden)
16
PWMDAT2 = 0x00;        // Pulsbreite
17
PWMCFG = 0x00;      // Chop auf 0
18
PWMEN = 0x000;      // 0 bis 50% auf port P3.0 ausgeben 
19
PWMCH0 = 6500;      // 100% high
20
while (1)
21
  {
22
       
23
24
  ADCCP = 0;     // select ADC0#
25
  ADCCON = 0x10A3; // turn on ADC, and start conversation: 
26
  while (!ADCSTA); // wait for the end
27
  value = ADCDAT ;
28
        value = value / 50000;
29
        PWMCH0 = value;
30
        }

Lukas

von Johnny B. (johnnyb)


Lesenswert?

Vielleicht tritt ein Reset auf oder so?

von STK500-Besitzer (Gast)


Lesenswert?

1
ADCCON = 0x10A3; // turn on ADC, and start conversation:

Vielleicht fehlt ihm der richtige Partner für die Konversation.
Was du meinst, ist die "conversion".
Warum dein Controller sich allerdings "aufhängt", kann ich dir auch 
nicht beantworten.
Liegt vielleicht an der Hardware...

von lukas .r (Gast)


Lesenswert?

reset kanns ncht sein ich renn mit nem jtag
hardware auch nicht weil es n kommerzielles evalboard ist. leider kann 
ich
selbst mit dem jtag nicht rasfinden wann er rausspringt.

noch vorschläge?

lukas

von pp (Gast)


Lesenswert?

Watchdog aktiv?

von lukas .r (Gast)


Lesenswert?

nope
lukas

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Mein ADUC7026 springt aus der Schleife
> aund nimmt wieder den Wert (6500) von vor der Schleife an.
Wann tut er das? Wie siehst du das?

von Tobias P. (hubertus)


Lesenswert?

Hi,
solche seltsamen, unerklärlichen Phänomene riechen immer irgendwie nach 
Stack-Problemen. Schalte deinen Debugger doch mal in den Modus, wo du 
nicht den C-Code, sondern den Assemblercode deines Programmes siehst, 
und da Instruction für Instruction durch steppen kannst. Beobachte dabei 
den Stackpointer....

von Lukas R. (eckoe17)


Lesenswert?

@Lothar: Nach etwa 5-20 sek. Der Motor geht auf vollgas.

@Tobias: Dauert vielleicht n bisschen, bis ich 5 bis 20 sek bei 40MhZ 
durchgesteppt hab. :(


Noch Ideen?

Lukas

von Karl H. (kbuchegg)


Lesenswert?

Lukas R. schrieb:

> Noch Ideen?

Setzte einen Breakpoint auf den Anfang von main().
Wenn er anschlägt, hat sich der µC aus irgendeinem Grund resettet.

Du hast Motoren erwähnt. Ist es sicher, dass die nichts Schlimmes auf 
der Versorgungsspannung anstellen?

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.