Inhoudsopgave:

VUSBTiny AVR SPI Programmer - Ajarnpa
VUSBTiny AVR SPI Programmer - Ajarnpa

Video: VUSBTiny AVR SPI Programmer - Ajarnpa

Video: VUSBTiny AVR SPI Programmer - Ajarnpa
Video: VUSBTINY AVR Programmer 2024, November
Anonim
VUSBTiny AVR SPI Programmeur
VUSBTiny AVR SPI Programmeur

na het maken van een usbtiny isp-programmeur en deze 6 maanden te gebruiken, wilde ik er nog een maken om mee te nemen. ik hou van de eenvoud van het usbtiny isp-ontwerp, maar zou het nog kleiner willen maken en minder onderdelen nodig hebben. een ding in het oorspronkelijke ontwerp dat ik wil veranderen is om het gebruik van klokkristal te elimineren. een oplossing die ik heb gevonden, is dat v-usb-stuurprogramma's de 16.5Mhz interne oscillator op attiny25/45/85-apparaten ondersteunen. dus ik begin dit project om usbtiny isp v-usb te laten gebruiken voor usb-communicatie. de directe voordelen zijn dat het ruimte bespaart en minder componenten telt (geen kristallen meer).usbtiny beschrijving van https://www.xs4all.nl/~dicks/avr/usbtiny/ USBtiny is een software-implementatie van de USB low-speed protocol voor de Atmel ATtiny microcontrollers. Natuurlijk werkt het ook op de ATmega-serie. De software is geschreven voor een AVR geklokt op 12 MHz. Bij deze frequentie duurt elke bit op de USB-bus 8 klokcycli en met veel trucjes is het mogelijk om de USB-golfvormen softwarematig te decoderen en te coderen. De USB-driver heeft ongeveer 1250 tot 1350 bytes flashruimte nodig (exclusief de optionele identificatiestrings), afhankelijk van de configuratie en compilerversie, en 46 bytes RAM (exclusief stackruimte). De C-interface bestaat uit 3 tot 5 functies, afhankelijk van de configuratie.vusb-beschrijving van https://www.obdev.at/products/vusb/ V-USB is een softwarematige implementatie van een low-speed USB-apparaat voor Atmel's AVR-microcontrollers, waardoor het mogelijk is om USB-hardware te bouwen met bijna elke AVR-microcontroller, zonder extra chip.video over constructie en gebruik

Stap 1: Functies en onderdelen

Functies en onderdelen
Functies en onderdelen

* programmeerlogica van usbtiny isp, volwassen avr-dude-ondersteuning * kleine footprint * minimale componenten * voedt het doelapparaat merk op dat de io-lijnen naar de doel-mcus niet beschermd zijn. u kunt 1k-2k-weerstanden toevoegen aan SCK en MOSI en beschermen tegen mogelijke verkeerde verbindingsreferenties op basis van de werken gevonden op v-usb van framework https://www.obdev.at/vusb/usbtiny isp https://www.xs4all. nl/~dicks/avr/usbtiny/parts list * attiny45/85 (85 is makkelijker verkrijgbaar) * 3.6v zenerdiodes (1n747, BZX79,..vermijd 1W types) * 68ohm weerstand x 2 * 1.5K weerstand * mini breadboard 170 tiepoints * usb-kabel (dollar shop usb-printerkabel is prima) * 1k/2k weerstanden voor io-lijnen bescherming (optioneel)tools vereist * een werkende avr-programmeur (ja, het is een catch22, we hebben er een nodig om er een te maken) * werkende avr programmeeromgeving

Stap 2: Breadboard-indeling, schema en constructie

Breadboard lay-out, schema en constructie
Breadboard lay-out, schema en constructie
Breadboard lay-out, schema en constructie
Breadboard lay-out, schema en constructie

bouw

* volg de breadboard-lay-out, er zijn geen componenten, 3 weerstanden, 2 diodes, 1 dop, plus een 8-pins mcu. * koop een USB-printerkabel van een dollarwinkel, snijd het uiteinde van de printer af, er zijn 4 blootliggende draden, maak ze vast en maak er een 4-pins mannelijke header van, we zullen deze gebruiken om verbinding te maken met het breadboard. raadpleeg schema voor indeling en pinbezetting (J1). * let op de polariteit van de diodes.

het project bouwen en flashen

