Forum: Mikrocontroller und Digitale Elektronik dsPIC30 läuft nur nach Flashen an :-(


von hochsitzcola (Gast)


Lesenswert?

Ich bin neu in den PICs und stolpere grad über die Configuration Bits. 
Ich habe wohl irgendwas verstellt, auf jeden Fall läuft der Prozessor 
nur noch direkt nach dem Flashen weiter, wenn ich den Programmer trenne 
und den Prozessor neu mit Spannung versorge, läuft er nicht an :-(

Code: https://github.com/stancecoke/Open-BionX-Motor-Controller-Firmware
Ich habe noch ein weiteres Verständnisproblem, das Board hat einen Quarz 
auf dem 13.000 steht. Mit der Einstellung HS2 w/PLL 16x hätte ich 
gedacht, der Prozessortakt ist damit 13Mhz/2*16 = 104MHz. Das ist aber 
anscheinend falsch, da die BAUD-Rate vom UAER mit dieser Rechnung nicht 
passt :-(
Kann mir jemand auf die Sprünge helfen?

Hier die Konfiguration:
1
#pragma config FOSFPR = HS2_PLL16       // Oscillator (HS2 w/PLL 16x)
2
#pragma config FCKSMEN = CSW_FSCM_ON    // Clock Switching and Monitor (Sw Enabled, Mon Enabled)
3
4
// FWDT
5
#pragma config FWPSB = WDTPSB_16        // WDT Prescaler B (1:16)
6
#pragma config FWPSA = WDTPSA_512       // WDT Prescaler A (1:512)
7
#pragma config WDT = WDT_OFF            // Watchdog Timer (Disabled)
8
9
// FBORPOR
10
#pragma config FPWRT = PWRT_64          // POR Timer Value (64ms)
11
#pragma config BODENV = BORV27          // Brown Out Voltage (2.7V)
12
#pragma config BOREN = PBOR_ON          // PBOR Enable (Enabled)
13
#pragma config LPOL = PWMxL_ACT_LO      // Low-side PWM Output Polarity (Active Low)
14
#pragma config HPOL = PWMxH_ACT_HI      // High-side PWM Output Polarity (Active High)
15
#pragma config PWMPIN = RST_IOPIN       // PWM Output Pin Reset (Control with PORT/TRIS regs)
16
#pragma config MCLRE = MCLR_EN          // Master Clear Enable (Enabled)
17
18
// FBS
19
#pragma config BWRP = WR_PROTECT_BOOT_OFF// Boot Segment Program Memory Write Protect (Boot Segment Program Memory may be written)
20
#pragma config BSS = NO_BOOT_CODE       // Boot Segment Program Flash Memory Code Protection (No Boot Segment)
21
#pragma config EBS = NO_BOOT_EEPROM     // Boot Segment Data EEPROM Protection (No Boot EEPROM)
22
#pragma config RBS = NO_BOOT_RAM        // Boot Segment Data RAM Protection (No Boot RAM)
23
24
// FSS
25
#pragma config SWRP = WR_PROT_SEC_OFF   // Secure Segment Program Write Protect (Disabled)
26
#pragma config SSS = NO_SEC_CODE        // Secure Segment Program Flash Memory Code Protection (No Secure Segment)
27
#pragma config ESS = NO_SEC_EEPROM      // Secure Segment Data EEPROM Protection (No Segment Data EEPROM)
28
#pragma config RSS = NO_SEC_RAM         // Secure Segment Data RAM Protection (No Secure RAM)
29
30
// FGS
31
#pragma config GWRP = GWRP_OFF          // General Code Segment Write Protect (Disabled)
32
#pragma config GCP = GSS_OFF            // General Segment Code Protection (Disabled)
33
34
// FICD
35
#pragma config ICS = ICS_PGD            // Comm Channel Select (Use PGC/EMUC and PGD/EMUD)

Gruß
hochsitzcola

von hochsitzcola (Gast)


Lesenswert?

Hm, ich scheine mit dem Problem ja nicht alleine zu sein, aber alle 
vorgeschlagenen Lösungen, (Reset-Pin, Debugmode beim Flashen etc...) 
habe ich
ausprobiert, ohne Erfolg. Interessanterweise läuft der Prozessor schon 
an, wenn ich im PICKit2 programmer tool nur ein hexfile von der 
Festplatte einlese?! Ich werde wohl mal mit dem Oszi schauen, was der 
Programmer dabei an den Pins MCLR, PGD und PGC macht.
Einfach ein Reset mit MCLR kurz auf Gnd hilft auf jeden Fall nicht :-(

Gruß
hochsitzcola

von Volker S. (vloki)


Lesenswert?

Programmierst du den Controller evtl. im Debug-Mode? (Dann braucht der 
auch den abgesteckten Debugger um zu starten)

von Volker S. (vloki)


Lesenswert?

hochsitzcola schrieb:
> aber alle
> vorgeschlagenen Lösungen, (Reset-Pin, Debugmode beim Flashen etc...)

Vielleicht etwas genauer ausführen?

von Teo D. (teoderix)


Lesenswert?

Schon etwas merkwürdig.... HW Fehler, zB. Masse lauft nur über den 
PicKit etc.?!

von hochsitzcola (Gast)


Lesenswert?

Volker S. schrieb:
> Vielleicht etwas genauer ausführen?

Ich habe die oft genannten Tipps geprüft:
- ich flashe nicht im debug mode, sondern im production mode
- ich habe VCC, VSS und MCLR mit dem Oszi beobachtet, die sind stabil.

Ich denke, es dauert zu lange bis sich der Takt einschwingt, wenn ich 
FPWRT auf Off setze, läuft der Prozessor an, aber sendet aber nur Grütze 
über UART!?

Gruß
hochsitzcola

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.