Supersimple Attiny programmerare
När jag var riktigt trött att alltid göra MOSI, MISO, Återställ, SCK, Vcc och marken anslutningen med kablar för att programmera en Attiny85/45/13, köpte jag en USBASP programmerare (riktigt billigt).
Fick inte det att fungera, alltid fick fruktade "Usch, ogiltig enhet signatur" meddelandet, som vanligtvis är ett tecken på en dålig anslutning. Kunde hitta snabbt det, kanske en ruttna kabel, men jag vill inte förlora mer tid så jag satt ihop en snabb och enkel Attiny programmerare.
Jag vet det finns dussintals kretsar och mönster flyter runt på internet, men jag fick aldrig runt till att faktiskt göra ett, så om du är som mig, detta är bara en liten push att berätta att "bara göra det" det tar kanske 10 minuter från skrot till programmerare.
Jag fick min inspiration från en spansk webbplats från en kille som inspirerade mig att bygga min första Arduino, men när jag kollade där, stripboard-illustrationer av hans programmerare var borta.
Ingen svett, bara enkla att göra en själv.
Tanken är en liten bit av stripboard som ansluts i nödvändiga rubrikerna för Arduino. En 20hole x 9 strips bit räcker, men jag gjorde de 22 hål, bara för att ge ett par små "vingar" för att hjälpa mig dra ut.
BOM
20 x 9 stripboard
manliga rubrik 7 stift
manliga huvud 6 stift
2 lysdioder
2 motstånd 560-1k
1 elektrolytisk kondensator 10 uF (i själva verket använde jag en 33uF, som fungerade också)
8 stift dil IC innehavaren
Arduino ISP erbjuder 3 lysdioder för att hålla reda på status. Jag genomfört 2: hjärtslag och fel (D9 och D8). Att lägga till 'Programmering' LED är lite mer jobbigt eftersom det måste D7 som är precis på andra sidan icke standardiserade klyftan i Arduino rubriker, men om du vill du kunna lägga en något böj pin till slot in D7.
Styrelsen ansluts enkelt, men är inte helt rak på grund av hur den arduino headers radas upp, men det fungerar bra.
Bara ett ord på kondensatorn. För att undvika att Arduino återställs när attiny programmet laddas, måste Återställ PIN-koden hållas hög. hur det görs oftast på två sätt: en resistor (120 Ohm) till Vcc eller en kondensator (10uF) mellan jorden och Reset. Båda fungerar bra.
Kondensatorn är dock också anledningen till att du inte kan ladda upp ArduinoISP programmet med styrelsen in, så du måste dra ut. Du kan naturligtvis lägga till en bygel till styrelsen eller en liten, till tillfälligt koppla kondensatorn
Viktigt!
Göra säker och dubbel dubbelkolla att du inte har glömt att göra alla de nödvändiga nedskärningarna i stripboard. Kolla det efter varje snitt måste använda en multimeter om det behövs.
Efter du fastlödda det upp allt, kontrollera igen att det finns ingen herrelös anslutningar eller shorts. Anledningen till detta är att du inte vill kort några stift på din arduino eller ansluta några stift där de inte borde vara ansluten. Du vill inte ha någon av din Digital-Out stift skall anslutas till marken när du drar dem höga.
Hur som helst, bygga det igår och fungerar utmärkt. Jag har programmerat mer Attinys i en halv dag än jag gjorde i mitt liv innan.
För personer som är nya för programmering en Attiny: stegen är följande.
Kontrollera att du har en Attiny kärna installerad (det finns många, prova här eller här , också kan du kolla här)
Ta bort programmering styrelsen och ladda upp programmet "ArduinoISP" till din Arduino.
Infoga program styrelsen och läsa in den önskade Attiny skissen.
Välj rätt Attiny inställning under "Verktyg-Board"
Gå till "Fil-ladda med Programmer" i äldre IDE-versioner kan detta vara bara "ladda upp"
Kan du kolla här eller här för mer information om programmering.
viktigt är att veta att även med en framgångsrik programmering, du kommer att få två felmeddelanden:
Ignorera två felmeddelanden:
"avrdude: definiera PAGEL och BS2 signaler i konfigurationsfilen för del ATtiny85".
bara ignorera dessa meddelanden.
Om du är perfektionist, kan du lösa dessa felmeddelanden genom att redigera filen avrdude.conf, Funna i
(windows) C:\Program Files (x86)\arduino-1.0.6\hardware\tools\avr\etc
(Ubuntu) Home\Arduino-1.06\hardware\tools
Hitta ord Attiny85 och gå ner några rader upp till:
chip_erase_delay = 4500;
och lägga under dessa rader:
# Lagt till för att eliminera felet att bygga.
Pagel = 0xB3;
BS2 = 0xB4;
Hitta detta avsnitt lägre ner och lägga till den markerade koden:
minne "lock"
storlek = 1;
Skriv = "1 0 1 0 1 1 0 0 1 1 1 x x x x x","x x x x x x x x 1 1 jag jag jag jag jag jag";
Läs = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0","0 0 0 0 0 0 0 0 o o o o o o o o";
min_write_delay = 9000;
max_write_delay = 9000;
;
Tack baelza.bubba för att sätta mig på rätt spår för att. Om du har problem med att förstå, kontrollera de två bilderna. Förstå att du inte behöver ändra filen, det kommer att fungera. Förändringen är bara att bli av med felmeddelanden.
Bara ett tips: när jag programmering Attinys jag använde inställningen för den interna klockan 8 MHz och hittade min tidsinställningar vara långt borta. sammanträffande eller inte, det verkade de var en faktor 8 off (långsammare). När jag försökte på 1 MHz, verkade det hela OK igen. Detta orsakas av följande: den standard operativa fart för Attiny är 1Mhz, och det blir som genom att dividera den inre oscillatorn med 8. Där jag förmodade inställningen 8MHz skulle ställa korrekt säkringarna att berätta Attiny det inte bör dela interna oscillatorn längre, verkar det som att det inte kan göra. Lösningen skulle vara att först ställa in korrekt säkringarna genom att välja "Bränn bootloader" som inte bränna bootloader, men det anger rätt säkringarna.
Bara ett annat tips: olika Attiny kärnor och inte alla är full implementeringar. Om du tänker använda "OneWire" biblioteket, kanske du stöter på fel som:
/libraries/OneWire/OneWire.cpp:105: fel: "digitalPinToBitMask" var inte deklareras i detta scope
/libraries/OneWire/OneWire.cpp:106: fel: "digitalPinToPort" var inte deklareras i detta scope
/libraries/OneWire/OneWire.cpp:106: fel: "portInputRegister" var inte deklareras i detta scope
Det finns en enkel fix för det:
• Leta upp och öppna OneWire.h
• Leta upp denna del av koden mot toppen...
#if ARDUINO > = 100
#include "Arduino.h" / / delayMicroseconds, digitalPinToBitMask, etc
#else #include "WProgram.h" / / för delayMicroseconds
#include "pins_arduino.h" / / digitalPinToBitMask, etc
#endif
• Ändra till:
#if ARDUINO > = 100
#include "Arduino.h" / / delayMicroseconds, digitalPinToBitMask, etc
#include "pins_arduino.h" / / digitalPinToBitMask, etc
#else #include "WProgram.h" / / för delayMicroseconds
#include "pins_arduino.h" / / digitalPinToBitMask, etc
#endif
• Spara och stäng OneWire.h
• Behöver inte starta om Arduino IDE
Problemet är inte biblioteket utan kärna. Det är bara lättare att åtgärda i biblioteket
Och ytterligare ett tips: Om du försöker använda Attiny med LCD biblioteket från F. Malpertida, kan du köra i några felmeddelanden som har att göra med filerna print.h och print.cpp av kärna ur.
Dessa kan fastställas. Det finns tvåpublikationer på hur man gör. Nyttig info härockså.
Och ett annat tips när det gäller Attiny13
Om programmering i Attiny13 och du hittar den analogRead inte fungerar, sedan lägga till "analogReference(0)" i inställningarna.