ATTiny2313A og Fil:ATTiny45.PNG: Forskellen mellem sider

Fra HTX Arduino
(Forskel mellem sider)
Spring til navigation Spring til søgning
ard_>Bar
(Oprettede siden med "ATTiny2313A er en microcontroller der nok ikke er så simpel at starte med, da den er relativ kompliceretmed mange indbyggede funktioner som er til at arbejde med. Det er en...")
 
No edit summary
 
Linje 1: Linje 1:
ATTiny2313A er en microcontroller der nok ikke er så simpel at starte med, da den er relativ kompliceretmed mange indbyggede funktioner som er til at arbejde med. Det er en 20 bens microcontroller, hvor de 17 ben kan bruges mere eller mindre som IO og et normalt kun anvendes som reset.


Som pinout antyder, så kan den meget mere:
[[Image:ATTiny2313A.PNG|left|ATTiny2313A Pinout]]
==Udviklingsboard==
Boardet er endnu ikke testet
{|
|-
|[[Image:ATTiny2313A-komp.png|left|ATTiny2313A Udviklingsboard]]<br />
''Layoutet for ATTiny2313A Udviklingsboard''
|valign="top"|En del af denne beskrivelse bygger på det viste [[udviklingsboard]], der er en del af en serie udviklet ved Holstebro HTX, for at gøre de forskellige Atmel-typer lettere tilgængelige.
Udviklingsboardet er lagt ud i [[:kategori:eagle|Eagle]] med schematic og board liggende i en [[Media:ATTiny2313A-board.zip|zip-fil]], der kan fremstilles som enkelt-sidet print, dog med enkelte lus.
Der er også dele i denne beskrivelse, der bygger på de generelle egenskaber der er for Microcontrollen, og der hvor beskrivelsen ikke slår til, må man fordybe sig i databladet for ATTiny2313A.
Databladet for PIC'en ligger i vores [http://htx-elev.ucholstebro.dk/?p=42 samling af datablade] som dækker de fleste aktve komponenter vi arbejder med.
|}
[[Image:ATTiny2313A-diag.png|ATTiny2313A Udviklingsboard|800px]]<br />
''Diagram over ATTiny2313A Udviklingsboard''
==Test af udviklingsboard==
For at kunne teste udviklingsboardet, så kan det være en fordel at smide noget test-kode i ATTinyen, og koble lidt hardware på, for at se om den rent faktisk fungerer.
Der er en [[Media:Blink_2313.zip|ZIP-fil]] med et kodeeksempel der løber gennem alle 17 udgange. Man kan teste ved at sætte 17 LED'er med tilhørende begrænsnings-modstande på udgangene.
I ZIP-filen ligger der batch-job til at Builde, brænde, erase og brænde fuses. De kræver at [[WinAVR]] er installeret.
==Fordeling af port-ben==
De tre porte er fordelt som følgende tabel viser:
===Port A - Stik SV1===
{| class="wikitable"
|-
!Ben!!Digital!!Analog!!Funktion
|-
|1||PA0||ADC0||Digital, CLK In, XTAL1 Interrupt 8
|-
|2||PA1||ADC1||Digital, XTAL2, Interrupt 9
|-
|3||PA2||ADC2||Reset - ikke forbundet ud til portstikket
|-
|4|| - ||ADC3||Not connected
|-
|5|| - ||ADC4||Not connected
|-
|6|| - ||ADC5||Not connected
|-
|7|| - || - ||Not connected
|-
|8|| - || - ||Not connected
|-
|9||+5V|| - ||+ 5V - Forsyning
|-
|10||GND|| - ||Stel - Forsyning
|}
===Port B - Stik SV2===
{| class="wikitable"
|-
!Ben!!Digital!!Analog!!Funktion
|-
|1||PB0|| - ||Digital, Analog comperator, Interrupt 0
|-
|2||PB1|| - ||Digital, Analog comperator, Interrupt 0
|-
|3||PB2|| - ||Digital, PWM, Interrupt 2
|-
|4||PB3|| - ||Digital, PWM, Interrupt 3
|-
|5||PB4|| - ||Digital, PWM, Interrupt 4
|-
|6||PB5|| - ||Digital, Prog. MOSI, I2C SDA, DI, Interrupt 5
|-
|7||PB6|| - ||Digital, Prog. MISO, DO, Interrupt 6
|-
|8||PB7|| - ||Digital, Prog. CLK, I2C SCL, SCK, Interrupt 7
|-
|9||+5V|| - ||+ 5V - Forsyning
|-
|10||GND|| - ||Stel - Forsyning
|}
===Port D - Stik SV3===
{| class="wikitable"
|-
!Ben!!Digital!!Analog!!Funktion
|-
|1||PD0|| - ||Digital, Serial RXD, Interrupt 11
|-
|2||PD1|| - ||Digital, Serial TXD, Interrupt 12
|-
|3||PD2|| - ||Digital, INT0, CLK Out, Interrupt 13
|-
|4||PD3|| - ||Digital, INT1, Interrupt 14
|-
|5||PD4|| - ||Digital, Timer input, Interrupt 15
|-
|6||PD5|| - ||Digital, Timer input, PWM, Interrupt 16
|-
|7||PD6|| - ||Digital, ICPI, Interrupt 17
|-
|8|| - || - ||Not connected
|-
|9||+5V|| - ||+ 5V - Forsyning
|-
|10||GND|| - ||Stel - Forsyning
|}
==Digitale I/O ben==
Port A har 3 digitale ben, der er betegnet PA0 til PA2, hvor de to kan være både input og output, PA0 og PA1 kan dog også anvendes til et eksternt krystal. PA2 vil normalt bare anvendes til reset og programmering - den kan kobles til andet, men det kræver så at man anvender 12,5V programmering, som vi ikke har adgang til umiddelbart. Port B har 8 digitale ben, der er betegnet PB0 til PB7, der alle kan være både input og output. Port D har 7 digitale ben, hvor PD0 og PD1 kan anvendes til en seriel port.
==Comperatorer==
Der er to comperatorer indbygget, der kan sættes til at sammenligne 2 analoge spændinger.
I øvrigt skal man her lige være opmærksom på, at den analoge inputspænding skal være mellem VSS
og VDD. Årsagen er – som man kan se på nedenstående figur fra databladet – at inputtet er adskilt
fra forsyning og stel med dioder. Så der vil kunne løbe strøm gennem dioderne, hvis spændingen
ikke var derimellem.
==Reset og Programmeringsspænding==
Ben 1 (PA2) har to specielle funktioner.
Den ene er angivet ved VPP, der betyder at der skal kredsen have en speciel programmeringsspænding, når man skal brænde et nyt program ind i den. Denne form for programmering anvender vi ikke.
Den anden er at man kan resette kredsen ved hjælp af et eksternt signal, så koden starter forfra. Denne funktion har vi normalt slået til, så vi ikke kan bruge dette ben til andet.
==Programmerings-ben==
USCK, MISO og MOSI (PB5-PB7) er de tre ben der modtager koden når microcontrolleren skal have brændt ny kode ind.
==Indbyggede countere/timere==
Der er to indbyggede countere, der kan sættes op enten som counter fra PD4 og PD5, eller fra en fast frekvens, så de kan virke som timere - begge dele kan tilkobles [[interrupt]]. Den sidste kan kun virke som timer.
Timer 0 / counter 0 er 8 bits, så den kan kun tælle til 255.
Timer 1 / counter 1 er 16 bits, så den kan tælle til 65535.
==Hardware interrupt==
Der er forskellige ben der kan sættes til [[Interrupt]], så programmet kan reagere meget hurtigt, selvom koden er i gang med noget andet. Det kan være både på forkant, bagkant eller skift af niveau der interruptes.
==Puls-bredde output==
En lidt speciel måde at angive et analogt output på er ved at sætte et outputben højt i en %-del af tiden og lavt i resten af tiden, så hvis det f.x. er højt i 40% af tiden, så vil det give 2V ud gennemsnitligt.
4 forskellige ben har denne funktion indbygget, det er PB2 - PB4 og PD5.
Pulse width modulation er en måde at simulere
en spænding, ved et digitalt output. Det fungerer
sådan, at selvom outputtet enten 0V eller 5V,
så kan man ved at lave kortere eller længere
impulser af det høje output, lave noget der
praktisk fungere som en spænding imellem 0V og
5V. Typisk kan PWM have en værdi/spænding mellem
0 og 255, hvilket svarer til 8bit, men der kan lægges større opløsning i signalet. Jo
hurtigere impulserne kommer efter hinanden, jo mere ”flydende”
vil spænding blive. Så hvis det er en
microcontroller med hurtig frekvens af instruktioner, så vil
spændingen opleves mere jævn. Man kan med en
kondensator el. Jævne ekstra ud, selvom det i
de fleste tilfælde ikke er nødvendigt. En pære
eller diode, vil ihvertfald opleves, som lysende jævnt,
ved brug af [[PWM]].
==EEPROM==
I PIC'en er der en [[EEPROM]], det står for en Electrically Erasable Programmable Read Only Memory, altså en hukommelse der normalt kun kan læses, men som er programmerbar og som kan slettes elektrisk.
Det er samme princip som flash-hukommelse, og har den gode egenskab, at indholdet huskes også efter en strømafbrydelse, modsat [[RAM]], hvor indholdet forsvinder, hvis strømmen har været væk.
Der er 128 bytes EEPROM i denne PIC.
==Oscillator==
Som vi normalt kobler Atmels microcontrollere op, så arbejder de med 8 MHz, der deles ned, så en maskininstruktion tager 4 svingninger, altså 2us '''IKKE verificeret'''. På XTAL1 og XTAL2 (PA0 og PA1) er det muligt at koble en resonator eller et krystal på, som enten kan få den til at arbejde hurtigere (op til 20 MHz), hvis kodetiden betyder noget, eller man kan få den til at arbejde langsommere, hvis man vil spare på strømmen.
På dette udviklingsboard er der gjort plads til en resonator, hvis man ønsker at arbejde med f.x. 20 MHz. Det anbefales så at fjerne Port A stikket, da der ikke er yderligere funktioner i dette stik.
==Strømforsyning==
Printet kan få strøm fra to forskellige kilder.
Det kan altså enten være Arduino-brænderen der forsyner
printet med 5.0V (standard for USB). Den anden
mulighed er via en ekstern strømforsynings und gennem portstikket, hvor man kan forsyne med 2,7V - 5,5V. Man kan endda arbejde ned til 1,8V, men så kan man kun arbejde med op til 4 MHz clock-frekvens.
[[Kategori:Atmel-type]]

Nuværende version fra 20. okt. 2022, 05:25