hi,
wenn Du den Bootloader von Bascom nehmen willst so musst Du bei den Fusebit für die Bootloadergröße 1024 (Fusebit High FE) einstellen. Mit dieser Einstellung sagst Du dem ATmega zu welcher Adresser er nach einem Reset springen soll und den Code, der darin steht, ausführen soll. Dann musst Du noch mit den Fusebit High D sagen, dass er nach dem Reset nicht an der Adresse $0000 beginnen soll sonder bei nem Mega 8 bei $c00.
Danach musst Du den Bootloader per ISP auf den Mega übertragen. Der Bootloader sitzt am Ende vom FlashRom und hier liegen die Gefahren! Dein Programm darf jetzt nicht mehr 8k groß sein sonder 8k minus den 1024byte vom Bootloader. Ist Dein Programm größer, überschreibst Du den Bootloader. Das Programm wird nach dem Brennen laufen aber Dein Bootloader wird nicht mehr funktionieren!!!
Wenn Du den Bootloader nicht mehr benötigst, dann kannst Du Deine Einstellungen der Fusebits so lassen und immer noch per ISP flashen.
Wie funktioniert der Bootloader....:
1. nach einem Reset springt der Programmzeiger zu dem Bootloader
2. der Bootloader wartete nun auf ein Zeichen=====>>>>> 123 von der seriellen schnittstelle
3. in einer Schleife fragt er nun 5 mal ab, ob etwas ankommt, kommt nichts dann springt er nach $0000 und beginnt mit dem Programmablauf
4. bekommt er nun ein 123 dann wird der Bootloadercode geflasht
nun kannst Du in Deinem Code auch den Interrupt der Seriellen Schnittstelle dazu nutzen, um ohne ein Reset den Programmcode zu flashen:
Code:
'Interrupt declarieren
Enable Urxc 'urxc1 für com2
On Urxc Rxd_isr
Dim Rx_data As Byte
'Interruptroutine
Rxd_isr: '
Rx_data = Udr0 'Zeichen aus UART1 holen; udr1 = UART2
If Rx_data = 123 Then 'vom MCS-Programmer geschickte "123" empfangen?
Goto &H1800
End If
Aktivierst Du jetzt über Bascom den Upload des Programms über die Serielle Schnittstelle so springt Dein Programm nach dem Empfang des Rx-data "123" an die Speicherstelle wo der Bootloader liegt und das Programm was darin steht übernimmt alles weitere.
Noch ein kleiner Tipp von mir:
in dem Bootloadercode in Bascom musst Du folgendes einstellen:
* dein verwendeter Quarz
* die Baudrate mit der Du die Schnittstelle betreiben willst
==>> die baudeinstellungen musst Du dann auch in Deinem Programmcode so nutzen und natürlich auch als Parameter in den Einstellungen vom Programmierfenster!
Danach den Code compelieren und dann per ISP flashen...
Viel Spassssss
MAT
Lesezeichen