het project is gebouwd in een linux ubuntu lucid-box met avr-gcc-toolchain. er wordt van uitgegaan dat je al een dergelijke omgeving hebt, of je kunt op internet vinden hoe je er een kunt instellen. broncodes zijn gnu gpl v2 licentie van overerving.

de broncode volgt een conventie die wordt aanbevolen door v-usb, u kunt het broncodepakket vusbtiny.tgz downloaden en in een projectdirectory plaatsen. in je bronmap is er een main.c, wat mijn versie is van de gewijzigde usbtiny-programmer. en een usbdrv-submap, die de v-usb-laag bevat. let bij het bouwen hiervan op de licentietermijn van de bovenstaande twee projecten. mijn bron over de logica van de programmeur is gebaseerd op de Dick Streefland-versie en niet op de ladyada-versie (hoewel ze bijna hetzelfde zijn).

voor degenen die geen build-to-chain hebben, kun je het volgende binaire bestand gebruiken:

klik om vusbtiny.hex te downloaden

en gebruik avrdude om firmware te flashen

avrdude -c usbtiny -p t45 -e -V -U flash:w:usbtiny.hex

(als uw apparaat een tiny85 is, vervangt u -p t45 door -p t85)

bron kan hier worden gedownload klik om vusbtiny.tgz te downloaden

untar het broncodepakket in uw werkmap

tar -zxvf vusbtiny.tgz

* doe cd vsubtiny, om te veranderen in vusbtiny werkmap * pas makefile aan voor het doelapparaat volgens de chip die je gaat gebruiken. d.w.z. PROGRAMMER_MCU=t45 of t85 * maak een make * voeg uw favoriete ISP-programmeur toe * wijzig makefile en wijzig indien nodig uw avrdude-parameters. de standaard gaat uit van een USBTiny-programmeur. d.w.z. AVRDUDE_PROGRAMMERID=usbtiny * flash-firmware via make install

na het knipperen van de firmware moeten we de zekering correct instellen, we gebruiken pin 1 reset als io in dit project

* ppl-klok gebruikt zoals vereist door v-usb-laag voor usb-timing * reset-pin uitgeschakeld omdat we het als io moeten gebruiken

avrdude -c usbtiny -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m

deze instelling schakelt verdere programmering via 5V SPI uit omdat we de RESET-pin (pin1) voor io nodig hebben. u hebt toegang tot een HVSP-programmeur nodig om de zekering te herstellen.

Stap 3: Gebruik en toepassing

Gebruik en toepassing
Gebruik en toepassing
Gebruik en toepassing
Gebruik en toepassing
Gebruik en toepassing
Gebruik en toepassing

direct knipperen op breadboard

als u vusbtiny gebruikt om 8-pins AVR-apparaten te flashen, kunt u uw doelapparaat gewoon op het programmeerapparaat drukken. de programmeur was zo ontworpen dat de programmeerpinnen overeenkomt met doelen. er is echter één truc, je moet pin 2 en 3 op de programmer-mcu isoleren, omdat dit de USB D + en D- pinnen zijn die op de pc zijn aangesloten. ik gebruik hiervoor een stukje plakband, dat zie je op de foto's. hieronder zie je een tiny13v "rijden" op de tiny45, klaar om firmware te ontvangen.

ISP knippert via jumper

om een doelcircuit via ISP (in-system programming) te programmeren, hebt u een ISP-kabel nodig. hier gebruik ik niet de standaard 2x3 of 2x5 pin headers. in plaats daarvan gebruik ik een 1x6-jumper die meer breadboard-vriendelijk is, je kunt een 2x3- of 2x5-pinheader maken door ze toe te wijzen aan J2 zoals weergegeven op de breadboard-lay-out en -schema's. de volgende foto toont een tiny2313 klaar om te worden geflitst via ISP.

probleemoplossen

* kan de firmware niet flashen? controleer uw originele programmeur, misschien moet u de timing aanpassen via -B-vlag in avrdude. probeer chip 1e te lezen, kan een slechte zekering zijn, misschien heeft uw chip een extern kloksignaal nodig. het kan zijn dat u uw chip moet herstellen naar de standaardwaarde. * controleer de verbindingen * als u verschillende io-pinnen gebruikt, controleer dan de code en verbindingen * u kunt zenerdiodes vervangen met 500 mw, 400 mw typen * u kunt proberen de R3-waarde te verlagen tot 1,2 K of minder * u heeft meer kans op avrdude timingproblemen, probeer -B vlag van avrdude, een kortere USB-kabel helpt allemaal

Aanbevolen: