Forum: Mikrocontroller und Digitale Elektronik kann mir jemand ein hex für PIC24 erstellen


von Master S. (snowman)


Angehängte Dateien:

Lesenswert?

hallo

ich benütze MPLABX und kenne die Microchip Solution Libraries. leider 
ist's so dass, wenn ich die öffne, viele zeilen mit fehlern markiert 
sind diese aber trotzdem ohne fehler kompilierbar sind (von dieser 
eigenschaft liest man vermehrt auf dem internet). nach 2 abenden den 
fehler suchen, zweifle ich nicht mehr an mir sondern am compiler...
könnte mir jemand ein hex-file generieren für HID USB Bootloader für den 
PIC24FJ64GB004, wobei der interne RC-clock gebraucht wird? es kann das 
bestehende Microchip-projekt verwendet werden, jedoch folgende 
config-anpassungen:
ICS_PGx1 -> ICS_PGx3
FNOSC_PRIPLL -> FNOSC_FRCPLL
mit dem hex-file könnte ich wenigstens herausfinden, ob's an MPLABX 
liegt oder an meiner hardware.
ps: leider kann ich keinen 8MHz-quarz an den PIC anschliessen um das 
'USB Device - HID - HID Bootloader - C30 - PIC24FJ64GB004 PIM.hex' von 
Microchip zu testen.


alternativ, wenn jemand sonst eine ahnung hat, woran es liegen könnte, 
bin ich nach besagten 2 sinnlosen abenden sehr froh. hier meine configs
1
_CONFIG1(WDTPS_PS1 & FWPSA_PR32 & WINDIS_OFF & FWDTEN_OFF & ICS_PGx3 & GWRP_OFF & GCP_OFF & JTAGEN_OFF)
2
_CONFIG2(POSCMOD_HS & I2C1SEL_PRI & IOL1WAY_OFF & OSCIOFNC_ON & FCKSM_CSDCMD & FNOSC_FRCPLL & PLL96MHZ_ON & PLLDIV_DIV2 & IESO_OFF)
3
_CONFIG3(WPFP_WPFP0 & SOSCSEL_SOSC & WUTSEL_LEG & WPDIS_WPDIS & WPCFG_WPCFGDIS & WPEND_WPENDMEM)
4
_CONFIG4(DSWDTPS_DSWDTPS3 & DSWDTOSC_LPRC & RTCOSC_SOSC & DSBOREN_OFF & DSWDTEN_OFF)
und
1
CLKDIV = 0x0020;
womit der PIC auch mit 16MIPS rennt (habe diese configs mit einem 
anderen, nicht-USB-programm auf der gleichen hardware überprüft)

zum attachment: MCLR wurde angepasst (nicht so wie in der zeichnung) und 
zw. Vbus und GND sind noch 0.3uF

vielen dank schonmal im voraus

von Frank K. (fchk)


Lesenswert?

So funktioniert das nicht. Du MUSST ZWINGEND einen Quarz als 
Taktquelle haben, wenn Du USB benutzen willst. Siehe Datenblatt DS39940D 
page 114 Abschnitt 8.5.1 CONSIDERATIONS FOR USB OPERATION:

"When using the USB On-The-Go module in PIC24FJ64GB004 family devices, 
users must always observe these rules in configuring the system clock:
• For USB operation, the selected clock source (EC, HS or XT) must meet 
the USB clock tolerance requirements.
• The Primary Oscillator/PLL modes are the only oscillator 
configurations that permit USB operation. There is no provision to 
provide a separate external clock source to the USB module.
• All oscillator modes are available; however, USB operation is not 
possible when these modes are selected. They may still be useful in 
cases where other power levels of operation are desirable and the USB 
module is not needed (e.g., the application is Sleeping and waiting for 
bus attachment)."

fchk

von Master S. (snowman)


Lesenswert?

hmm, bei mir steht im datenblatt aber:

The USB OTG module offers these features:
[...]
• 0.25% Accuracy using Internal Oscillator – No
External Crystal Required
[...]

und der interne takt stimmt bei mir auf 0.05% genau :-)

von Master S. (snowman)


Lesenswert?

und auch bei deinem datenblatt gleich auf der 1. seite:

Universal Serial Bus Features:
[...]
• 0.25% Accuracy using Internal Oscillator – No External
Crystal Required


..soviel ich weiss, musste(!) man bei den älteren PIC18 zwingend einen 
quarz gebrauchen

