USBasp-Klon: Unterschied zwischen den Versionen
Marvin (Diskussion | Beiträge) (→Board) |
Hefee (Diskussion | Beiträge) (Engische Kategorie hinzugefügt) |
||
(42 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt) | |||
Zeile 6: | Zeile 6: | ||
Das Board ist in platzsparender Stickform und verwendet beinahe nur SMD-Komponenten in handbestueckbaren Grössen. | Das Board ist in platzsparender Stickform und verwendet beinahe nur SMD-Komponenten in handbestueckbaren Grössen. | ||
==Patch== | * Bild: http://www.0x53a.de/files/usbasp-II.png | ||
* CAD-Quellen (gEDA pcb): http://www.0x53a.de/files/usbasp-II.pcb | |||
===Bestückung=== | |||
Da die meisten Bauteile nichts besonderes sind, aber doch immermal was fehlt, habe ich noch zu jedem Bauteil, das nicht unbedingt funktionskritisch ist, noch eine Alternativbestückung dazugeschrieben. Die Bauteile haben natürlich einen Sinn und ein Fehlen schränkt in der einen oder anderen Weise die Funktionalität des Programmers ein. | |||
{| border="1" | |||
! Bezeichner | |||
! Bestückung | |||
! Alternativbestückung | |||
|- | |||
| L1 | |||
| Spule 1210: 10uH, 100 mA | |||
| Widerstand, 1206: 0 Ohm | |||
|- | |||
| C1 | |||
| Kondensator, 0805: 10uF, 16 V | |||
| freilassen | |||
|- | |||
| B0, B1, B2, B3, B4, B5 | |||
| Widerstand, 1206: 0 Ohm | |||
| - | |||
|- | |||
| D1, D2 | |||
| Zener-Diode, MiniMELF: 3.6V Zener-Spannung | |||
| - | |||
|- | |||
| R1, R2 | |||
| Widerstand, 0805: 68 Ohm | |||
| - | |||
|- | |||
| R3 | |||
| Widerstand, 0805: 2.2 kOhm | |||
| Widerstand mit ähnlichem Wert | |||
|- | |||
| C2, C3, C4 | |||
| Keramikkondensator 0603: 100nF, 16V | |||
| Keramikkondensator mit ähnlichem Wert | |||
|- | |||
| C6, C7 | |||
| Keramikkondensator 0603: 22pF, 16V | |||
| - | |||
|- | |||
| Y1 | |||
| Quarz, HC49 SMD: 12MHz | |||
| - | |||
|- | |||
| U1 | |||
| ATmega8, TQFP | |||
| ATmega48, TQFP oder ähnlich | |||
|- | |||
| R4, R5 | |||
| Widerstand, 0805: 1kOhm | |||
| Widerstand mit ähnlichem Wert | |||
|- | |||
| LD1, LD2 | |||
| Leuchtdiode 0805 | |||
| freilassen | |||
|- | |||
| T1, T2 | |||
| Taster | |||
| freilassen | |||
|- | |||
| (unbenannt) | |||
| 10-poliger Wannenstecker | |||
| freilassen | |||
|- | |||
| (unbenannt) | |||
| 6-poliger Wannnenstecker | |||
| freilassen | |||
|} | |||
==Firmware== | |||
Der Programmer selbst muss einmal geflasht werden, bevor er verwendet werden kann, wofür ein bereits funktionierender AVR ISP benötigt wird. | |||
===Patch=== | |||
--- main.c.old 2010-09-26 12:17:50.460872001 +0200 | |||
+++ main.c 2010-09-26 18:03:05.670872002 +0200 | |||
@@ -222,7 +222,11 @@ | |||
PORTD = 0; | |||
PORTB = 0; | |||
/* all outputs except PD2 = INT0 */ | |||
- DDRD = ~(1 << 2); | |||
+ //DDRD = ~(1 << 2); | |||
+ /* switch PD0, PD3, PD4 and PD5 to input, as they are used | |||
+ * routing and PD2 to input as it is used for INT0 | |||
+ */ | |||
+ DDRD &= ~((1 << 0) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5)); | |||
/* output SE0 for USB reset */ | |||
DDRB = ~0; | |||
@@ -238,8 +242,10 @@ | |||
DDRB = 0; | |||
/* all inputs except PC0, PC1 */ | |||
- DDRC = 0x03; | |||
- PORTC = 0xfe; | |||
+ DDRC = (1 << 0) | (1 << 1); | |||
+ /* activate pullups on all other pins, except those that were | |||
+ * re-used for routing */ | |||
+ PORTC = ~((1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5)); | |||
/* init timer */ | |||
clockInit(); | |||
__FORCETOC__ | |||
[[Category:Projekte]][[Category:Bausaetze]][[Category:en]] |
Aktuelle Version vom 11. November 2011, 13:19 Uhr
Hier wird ein Board fuer den USBasp [1], ein AVR In System Programmer, der V-USB fuer USB direkt am AVR verwendet.
Achtung: Das Board ist aus Platzgruenden nicht mit der Originalfirmware kompatibel! Nur die gepatchte Firmware aufspielen!
Board
Das Board ist in platzsparender Stickform und verwendet beinahe nur SMD-Komponenten in handbestueckbaren Grössen.
- Bild: http://www.0x53a.de/files/usbasp-II.png
- CAD-Quellen (gEDA pcb): http://www.0x53a.de/files/usbasp-II.pcb
Bestückung
Da die meisten Bauteile nichts besonderes sind, aber doch immermal was fehlt, habe ich noch zu jedem Bauteil, das nicht unbedingt funktionskritisch ist, noch eine Alternativbestückung dazugeschrieben. Die Bauteile haben natürlich einen Sinn und ein Fehlen schränkt in der einen oder anderen Weise die Funktionalität des Programmers ein.
Bezeichner | Bestückung | Alternativbestückung |
---|---|---|
L1 | Spule 1210: 10uH, 100 mA | Widerstand, 1206: 0 Ohm |
C1 | Kondensator, 0805: 10uF, 16 V | freilassen |
B0, B1, B2, B3, B4, B5 | Widerstand, 1206: 0 Ohm | - |
D1, D2 | Zener-Diode, MiniMELF: 3.6V Zener-Spannung | - |
R1, R2 | Widerstand, 0805: 68 Ohm | - |
R3 | Widerstand, 0805: 2.2 kOhm | Widerstand mit ähnlichem Wert |
C2, C3, C4 | Keramikkondensator 0603: 100nF, 16V | Keramikkondensator mit ähnlichem Wert |
C6, C7 | Keramikkondensator 0603: 22pF, 16V | - |
Y1 | Quarz, HC49 SMD: 12MHz | - |
U1 | ATmega8, TQFP | ATmega48, TQFP oder ähnlich |
R4, R5 | Widerstand, 0805: 1kOhm | Widerstand mit ähnlichem Wert |
LD1, LD2 | Leuchtdiode 0805 | freilassen |
T1, T2 | Taster | freilassen |
(unbenannt) | 10-poliger Wannenstecker | freilassen |
(unbenannt) | 6-poliger Wannnenstecker | freilassen |
Firmware
Der Programmer selbst muss einmal geflasht werden, bevor er verwendet werden kann, wofür ein bereits funktionierender AVR ISP benötigt wird.
Patch
--- main.c.old 2010-09-26 12:17:50.460872001 +0200 +++ main.c 2010-09-26 18:03:05.670872002 +0200 @@ -222,7 +222,11 @@ PORTD = 0; PORTB = 0; /* all outputs except PD2 = INT0 */ - DDRD = ~(1 << 2); + //DDRD = ~(1 << 2); + /* switch PD0, PD3, PD4 and PD5 to input, as they are used + * routing and PD2 to input as it is used for INT0 + */ + DDRD &= ~((1 << 0) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5)); /* output SE0 for USB reset */ DDRB = ~0; @@ -238,8 +242,10 @@ DDRB = 0; /* all inputs except PC0, PC1 */ - DDRC = 0x03; - PORTC = 0xfe; + DDRC = (1 << 0) | (1 << 1); + /* activate pullups on all other pins, except those that were + * re-used for routing */ + PORTC = ~((1 << 0) | (1 << 1) | (1 << 3) | (1 << 4) | (1 << 5)); /* init timer */ clockInit();