Inhoudsopgave:

AVR Assembler Tutorial 8: 4 stappen
AVR Assembler Tutorial 8: 4 stappen

Video: AVR Assembler Tutorial 8: 4 stappen

Video: AVR Assembler Tutorial 8: 4 stappen
Video: AVR Ассемблер. Урок 8. Внешние прерывания. AVR Assembler. Lesson 8. External interrupts. 2024, Juli-
Anonim
AVR-montagehandleiding 8
AVR-montagehandleiding 8

Welkom bij les 8!

In deze korte tutorial gaan we een beetje afwijken van het introduceren van nieuwe aspecten van het programmeren in assembler om te laten zien hoe we onze prototyping-componenten naar een afzonderlijke "gedrukte" printplaat kunnen verplaatsen. De reden is dat op dit moment ons belangrijkste prototype-broodbord vol zit met zoveel chips, draden, knoppen en LED's dat het moeilijk wordt om nieuwe dingen te testen en omdat we de componenten uiteindelijk toch naar hun eigen bord moeten verplaatsen, kunnen we net zo goed nu beginnen. Velen van jullie zijn waarschijnlijk al bedreven in de dingen die we in deze tutorial zullen behandelen en dus kun je deze tutorial zien als slechts een ontspannende onderbreking van het coderen.

Dus vandaag zullen we onze dobbelsteenroller ATmega328P en het bijbehorende paar dobbelstenen verplaatsen naar een extern bord met verbindingen naar ons hoofdbord voor communicatie ernaar en om het van stroom te voorzien. Afgezien daarvan zullen de bedrading en het functioneren van de dobbelstenen op zichzelf staan in dat onderdeel.

Hieruit kun je waarschijnlijk voorspellen dat ons uiteindelijke doel is om dit te doen met elk van de componenten die we onderweg bouwen, zodat we ze, wanneer we klaar zijn, allemaal kunnen verbergen in een mooi uitziend pakket dat zal functioneren via het indrukken van knoppen zonder alles te zien van de draden en de interne werking.

We zullen het grootste deel van deze tutorial besteden aan fysieke taken zoals het ontwerpen van een circuit, het in kaart brengen van een prototyping-bord en het aan elkaar solderen van dingen, maar er is een beetje programmeren dat we aan het einde moeten doen nadat we dingen hebben verplaatst. De reden is dat we uiteindelijk de 2-draads seriële interface gaan gebruiken om te communiceren tussen onze belangrijkste "master" -controller en alle "slave" -controllers die deel uitmaken van de componenten van ons totale project in deze reeks tutorials en, zoals u zich herinnert, hebben we in Tutorial 6 een soort Morse Code-type methode uitgevonden om onze dobbelstenen van de dobbelsteenroller (Tutorial 4) te communiceren naar de Register Analyzer (Tutorial 5) die het resultaat van de dobbelsteenworp binair op 8 LED's weergeeft. Nou, dat was gewoon een "rol je eigen" communicatiemethode die ik besloot te gebruiken omdat het op dat moment te vroeg was om in 2-draads seriële communicatie te komen. We zijn nu bijna bereid om in het diepe te duiken van seriële communicatie, en dat zullen we doen in Tutorial 10, maar voor nu moeten we anticiperen op die toekomstige ontwikkeling en onze dobbelsteenrol-LED's opnieuw bedraden om de twee vrij te maken. pinnen die we nodig hebben voor de seriële communicatie.

