Mijn reactie op de WS2811 met een ding van AVR (3 / 5 stap)

Stap 3: Bit-Banging en opslaan van een paar meer klokcycli


OK. Beetje bonzen.

800khz op een 16Mhz AVR is 20 klokcycli.

20 klokcycli op een AVR zit alot.  Het gaat niet over PIC12 / 16C hier met 4 teken per instructie en slechts één echte register.  De AVR veel per klok cyclus.  Als er niet sprake was van de verplichting tot shuffle de RGB-volgorde kon dan de AVR doen deze seriële zonder een zweet te breken.

In feite is het enige wat dat de AVR doet niet schijnen op bits I/O registers wijzigen.  Dit neemt twee klokcycli zoals wordt weergegeven in de details voor de SBI instructie hieronder.  De CPU heeft het register lezen, wijzigen en schrijven het terug.  Het is een paar niet-vertakking instructies in de AVR te nemen twee klokken. (Opmerking: de AVR XMega heeft dit probleem opgelost en nu is slechts 1 klok)

Met behulp van deze instructie in time kritieke paden is niet leuk als Alanen code toonde.  Hij moest springen en hop helemaal over de plaats om het gelijk van de lengtes van het pad.

sbrc r19, 7; test beetje Hallo duidelijk
rjmp 3f                       ; True, overslaan pin hi-lo >
CBI % [poort], % [pin]; valse, pin hi -> lo
3: sbrc r19, 7; vertraging van beide codepaden gelijk
rjmp 4f
4:  nop                             ; Pulse timing vertraging

Dus als de werkelijke CBI en SBI instructies willen nemen 2 klokcycli hoe dan ook, maar dan heb je te verliezen 2 klokcycli om gelijk de lengtes van het pad, waarom niet gewoon de Lees wijzigen schrijven zelf.  Dit duurt 3 cycli totale.

IN R16, PortX; De huidige status van het register lezen
ORI R16, PinX; De hoge x-bit ingesteld
UIT PortX, R16; Schrijven van de nieuwe waarde uit het register

Het volgende ding dat u doen kunt om tijd te besparen is alles buiten de lus kunt verplaatsen.  Omdat deze code 100% van de CPU-tijd gebruikt is, er is geen risico op iets anders gaat veranderen PortX.  Ook omdat er geen andere code wordt uitgevoerd, kunnen we zoveel CPU-registers als we willen gebruiken.

Doe deze IN-ing en AND/OR-ing manier buiten de lus.

IN PinLo, PortX; Maak een kopie van de byte in PortX
ANDI PinLo, 0xFE; Wijzigen om de waarde te schrijven om pin lo
IN PinHi, PortX; Maak een kopie van de byte in PortX
ORI PinHi, 0x01; Wijzigen om de waarde te schrijven om pin hi

Lus:
bla
bla
uit PortX, PinLo; De pincode van de uitgang laag instellen
bla
bla
rjmp Loop:

Dit heeft nu de hele beetje gelijkwaardige, seriële verschuiving, beetje tellen en nemen slechts 9 klokken in een lus gemaakt.  Dit laat 11 klokken gratis voor het laden van gegevens en schuifelen.

Dit zou weer afvalbergen van de tijd, zo niet voor het buiten de orde RGB-ding.  Wegens het buiten de orde RGB ding kunnen we niet gewoon elke byte lezen als de volgende dia gaan behandelen.  We moeten een beslissing nemen over waar op te slaan van het nieuw Lees byte naar een buffer en waar vandaan een buffer te krijgen de volgende byte te sturen.

Dit is waar de IJMP-instructie komt aan de redding.  De pagina van de AVR-instructie set is hierboven weergegeven.  We gebruiken het als een instructie van de zaak/switch in een software-toestandsmachine.  Wij annuleerteken troep wat de volgende staat moet zonder te doen van eventuele evaluaties te maken in elke staat.

We kunnen dit doen omdat we altijd weten welke kleur de volgende byte is gonna be

Als de rode byte worden momenteel verwerkt zullen de volgende byte groen
Als de groene byte worden momenteel verwerkt zullen de volgende byte blauw
Als de BLUE byte worden momenteel verwerkt zal de volgende byte rood worden

bv. In de rode Braziliaanse kunnen we gewoon zeggen

STAAT = GROEN

We hoeven niet te zeggen

Als (iets) dan staat = groene anders staat = blauw

Dit bespaart een paar klokken hoeven te evalueren om het even wat.

De hele code wordt weergegeven als een afbeelding hier.  Opnieuw Stuur me een PM als je wilt dat ik per e-mail naar u.

De opmerkingen in de code zijn hopelijk genoeg zelfs laat iemand niet vertrouwd zijn met AVR-ASM begrijpen.

Gerelateerde Artikelen

Canvas kunst aan de muur (met een Twist van Geek)

Canvas kunst aan de muur (met een Twist van Geek)

Een gemakzuchtige oplossing te halen aangepaste canvas kunst aan de muur, met een twist van geek! (yay fanart!)Ik hou krijgen geïnspireerd en ontketenen mijn geeky kant wanneer mogelijk en zetten deze beelden op het doek was een leuke en elegante man
ZWARTE INKTVIS inkt LINGUINE GEGARNEERD met een MEDLEY van ZEEVRUCHTEN

ZWARTE INKTVIS inkt LINGUINE GEGARNEERD met een MEDLEY van ZEEVRUCHTEN

