Jak zaplanować programowanie obwodu w AVR?

12

Moją zwykłą metodą przeprogramowywania AVR-ów (dotychczas ograniczoną do ATtiny13 i ATtiny2313) jest odłączenie układu od obwodu hosta, podłączenie go do innej płyty ze wszystkimi połączeniami ICSP, zaprogramowanie, a następnie wymiana. Ciągle jednak słyszę, że można zaprogramować układ na swoim miejscu (co, rozumiem, jest sednem ICSP).

Czy są jakieś specjalne względy sprzętowe, które należy wziąć pod uwagę przed zaprogramowaniem układu na miejscu? Na przykład obawiam się, że proces ICSP może uszkodzić elementy obwodu podłączone do tych samych styków AVR, które są używane dla ICSP. Czy od czasu do czasu trzeba dodać diody lub inny bufor do ochrony tych elementów?

Wiem, że to pytanie brzmi niejasno i chyba tak jest - ale nie podałem szczegółów mojego konkretnego obwodu, ponieważ interesują mnie bardziej ogólne zasady praktyczne. To znaczy, czy nigdy nie trzeba się tym martwić, czy odpowiedź naprawdę zależy od konkretnego obwodu, którego częścią jest MCU?

Tim
źródło

Odpowiedzi:

15

Użyłem ISP do prawie każdej płyty AVR, którą zrobiłem; nie ma się czego bać. Podręcznik AVR ISP mkII zawiera całkiem dobre podsumowanie ograniczeń, na które należy zwrócić uwagę w sekcji „Interfejs docelowy”. Zasadniczo, jeśli prowadzisz styki MISO / MOSI / SCK bezpośrednio do programatora i masz około 820 omów między nimi a resztą obwodu (i nie robisz nic dziwnego z pinem resetującym), jesteś w porządku. Nie martwiłbym się tym, że dostawca usług internetowych uszkodzi inne komponenty; to nie jest programator wysokiego napięcia. Wszystkie sygnały pracują przy napięciu 5 V, więc jeśli może uszkodzić komponent zewnętrzny, to również twój mikrokontroler.

Jeśli naprawdę utkniesz z płytą, która nie pozwala na programowanie przez ISP, przynajmniej spróbuję użyć gniazda ZIF dla twojej płyty programistycznej. Są drogie, ale znacznie poprawi jakość twojego życia.

phooky
źródło
Dzięki za link - właśnie o to mi chodzi. Tak naprawdę nie używam prawdziwego dostawcy AVR - tylko odpowiednio zaprogramowanego arduino. (!) Zamienię to na Bus Pirate za kilka dni, więc zebranie planszy z gniazdami ZIF to zdecydowanie coś, co planuję zrobić. Moja obecna procedura jest wyjątkowo brzydka!
Tim
1

Użyj zworki lub przełącznika, aby fizycznie odłączyć nagłówek ICSP. W ten sposób możesz współdzielić piny z innymi funkcjami bez martwienia się i bez konieczności manipulowania innymi komponentami.

To wydaje się być najbardziej oczywistym i najbezpieczniejszym rozwiązaniem i właśnie tego używam.

(Moja pierwsza odpowiedź została usunięta, więc próbowałem dodać więcej szczegółów).

Ali Afshar
źródło
Jak by to działało? Następnie, po podłączeniu przełącznika / zworki, piny nadal będą połączone z resztą obwodu.
eeze
0

Niestety, nie można wykonać programowania obwodów dla odbiorników AVR, jeśli piny są wspólne dla innych funkcji, na przykład świecących diod LED. Chociaż może działać, nie jest to gwarantowane, ponieważ może spowodować, że wyjścia programatora lub µC spadną zbyt nisko, aby działało.

Inną alternatywą jest zamówienie wstępnie zaprogramowanych żetonów. Wiem, że Microchip oferuje to za swoje żetony, ale nie jestem pewien co do Atmela.

Thomas O
źródło
No cóż, podejrzewałem to. Chyba po prostu będę musiał robić rzeczy powoli i niezgrabnie. (Och, i nie ma szans, żeby Atmel zrobił dla mnie programowanie wstępne, jestem po prostu hobbystą. :-))
Tim
Microchip pobiera ~ 40 USD „opłaty instalacyjnej”. Znów niepewny co do Atmela. Jeśli zamawiasz w zakresie 10-100, prawdopodobnie warto.
Thomas O
3
Zaprogramowałem wiele płyt z innymi obciążeniami na pinach SPI, szczególnie diodami LED, bez żadnych problemów. Uważaj tylko, aby nic nie sterowało sygnałami. Oznacza to, na przykład, jeśli masz podłączone urządzenie SPI, daj mu rezystor podciągający lub podobny, aby utrzymać go również w stanie resetowania lub niezaznaczonym.
Yann Vernier