AVR assembly

Tanfolyamok, oktatások és kapcsolódó házi feladatok...
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: AVR assembly

Hozzászólás Szerző: csabeszq »

Pin Change Interrupt függvénykönyvtár Arduinora.

A hardver 2 interruptot tud normálisan kezelni, az INT0-t és az INT1-et. Ezen tudsz felfutó / lefutó élérzékeny interruptot kezelni. A többi lábon csak a változást tudod észlelni, a felfutó / lefutó élet nem.

Külön megszakítást készíteni hardveresen mindenegyik gombra nem fogsz tudni, mert 3 megszakítás van: a PINB / PINC / PIND-re. A fent említett library a fel/lefutó éleket szoftverből kezeli. Gombnyomáshoz elég. Itt tudsz mind a 20 pinhez különböző megszakításkezelőt kapcsolni, de ez szoftverből hívódik meg, nem hardverből.

Kód: Egész kijelölése

#include <PinChangeInt.h>
#include <PinChangeIntConfig.h>

setup()
{
...
PCintPort::attachInterrupt(PIN, pin1change,RISING); 
...
}

void pin1change()
{
  // csinalj valamit
}

holex
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2013. október 29. kedd, 1:35

Re: AVR assembly

Hozzászólás Szerző: holex »

Akkor ezek szerint az Arduino ezen a téren kihasználja a hardver képességeit, mert pl. Assemblyben is csak szoftveresen tudnánk kezelni a többi láb megszakításait, hardveresen nem. Úgy tűnik én értettem félre valamit.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: AVR assembly

Hozzászólás Szerző: csabeszq »

Hardveres megszakítás van, de
- 3-féle megszakítás lehet: PINB, PINC, PIND, ezen belül a szoftver kezeli, hogy melyik pin csinált megszakítást
- a 3-féle megszakítás maszkolható: engedélyezhető, hogy melyik pinre váltódjon ki megszakítás
- kizárólag változást lehet vele érzékelni, fel/lefutó élt nem

A megszakítás hardveresen meghívódik, ezután a szoftver nézi meg, hogy melyik pin változott meg a B/C/D porton, ennek alapján dönt.
Nincs mind a 23 pinre különféle megszakítás.
Avatar
irak
Biztosítékgyilkos
Hozzászólások: 73
Csatlakozott: 2005. november 2. szerda, 7:00

Re: AVR assembly

Hozzászólás Szerző: irak »

"Az assembly, ha érdekel itt van (nem tudtam csatolni):"

Kösz a forrást, megváltozott a véleményem eléggé a gcc munkájával kapcsolatban.
A main-ra, meg a saját rutinokra azt mondom le a kalappal.
0 tesztelés and-al cpi helyett az mutatja hogy nem egy kaptafára dolgozik.
Igazából pár byte-ot lehetne faragni belőle ha gépi kódban írnám (lds/sts, a push/pop kihagyása).

De érdemes ránézni a digitalwrite/read-ra:D
Persze ez nem a C-t vagy a GCC-t minősíti, ez az arduino megoldása.
Én írnék rá makrókat inkább.

Am. más magra fordítottad valószínű, ami egyből szembeötlött hogy miért 100 byte az irq vektor tábla,amikor a mega8-nak csak 19 van.
No meg a bináris nálam 1054 byte lett.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: AVR assembly

Hozzászólás Szerző: Robert »

Az Ardiuno alapja a Wiring. Ez Mega128-ra készült és az Arduino is a Mega8-ból nőtt ki...


Az Arduino általános nyelvi megközelítést hatsnál: Mega8/168/325/32U4/1280/2560 chipekre is működik az I/O kezelés. Miközben a regszterek nevei összevissza változnak. És a felhazsnálónak _fogalma_ sincs arról, hogy mi az a port! Csak a lábat kell látnia D0...D53-ig.

A tanfolyamon az alap INT-ek használata _ami _ minden_ arduinon megy - és a alaprendszerben benne van - az a int0/int1 alapú. A PCINT-es az bizony a külső, járulékos könyvtárakban van benne , amit ráadásul külön kell letölteni!
Most magyarázni kellene hozzá a port fogalmat, a byte/bit megközelítést és a maszkolást, regiszterírást is.. És az Mega8 esetén nincs is. Hányan iratkoznának itt le?:)
"Egy kezdőt nem zavarunk össze olyan tananyaggal, ami csak később kerül sorra".
Olyan mintha a derékszögű háromszög területszámítását nem a T=(a*b)/2, hanem a mellékletben levő trigonometria bevezetésével adnám meg. Az is kell, csak később.
haromszogterulet.png
Forrás: http://hu.wikipedia.org/wiki/Trigonomet ... %C3%A9plet
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Válasz küldése