Sommigen van mijn volgelingen kunnen herinneren dat ik heb gepost een recept met de zwarte inktvis inkt Linguine terug in November, 2015. Aangezien ik had nog over een helft-pond van deze vrij unieke pasta in mijn kast, heb ik besloten om te zien wat
Kip geserveerd met een saus van het kaneel, cranberry, poort geserveerd met oven geroosterde pastinaak, rode ui & zoete aardappel frietjes

Kip geserveerd met een saus van het kaneel, cranberry, poort geserveerd met oven geroosterde pastinaak, rode ui & zoete aardappel frietjes

Gisteravond, ik uitgevonden dit feestelijke kip met een zelfgemaakte cranberry-oranje-port saus met een vleugje kaneel! Ik diende het met een mooie oven geroosterde bijgerecht: oven geroosterde pastinaak, rode uien & zoete aardappel partjes! Dit is e
Spek kommen met een vulling van ricotta en datum

Spek kommen met een vulling van ricotta en datum

ik wilde maken van ricotta gevulde datums verpakt in spek maar ik kon geen hele datums in de supermarkt, dus ik kwam met dit alternatief.  Ik denk dat ik misschien zelfs als het meer dan het origineel!  Ze zijn schattig en heerlijk!Stap 1: ingrediënt
Taai honing Peanut Butter Cookies met een korst van Graham Cracker

Taai honing Peanut Butter Cookies met een korst van Graham Cracker

Taai honing Peanut Butter Cookies met een korst van Graham CrackerEerst en vooral, ik hou van te bakken; een van de geneugten van bakken is maken en wijzigen van recepten om ze een handtekening behandelen met uw familie, vrienden en zelfs buren smeek
Vlees gevulde Hand taarten met een korst van wodka

Vlees gevulde Hand taarten met een korst van wodka

Deze vleespasteien zijn zo goed! Warm uit de oven, met een vlezige, saucy vulling, in een schilferige, gouden korst, of direct uit de koelkast voor een snelle snack of een lunch, ze zijn lekker beide manieren!Ik maak ze vegetarisch met soja grond ron
Go-Go Gadget Ikea WC-Rolhouder MOD met een twist van SUGRU

Go-Go Gadget Ikea WC-Rolhouder MOD met een twist van SUGRU

Stap 1: Benodigdheden en hulpmiddelen Supplies1 x Ikea FRACK uittrekbare spiegel1 x dikke Fender ring, ongeveer 1/8" dik met een 2" 3" diameter.  De mijne was 2 1/4"1 x koppeling moer - grootte is 6.5mm.  Dat is 1/4" zal werken in
Klok van de muur met walnoot, met een plons van geek

Klok van de muur met walnoot, met een plons van geek

dit is een gedraaide walnoot Wandklok met een inzet-CD.Voor dit project zal u sommige materialen nodig:Een leeg dat maatregelen, 10" square door 3/4 dik. (Dit kan zeer afhankelijk van hoe denk een buitenste ring gewenste)Een CD (ik magnetron mijne ge
PVC boog met een handvat van Paracord

PVC boog met een handvat van Paracord

Gewoon een boog van pvc met een handvat van paracordStap 1: Details Just een PVC boog met een paracord handvat. Enkel verpakt de paracord rond maakte vervolgens twee hoofden van de Turken.Stap 2: Meer ParacordNeem een kijkje op mijn winkel op itspara
Chili Bean updatepakket met een sausje van de Ranch Kickin '

Chili Bean updatepakket met een sausje van de Ranch Kickin '

probeert om gezond te blijven in het licht van mij zijn geweest trying veggie hamburgers in een meer creatieve manier gebruiken! Proberen te houden van mijn smaakpapillen tevreden.Wat die u nodig hebtChili Bean Veggie Hamburger (slechts 90 calorieën!
Servo Motor Sweep modus Interfacing met een bestuur van Mediatek Linkit

Servo Motor Sweep modus Interfacing met een bestuur van Mediatek Linkit

Een servomotor is een roterende actuator of Lineaire servomotor die voor nauwkeurige controle van hoekige of lineaire positie, snelheid en versnelling zorgt. [1] het bestaat uit een geschikte motor gekoppeld aan een sensor voor positie feedback. Het
Gemakkelijk truc uit een RC auto met een ding!

Gemakkelijk truc uit een RC auto met een ding!

Hallo jongens! Ik ga u tonen hoe om truc uit uw RC auto. Het enige wat u nodig hebt: gloed verf! De beste vorm is een dimensionale textielverf gevonden op Michaels of een andere kunst te slaan, maar echt een gloed in de donkere verf werken. Beurs waa
Ontwerp voor mijn rugzak munitie voor gebruik met een Nerf Vulcan

Ontwerp voor mijn rugzak munitie voor gebruik met een Nerf Vulcan

Ok dus allereerst wil ik zeggen dat dit nog in het theoretische stadium en ik dit bijwerken zal als ik nuttige informatie krijgen. Ik heb niet eens een prototype nog begonnen. Wat volgt zijn mijn notities tot op dit punt, als om het even wie heeft id
3D vliegen met een vliegtuig van model

3D vliegen met een vliegtuig van model

Andy Ellison van RCM & E Magazine is uw gids.3D vliegende heeft een lange weg afgelegd sinds Paul Heckles nam zijn WOT4 aan de grens met talloze '3D' machines nu beschikbaar. Vele jaren geleden ik was winkelen voor bits in Steve Webb modellen van Fro