-         

Ergebnis 1 bis 5 von 5

Thema: PIC18F2550 Bootloader bei externer Spannungsversorgung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.03.2005
    Beiträge
    9

    PIC18F2550 Bootloader bei externer Spannungsversorgung

    Anzeige

    Hallo zusammen,

    ich versuche den Bootloader2 von sprut auf meinem PIC 18F2550 zum laufen
    zu bekommen.

    Vor dem Einsatz habe ich den Bootloader etwas abgeändert:
    - RE3 wird als Reset verwendet -> MCLR also aktiviert
    - Über RA0 == 0 wird der Bootloader aktiviert
    - Eine rote LED an RA4 soll als Status-Leuchte dienen.

    => Schaltplan und Bootloader siehe Anhang.

    Weiterhin soll die Stromversorgung über rein extern sein, d.h. nicht
    USB-powered.

    Status quo ist, dass…
    1) die Lampe sofort nach Reset leuchtet
    2) der PIC von Windows nicht erkannt wird.

    Um die Fehlerquelle etwas einzuschränken voraus ein paar Fragen, die
    unklar/ offen sind:

    - wie muss ich den Pin Vusb „verkabeln“ -> momentan ist der bei mir
    einfach „in der Luft“
    - muss ich VRegEn auf On oder Off schalten; VRegEn On hieße, dass der
    USB Voltage Generator aktiviert ist. Brauche ich den, wenn ich über
    extern den PIC/ bzw. die Schaltung mit 5V versorge?
    - Des weiteren habe ich den GND der USB-Buchse nicht auf GND meiner
    Schaltung gelegt -> kann das der Grund sein?

    Wenn sich das Problem durch die obigen Punkte nicht gelöst hat, muss
    jenes wohl in der Software zu suchen sein, obwohl ich dort nicht viel
    verändert habe, außer RE3 deaktiviert, den PIN für die LED und den PIN
    für die Bootloader-Aktivierung geändert habe.

    Was genau ist der Hintergrund bzgl. der Definitionen:
    //#define USE_SELF_POWER_SENSE_IO
    //#define USE_USB_BUS_SENSE_IO
    Brauch ich die, wenn meine SChaltung immer self-powered ist? Bzw. kann
    ich dann das entsprechende Flag immer auf 1 setzen?

    Was kann ich noch messen/ testen/ nachprüfen, damit ich den Fehler
    einschränken kann??
    Wie kann ich zum Beispiel prüfen, ob der sprut-Treiber (USB-Treiber)
    installiert ist: sehe ich das irgendwo im Gerätemanager??

    Hoffe ihr könnt mir weiterhelfen!!

    Grüße
    Stepi
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken schematic_bootloader.jpg  
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.02.2008
    Beiträge
    130
    - wie muss ich den Pin Vusb „verkabeln“ -> momentan ist der bei mir
    einfach „in der Luft“

    Ich habe da 220nF gegen Masse dran. Ohne läuft da gar nichts, da der Pin mit den C zu einem Spannungsregler gehört der die Spannungen (glaube 3V oder so) für D- D- am USB-Bus erzeugt.

    Wichtig wichtig also.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2005
    Beiträge
    130
    Ja, der C ist wichtig. Muss hin! Muss nicht genau 220nF sein, aber halt schon in dem Bereich.

    - Des weiteren habe ich den GND der USB-Buchse nicht auf GND meiner
    Schaltung gelegt -> kann das der Grund sein?
    Ouh. Das ist natürlich der Fehler. So ist kein Stromkreis vorhanden und die Daten könnten nicht auf Data+ und Data- "hin und herfließen".

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    11.03.2005
    Beiträge
    9
    Hallo zusammen,

    erste Erfolgsmeldungen:
    - habe die HW-Änderungen gemacht (USB an gnd angeschlossen; Vusb über
    220nF an gnd)
    - dass die rote LED immer gebrannt hat weiß ich noch nicht ganz, aber
    auf alle Fälle habe ich vergessen dem RA0 als digitalen I/O zu
    definieren (REgister ADCON1; bei POR ist RA0 erstmal als analog I/O
    definiert).

    => d.h. mein Bootloader funkt nun

    Allerdings muss ich eine Beobachtung machen, die mich etwas stutzig
    macht: ich habe vor dem Bootlader mit einem Brennprogramm ein PRogramm
    hochgeladen, das zwei LEDs für ca. 0,5sec anmacht (über
    Delay10KTCY(500)).

    Lade ich nun das gleiche Programm (Linker geändert, sonst nichts) mit
    dem Bootloader in den PIC, so werden aus den 0,5sec plötzlich ca. 5ms.
    Auch ein vergrößern des Delays (Delay10KTCY(5000)) hat keine Änderung
    zur Folge.

    Woran kann das liegen? In meinem Programm habe ich über
    #pragma config FOSC = HS //CPU=8 MHz
    die Oszi-Einstellung immer drin.

    Grüße
    Stepi

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2005
    Beiträge
    130
    Hallo,
    die Delay10KTCY()-Funktion erwartet einen unsigned char als Parameter. Das heißt, dass du maximal nur Werte 0..255 eintragen kannst.

    Wenn du eine halbe Sekunde Wartezeit haben willst, dann brauchst du Delay10KTCY(100), weil:
    Die Laufzeit der Funktion ist 10000 Zyklen * Parameter. In dem Fall also 1000000 Zyklen. 1000000 Zyklen entsprechen 4000000 Takten. Bei deiner Taktfrequenz von 8MHz entspricht die Wartezeit dann genau 0,5s.

    Grüße

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •