PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC Bootloader ?



el_net_fun
03.02.2006, 07:51
Hallo,
kennt jemand einen PIC-Bootloader ,
bei dem ich Quarzfrequenzen ändern kann.
Freeware selbstverständlich.
für PIC16-Familie.
Grüß,
el_net_fun

Fritzli
03.02.2006, 18:36
http://microchipc.com/PIC16bootload/

Benütze ich auch - geht problemlos und ist schnell.

PIC Code als ASM, Windows als Pascal (glaub ich) und für Linux in C

Freeware und ev. sogar Open Source


Gruess
Fritzli

Mobius
04.02.2006, 19:26
Stimmt ist freeware, zumindest auf den ersten Blick ;)

oder aber du benutzt AN851 (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012031)von Microchip. Windows Exe ist mitgeliefert, ink source code, wie auch der Bootloader in asm mit Docu.

Aber bei der 16F Familie ist ein Bootloader sowieso nicht wirklich relevat (oder zumindest für mich), da es nur recht wenige und dafür aber teure PICs gibt, die das beschreiben des eigenen Speichers unterstützten. Meines Wissens eigentlich nur die PIC16F87X...

MfG
Mobius

el_net_fun
06.02.2006, 14:49
Hallo, ich benutze die erste, nur da ist das problem, das ich nur mit im Program vorhandenen Quarzfrequenzen arbeiten muss. Ich möchte aber
meine Quarzfrequenzen beibehalten.
Ich arbeite mit 16f876, da ich die fast umsonst kriege.
Danke für die Antworten.
Grüß,
el_net_fun

EinsamerUser
06.02.2006, 20:54
Was verstehst du unter Quarzfrequenzen ändern?

Die Frequenz eines Quarzes lässt sich ja nicht über den Programmcode ändern. Der Quarz ist ja immerhin Teil der "externen" Hardware.

Wenn du jetzt jedoch ein und die selbe Software auf einem Schnelleren bzw. langsameren getakteten PIC laufen lassen willst, musst du entweder die Software umschreiben oder du programmierst ne Software, die automatisch erkennt mit welcher Taktfrequenz der PIC läuft.
Ob sich die Erkennung realisieren lässt, kann ich leider nicht sagen. Bei den Atmel's funktioniert das (siehe irgendwo im Atmel-Forum). :-k
Bei dem Atmel, misst du einfach die Zeit, die er brauch umd Daten in den internen EEPROM zu schreiben, da dieser Taktunabhängig (eigene Taktversorgung) arbeit.


Gruß
Stefan

el_net_fun
07.02.2006, 08:18
Ich meinte, dass bei den Bootloader von Microchip nur die fertige hex-files
gibt. Und wenn ich in meiner Schaltung ein Quarz mit Z.B. 4,9MHz drin habe, wird es nicht von Bootloader unterstutzt. Das heisst, dass ich immer
den Quarz nehmen muss für welchen die Bootloader-hex-files existieren.
Oder muss ich in den Bootloader Source-Code ein Eingriff vornehmen, was
mir aber nicht gelungen...
Grüß
el_net_fun

EinsamerUser
07.02.2006, 12:58
aso....mmmhhh.....jetzt verstehe ich dein Problem.

Ja also die Bootloader die ich kenne, bzw. auch der von Microchip, müssten ne autoamtische Baudratenerkennung haben. Somit sollte die Frequenz des Quarzes doch kein Problem darstellen?!

AN851.pdf (http://ww1.microchip.com/downloads/en/AppNotes/00851b.pdf) <- Schau mal in das PDF.....da ist übrigens auch der Quellcode zum Bootloader drin.

Gruß
Stefan

stegr
07.02.2006, 17:04
Die "automatische Baudratenerkennung" funktioniert bei den Bootloadern nur nach dem try-and-error-Verfahren - alles andere bräuchte zuviel Speicher.
Die Folge ist, dass er Konfigurationen für verschiedene typische Taktraten durchgeht und schaut wo er was sinnvolles empfängt. Nun, 4,9MHz ist nicht wirklich eine typische Taktrate, daher wirst du dafür auch kein Hex-File finden. Du kannst natürlich den Quelltext des Bootloaders (EinsamerUser hat ja das passende AppNote gepostet) dahingehend ändern, dass er direkt deine Konfiguration verwendet. Die musst du natürlich passend für den Takt ausrechnen, wie das geht steht im Datenblatt ;)

Zu beachten ist, dass du nicht mit allen Taktraten auch eine serielle Kommunikation bei jeder Baudrate aufbauen kannst. Das ganze ist ja asynchron, daher darf der Versatz innerhalb eines Wortes nur relativ klein sein (steht aber auch alles im Datenblatt - einfach unter UART schaun)

MfG
Stefan

Ritchie
14.02.2006, 11:42
Hallo Zusammen,

hat von Euch jemand einen Bootloader für den PIC16F88.
am liebsten in ASM, da ich mir diesen auf I2C umschreiben würde.

Leider arbeitet diese nicht mit dem oben angegeben Bootloader, da dieser Chip Blockschreiben verlangt.

1. Block löschen
1. Block schleiben

...
n. Block löschen
n. Block schleiben

Edit:
Meiner läuft jetzt. Ein paar kleine Fehler unter anderem auch in der Dokumentation.

Hier wird das FLAG FREE nicht bei schreiben gelöscht. Da man dieses Flag für das Löschen des Blocks setzt, muss es danach wieder gelöscht werden.
Ansonsten sind die Schreibbefehle = Löschbefehle


Gruss Ritchie