von Frank K. (fchk)


Lesenswert?

Ich habe jedenfalls noch kein funktionierendes USB Design mit diesem 
Chip ohne Quarz gesehen. Ansonsten frag Microchip, die sollten es 
wissen.

fchk

von Master S. (snowman)


Angehängte Dateien:

Lesenswert?

offensichtlich geht's:
http://www.microchip.com/forums/m495325.aspx

auch ineressant die ansicht:
"The suspicion is arising in me that "Primary Oscillator" isn't referred 
to POSC (Primary OSCillator), as I first supposed, but to the couple 
POSC/FOSC."

das würde auch den plural von "modes are" unterstreichen in "The Primary 
Oscillator/PLL modes are the only oscillator configurations that permit 
USB operation."

ich habe jetzt mal einen 8MHz + 2x22pF an OSCO/OSCI rangehängt, der PIC 
läuft zwar aber ich bin mir nicht sicher, ob die peripherie, die mit an 
diesen pins hängen zu fest stören. ich werde morgen mal einen neuen PIC 
einsetzen (der jetzt hat mit MCLR sowieso eine macke) und dann auch die 
leiterbahnen zur peripherie auftrennen. das muss ich aber im geschäft 
machen.

edit: sowohl mit mit internem als auch quarz-takt, melded Windows 
"unbekanntes gerät"

edit 2: soeben im datenblatt gefunden "Because of USB frequency accuracy 
requirements, the use of the FRCPLL system clock configuration is not 
recommended for USB operations." und "Due to specified FRC accuracy, the 
FRC Oscillator modes may not meet the minimum frequency accuracy 
requirements for serial communications (such as UART and USB). "
naja, "recommended" heisst nicht, dass es nicht geht ;-)

von Frank K. (fchk)


Lesenswert?

Low Speed USB sollte gehen, Full Speed eher nicht.

das würde auch den plural von "modes are" unterstreichen in "The Primary
Oscillator/PLL modes are the only oscillator configurations that permit
USB operation."

Die "modes" sind EC/PLL, HS/PLL und XT/PLL.

fchk

von Master S. (snowman)


Lesenswert?

problem gelösst:
- neuer PIC drauf gelötet
- entdeckt, dass die D+-leitung wackelkontakt hatte (jetzt repariert)
- 8MHz-Quarz + Cs rangelötet
dann lief es :-)

weiterer versuch:
- quarz abgelötet und interner FRC angeschlatet (der FRC läuft 5% 
daneben!!)
USB-verbindung läuft also auch mit FRC :-)

ob es nun nur am PIC lag und/oder am wackelkontakt, weiss ich nicht. ich 
kann nun aber sagen, dass es offensichtlich mit dem internen oscillator 
läuft, auch wenn dieser 5%(!) daneben liegt. ich glaube der USB-standard 
schreibt 0.5% vor (bin mir aber nicht sicher).

von Frank K. (fchk)


Lesenswert?

Master Snowman schrieb:
> ich glaube der USB-standard
> schreibt 0.5% vor (bin mir aber nicht sicher).

Da schauen wir doch einfach mal in den USB 1.1 Standard rein. Der sagt 
auf Seite 126 unter Abschnitt 7.1.11 "Data Signaling Rate":

"The data-rate tolerance for host, hub, and full-speed functions is 
±0.25% (2,500ppm). The accuracy of the Host Controller’s data rate must 
be known and controlled to better than ±0.05% (500ppm). [...] The 
permitted data-rate tolerance for low-speed functions is 1.5% 
(15,000ppm)."

Wenn es bei Dir mit 5% Abweichung funktioniert, hast Du saumäßiges 
Glück. In solchen Fällen verweise ich immer auf Loriot und die zufällig 
weichen Eier.

fchk

von Master S. (snowman)


Lesenswert?

> Wenn es bei Dir mit 5% Abweichung funktioniert, hast Du
> saumäßiges Glück.
das sehe ich auch so! :-)

von Master S. (snowman)


Lesenswert?

ich habe jetzt gerade die idee gehabt, dass ich den FRC mit dem RTCC 
tunen könnte, resp. die tuning-bits nachführe. somit ist gewährleistet, 
dass der PIC genau läuft :-) ...anderseits ist die USB-funktion sowieso 
nicht so wichtig, nur als option zum normalen flashen mit dem ICD3.

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.