- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 5 von 5

Thema: PIC16F877A Bootloader (ja ich auch)

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    42
    Beiträge
    1.013

    PIC16F877A Bootloader (ja ich auch)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Leider ist mein Stamm forum Offline deswegen versuche ich des hier mal :P

    Also ich hab auf dem 16F877A den Bootloader von http://www.microchipc.com/PIC16bootload/ geschrieben, der PIC läuft mit 8Mhz also das 16Mhz file genommen wie in der README beschreiben demnach solle die baut rate 19200bps betragen, wenn ich jetzt die Firmware per Bootloader tauschen möchte klappt dieses nicht der PIC läuft aber.

    Über minicom bekomme ich nur Buchstabensalat.
    Legastheniker on Bord !

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    42
    Beiträge
    1.013
    Hi nochmal nen Update der Bootmanager läuft der fahler war in der sw zum übertragen des hex files.

    jetzt habe ich aber leider ein anderes Problem die ersten 3 Adressen werde ja durch den Bootmanager benutzt wie muss ich mein Programm jetzt anlegen damit es gestartet wird ?

    Code:
    ;list p=16f876a
    include "p16f876a.inc"
    
    	__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF
    
    	org	0x00004		; Schreibe Programanfang hinter dem Bootloader
    	goto	main		; Springe zur Inialisirung
    	org	0x00008		; Erste Rotine (main) auf Adresse 0x00004
    
    	cblock	0x20		; Variabeln ab 0x21 setzen
    	RS232Send		; Variabel RS232send für USART Senden
    	endc 			; Variabeln setzen beenden
    
    	include "Define.inc"	; Pin Definitionen
    	include	"PortREG.inc"	; Ports einstellen (PortREG)
    	include	"RS232.inc"	; RS232 Rotine (RS232out)
    
    main
    	call	PortREG
    	call	Define
    	bsf	PLED
    	bsf	ELED
    loop
    	goto	loop
    end
    Legastheniker on Bord !

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    75
    Beiträge
    2.063
    Hallo theborg,
    mit Bootloadern habe ich nichts zu tun, aber eines ist unverändert, ob mit oder ohne Bootloader:
    Adresse 0x0004 wird bei jedem Interrupt angesprungen; das ist im PIC16F877 hardwaremäßig so vorgegeben.
    Da solltest Du keinen Sprung nach Main haben, sondern einen Sprung zu Deiner Interrupt-Service-Routine, oder ein RETI.
    Wie der Bootloader die Adressen 0x0000 bis 0x0003 belegt oder benötigt kann ich Dir nicht sagen. Das wirst Du aber gewiss noch herausfinden.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    40
    Beiträge
    456
    Also, der Bootloader arbeitet so, dass er die Vektoren "Reset" und "Interrupt" durch je ein Sprungbefehl (bzw. beim Reset durch die Abfrage, ob der Loader oder das Hautprogramm gestartet werden soll) ersetzt. Wohin genau, das kann ich dir ohne SRC nicht sagen (bzw. Doku gucken).

    Alles was du dann machen musst ist statt "org 0x00004" und "org 0x00000" die betreffenden Adressen einzusetzten und dafür zu sorgen, dass kein Sourcecode auf die von dem Bootloader verwendeten Programmspeicher abgelegt wird.

    Ansonsten würde ich dir Raten, die cblock VOR den Programmcode zu legen, erleichtert das Lesen und niemand kommst auf die Idee, dass es sich dabei um definitionen für den Programmspeicher handelt. Das gleiche gilt für die includes, die meist ganz am Anfang des Programmes stehen, gleich nach der definition des Prozessors.
    Am Einfachsten ist, wenn du die vorgefertigten Templates verwendest, da ist auch ein schönes Layout vorgegeben, das das Lesen ("Microchip\MPASM Suite\Template\Code").

    lg
    Mobius

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    42
    Beiträge
    1.013
    Hi danke für die tips das mit den includes geht leider nicht anders da gputils die dahin setzt wo sie eingebunden werden wenn die ganz oben stehen stehen sie vor den org befehlen
    Legastheniker on Bord !

Berechtigungen

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

Solar Speicher und Akkus Tests