L'ho fatto: ho preso il 168 da un arduino, l'ho programmato con USBtinyISP. Avrai bisogno di una qualche forma di scheda di destinazione per l'ISP USBtiny. Ho usato uno di questi da Evil Mad Scientist Labs, insieme a un socket ZIF da Sparkfun. Il circuito effettivo necessario per programmarli è abbastanza semplice da poterlo costruire su una scheda prototipi senza troppi problemi. EMSL ha anche un pratico articolo su ciò che deve essere quel circuito in modo che tu possa fare il fai-da-te.
Affinché una scheda target funzioni, deve essere impostata con almeno un'approssimazione di come il chip è già fuso. Ciò significa avere la giusta quantità di potenza (se il circuito di rilevamento del brownout è abilitato) e avere un oscillatore se il chip è impostato per usarne uno esterno (AFAIK il chip ignorerà un oscillatore esterno se non è fuso per usarlo). È necessario prima impostare i fusibili per utilizzare l'oscillatore interno prima di rimuoverlo da Arduino o mettere un oscillatore sulla scheda di destinazione. Non penso che Arduino sia dotato di rilevamento del brownout abilitato, quindi probabilmente sei al sicuro su questo punto. Suggerirei di utilizzare semplicemente il ponticello su USBtiny per fornire alimentazione alla scheda di destinazione, piuttosto che preoccuparsi di un alimentatore esterno.
Non posso raccomandare di utilizzare la scheda Arduino come target del programmatore perché ha una presa normale invece di una presa ZIF. Trovo che sia molto meno probabile che maneggi i pin sul mio MCU quando uso uno zoccolo ZIF. Entrare e uscire da una breadboard è già abbastanza brutto. Sparkfun sembra avere i prezzi più economici sui socket ZIF, se decidi di seguire quella strada.
Dato che hai già un programmatore ISP, puoi risparmiare un po 'di soldi sul tuo chip 328 e acquistarne uno senza Arduino boot loader. Usa il software Arduino per masterizzare il bootloader appropriato una volta installato.