Hallo LotadaC
Die Zeiten (diese 15 Taktzyklen) - die hast Du aus der "Instruction Set Summary" des ATMega, vermute ich.
Da ist ein Assembler Programmierer einem Klammercoder gegenüber im Vorteil:
- der Klammercoder kümmert sich (eigentlich) weniger um die Instructions, denn der Compiler "macht es ja", wobei der Klammercoder sich (natürlich) auch damit (Instruction Set) beschäftigen sollte.
- der Assembler Programmierer sieht sich das Instruction Set Summary an und weiß somit genau, wieviele Taktzyklen ein Befehl benötigt.
=> Ich habe wieder etwas gelernt .
Ich habe nun meine ISP-Funktion des Masters geändert - wird ein Byte empfangen, wird es im Empfangspuffer gespeichert und unmittelbar per USART an den PC gesendet und erst danach SPDR mit neuen Sendedaten gefüllt => ein Warten mit "__asm volatile("nop") ist somit nicht mehr nötig - der Master ist ja beschäftigt .
Ich muss "nur" noch herausfinden, warum nach dem Flashen des Masters ein Flashen des Slave nötig ist; ein RESET des Slave (PC6 = GND) nützt nichts, zwar "läuft" der Slave (sehe ich an einer toggelnden LED), aber der SPI fkt nicht, der Master empfängt nur "0x00", egal ob ich beim Slave RESET betätige oder nicht.
mfg
Hero_123
Die Zeiten (diese 15 Taktzyklen) - die hast Du aus der "Instruction Set Summary" des ATMega, vermute ich.
Da ist ein Assembler Programmierer einem Klammercoder gegenüber im Vorteil:
- der Klammercoder kümmert sich (eigentlich) weniger um die Instructions, denn der Compiler "macht es ja", wobei der Klammercoder sich (natürlich) auch damit (Instruction Set) beschäftigen sollte.
- der Assembler Programmierer sieht sich das Instruction Set Summary an und weiß somit genau, wieviele Taktzyklen ein Befehl benötigt.
=> Ich habe wieder etwas gelernt .
Ich habe nun meine ISP-Funktion des Masters geändert - wird ein Byte empfangen, wird es im Empfangspuffer gespeichert und unmittelbar per USART an den PC gesendet und erst danach SPDR mit neuen Sendedaten gefüllt => ein Warten mit "__asm volatile("nop") ist somit nicht mehr nötig - der Master ist ja beschäftigt .
Ich muss "nur" noch herausfinden, warum nach dem Flashen des Masters ein Flashen des Slave nötig ist; ein RESET des Slave (PC6 = GND) nützt nichts, zwar "läuft" der Slave (sehe ich an einer toggelnden LED), aber der SPI fkt nicht, der Master empfängt nur "0x00", egal ob ich beim Slave RESET betätige oder nicht.
mfg
Hero_123