Dit zijn de SCL- en SDA-pinnen op de ATmega328P. U kunt aan het pinout-diagram zien dat ze ook ADC5 en ADC4 worden genoemd wanneer ze worden gebruikt in analoog-naar-digitaal conversies, ze worden PCINT13 en PCINT12 genoemd wanneer ze worden gebruikt als "Pin Change Interrupt"-pinnen, en ten slotte noemen we ze over het algemeen PC5 en PC4 wanneer eenvoudigweg beschouwd als pinnen op PortC. Omdat we deze twee pinnen om verschillende redenen hebben gebruikt als onderdeel van onze dobbelsteenroller (de belangrijkste is dat het coderen eenvoudiger maakte en de bedrading naar de LED's op het bord eenvoudiger), zullen we nu onze code moeten aanpassen en iets opnieuw moeten bedraden naar maak deze pinnen vrij voor toekomstige communicatie.

Dus we beginnen met het ontwerpen, knippen, bedraden en solderen. Daarna zullen we de dobbelsteenrol herschrijven om te werken met onze nieuwe opstelling en uiteindelijk testen om er zeker van te zijn dat hij nog steeds werkt.

Om deze Tutorial te voltooien heb je de volgende items nodig:

  1. De standaard dingen die je altijd nodig hebt en die ik niet meer de hele tijd ga herhalen: je prototyping-bord, je kopie van de datasheet en de instructieset, en je hersens.
  2. Een printplaat voor prototypen van een draadloos circuit zoals deze: https://www.ebay.com/itm/191416297627 Ik ga de Measure Explorer 103RAWD-versie van dit bord gebruiken: https://www.ebay.com/itm/103RAT -circuit-proto-proto … aangezien ik er een aantal bij de hand heb, maar de 103RAW-0-versie waarnaar ik hierboven link, zal ook prima werken.
  3. Clippers, draden, soldeer, soldeerbout, "helpende handen" of wat dan ook om dingen vast te houden, enz. enz. enz. nogmaals, vanaf nu stop ik ook met het opsommen van deze dingen. Als je zo ver bent gekomen in deze zelfstudies, dan heb je waarschijnlijk al deze dingen al.

Hier is een link naar de volledige verzameling van mijn AVR-assembler-tutorials:

Stap 1: Ontwerp een bedradingsschema

Ontwerp een bedradingsschema
Ontwerp een bedradingsschema
Ontwerp een bedradingsschema
Ontwerp een bedradingsschema
Ontwerp een bedradingsschema
Ontwerp een bedradingsschema

Het leuke van de Measure Explorer-borden is dat als je wat tijd neemt en dingen in kaart brengt aan het begin, je jezelf aan het einde een hoop bedrading kunt besparen. We beginnen dus met het ontwerpen van onze lay-out voordat we iets gaan solderen. Met dit soort bord moet je een heleboel verbindingsdraden doorknippen, wat niet zo eenvoudig is, maar het resultaat is een heel mooi compact bord met een minimum aan wirwar van draden. Het eerste wat we moeten doen is onze circuit zodat het op het bord past. Een leuke manier om dit te doen, is door de kaart van het bord te downloaden en deze vervolgens te gebruiken om met verschillende ontwerpen te spelen totdat je er een vindt die werkt. Hier is de lay-out voor de ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600-j.webp

Stap 2: Knip het circuit op het bord uit

Knip het circuit op het bord uit
Knip het circuit op het bord uit
Knip het circuit op het bord uit
Knip het circuit op het bord uit
Knip het circuit op het bord uit
Knip het circuit op het bord uit

Neem eerst een sharpie en teken met behulp van je lay-out die je in de vorige stap in kaart hebt gebracht, je circuit op het bord. D.w.z. teken lijnen om de draden weer te geven. Teken niets in termen van componenten, alleen de verbindingsdraden zoals weergegeven in de eerste afbeelding. Merk op dat wanneer je het verprutst (en als je zoiets als ik bent, je dingen in deze stappen vaak verknoeit), je een gum kunt gebruiken en de regel kunt wissen. Doe dit voor beide kanten van het bord.

Vervolgens moet u de verbindingen rond de lijnen doorknippen. Als je goed naar het bord kijkt, zie je dat elk gaatje is verbonden met de 4 aangrenzende gaten aan beide zijden van het bord, zodat alle gaten op het bord met elkaar verbonden zijn wanneer je begint. U moet dus langs beide zijden van elk van uw draden knippen om ze te isoleren. De meest gebruikelijke manier om dit te snijden is met een Exacto-mes. Maar ik ben slecht in Exacto-messen en zou mezelf waarschijnlijk snijden. Dus ik gebruik een Dremel met een dun snijhulpstuk. Ik wou dat ik een soort slijphulpstuk had dat op een scherpe punt kwam, omdat dat het beste zou werken - maar ik heb er geen, dus ik gebruikte het snijzaaghulpstuk. (Opmerking toegevoegd: na het voltooien van dit project ontdekte ik dat de kleinere "zware snijwiel" -koppen voor Dremels het beste werken, ze zien eruit als kleine cirkels schuurpapier en ze werken als het hier getoonde snijgereedschap, behalve dat ze een kleinere diameter hebben en dus het is veel gemakkelijker om te zien en te controleren waar u snijdt)

Onderweg is het handig om het bord tegen het licht te houden en ervoor te zorgen dat de draden ook echt worden doorgeknipt. Het kan zijn dat u zich ergert aan het feit dat er aan beide zijden van het bord verbindingen zijn, zodat u het snijproces opnieuw moet herhalen met de andere kant, maar ik denk dat u het nut hiervan zult inzien tegen de tijd dat u klaar bent. Ik heb veel fouten gemaakt bij het knippen van draden die niet doorgeknipt hadden mogen worden en de andere kant nog aangesloten blijkt toch wel fijn te zijn.

Het kost nogal wat tijd en geduld om het circuit in het bord te snijden, maar het is best leuk als je er eenmaal goed in bent.

Stap 3: Soldeer de componenten en test

Soldeer de componenten en test
Soldeer de componenten en test
Soldeer de componenten en test
Soldeer de componenten en test
Soldeer de componenten en test
Soldeer de componenten en test

Nu je alle draden in je printplaat hebt geïsoleerd, kun je beginnen met het solderen op de afzonderlijke componenten.

Ik heb eerst op de LED's voor een van de dobbelstenen gesoldeerd, daarna nam ik positieve en negatieve draden van mijn breadboard en testte de verbindingen voor elke LED om er zeker van te zijn dat ze van elkaar geïsoleerd zijn en dat ze werken.

Zo ook met de andere dobbelsteen.

Sluit vervolgens de weerstand aan op elke dobbelsteen en de 10K-weerstand op de achterkant van het bord.

Bevestig vervolgens de kristaloscillator, 22pf-doppen, drukknoppen en ATmega328P. Misschien wilt u een chip-socket solderen en vervolgens uw ATmega328P daarin plaatsen, zodat u deze kunt verwijderen als u wilt en deze opnieuw kunt gebruiken in iets anders. Ik heb zojuist mijn chip op het bord gesoldeerd, omdat ik weet wat we uiteindelijk gaan bouwen met al deze tutorials en ik weet dat ik het zo leuk zal vinden dat ik de chip er niet uit wil halen.

Let op, door naar de achterkant van het bord te kijken, hoe we de koppen hebben bevestigd. Ik gebruikte lange pin-headers en buig ze horizontaal zodat ze niet uit het bord steken. Dit is zodat ik het bord uiteindelijk kan bedekken tot het niveau van de drukknoppen en LED's met een container en geen headers in de weg zit. We hebben een header voor Tx, Rx zodat we de chip kunnen programmeren, we hebben een header voor SDA, SCL zodat we later 2-draads communicatie kunnen gebruiken. en we hebben een 3-pins header voor AVCC, AREF, GND aan de andere kant van het bord. Ik heb alle grondpinnen en VCC-pinnen met elkaar verbonden op de chip, dus we hebben maar één voedingsingang nodig.

Eindelijk, als alles is aangesloten, verbinden we die 1 met die2 zoals we deden op het breadboard, zodat we beide dobbelstenen kunnen besturen met slechts 9 pinnen.

Nu moeten we onze code aanpassen zodat deze deze nieuwe setup bestuurt.

Stap 4: Montagecode en video

Ik heb de montagecode en de video van de dobbelsteenrol in werking bijgevoegd. Het enige wat ik deed was de code voor onze dobbelsteenrol uit Tutorial 6 nemen, de pinnen aanpassen aan de nieuwe lay-out en de communicatie-subroutine verwijderen omdat we zullen schrijven een nieuwe in Tutorial 10. De volgende keer breken we ons toetsenbord weer uit en leren we hoe we 7-segments displays kunnen bedienen. Tot dan!

Aanbevolen: