Gast
#2914373
Hallo Leute, ich hab ein kleines Problem mit meinem bootloader (den ich aus einem Beispiel hier abgeleitet habe http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung). Die gesamte programmgröße ist ca. 30kbyte. Wenn ich mir nun ein via bootloader programmiertes image zurücklese gibt es auf diesen 30kbyte etwa 3 - 4 unterschiede. Das gestaltet sich so, dass 2 - 4 bytes fälschlicherweise den Wert 0xff haben. Die Daten gehen allerdings am pc korrekt raus und werden auch korrekt empfangen! (crc8 pro 16 bytes) Ich musste allerdings in der program_page methode die interrupt-sperre deaktivieren, da mein rs485 bus kein "warten" unterstützt. Dieser läuft aber auch nicht über in der zeit. Ist ein cli() unbedingt notwendig während dem page programmieren? Also kann nicht während dessen weiter in den uart buffer gelesen werden? Das ist die programmiermethode:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |