Gast
#2908845
Hallo Leute, ich beschreibe kurz den Aufbau: Ein Master-Controller (Meg640) mit mehreren SPI Slaves. Der Master-Controller programmiert die SPI-Slaves (Mega8) per ISP und trägt dafür ab einem offset (0xa000 für typ1 und 0xc000 für typ2) die software für die Slaves in sich. Hat bis jetzt auch alles so weit wunderbar funktioniert! Jetzt hat allerdings der Master einen bootloader bekommen (4096W, also Start bei 0xe000) Jetzt funktioniert das programmieren eines SPI-Slaves auf einmal nicht mehr, wenn der Bootloader mit im Flash steht! Kurios: Software mit Bootloader und ohne Bootloader via avr studio aus dem atmega640 ausgelesen: Exakt identisch (diff) bis zu 0xe000, da fängt bei dem mit bootloader eben der bootloader an, beim anderen nur noch 0xff. Gut, dachte ich mir: Alles klar, der Bootloader setzt irgendwelche Einstellungen, blockiert irgendwelche Interrupts, irgendwas ist auf jeden fall am Zustand anders nach einem bootloader->application jump. Also: BOOT-RST Vektor rausgenommen und die software mit bootloader im flash per isp in den master geladen... Gleicher Fehler... Auch klasse: Zuerst wird immer die SPI slave software verifiziert, falls unterschiede zu der im master bestehen -> Flash Wenn die SPI slave software von anfang an richtig ist, funktioniert es mit beiden Versionen der master software. also ein verify klappt. Nur wenn sie sich unterscheidet und versucht wurde zu programmieren stimmt sie bei der normalen master version danach überein. Bei der master version mit bootloader stimmt sie sofort nicht überein. Wenn das nicht komisch ist....^^