pcint megszakitás

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10064
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2011. február 5. szombat, 22:14

Az ATTIny2313-ban került bevezetésre a PCInt. Ennek örömére nem az összes láb ismeri ezt, hanem csak egyetlen porton érhető ez el. a PCINT ezért nincs számozva. Az Mx8 családban már minden lábra került belőle...

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2011. február 6. vasárnap, 11:59

Nem tudhatom, mert nekem még nem volt a kezemben ATtiny2313.
De az adatlap szerint PB Port minden lábára engedélyezhető lenne!
Erre most akkor kíváncsi lennék! Akinek van ilyen az kipróbálhatná és közölhetné az eredményt!
Itt a teszt progi:

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

$regfile = "attiny2313.dat"
$crystal = 8000000
'$sim

Config Portd.0 = Output
Config Portb = Input
Portb = &B11111111                                          'activate pull up

Enable Interrupts                                           'enable global ints
Enable Pcint                                                'we enable pcint0
On Pcint Isr_pcint                                          'we jump to this label
'Engedélyezzük mind a 8 PCINT-et
Pcmsk = &B11111111                                          'enable pcint7-0 (portb.7-0)

Dim Old_pcint As Byte , New_pcint As Byte
Dim Num As Integer
Old_pcint = 0
New_pcint = Old_pcint
Num = 0
'Lehet Nyomkodni a PortB lábaira a jeleket
Do
'Ha változott az érték ki irja
   If Old_pcint <> New_pcint Then
      Num = Num + 1
      Print Num ; ": Old: " ; Bin(Old_pcint) ; "  New: " ; Bin(New_pcint)
      Old_pcint = New_pcint                                    'Tárolja a régit
   End If
Loop

End

Isr_pcint:
   
   New_pcint = Pinb                                        'Beolvassa az ujat
   Toggle Portd.0                                           'Led villog
Return

8)

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2012. július 18. szerda, 21:42

Ez így müxik .
PortB minden lábán jó.
Kefeur

Avatar
daniel926
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2011. december 7. szerda, 7:00
Tartózkodási hely: Perkáta

Re: pcint megszakitás

HozzászólásSzerző: daniel926 » 2013. február 10. vasárnap, 17:03

Utána olvastam a leírásoknak, de még mindig nem akar sikerülni teljes mértékben a PCINT megszakítás.Azt szeretném elérni hogy gomb nyomásra aludjon el a zöld led és villanjon fel teljes fényerővel a piros led ehelyett haa megnyomom a gombot a zöld led továbbra is villog a piros led pedig nagyon halványan épphogy megvillan. Mi lehet amit elnéztem?

Nem engedi elküldeni a hozzászólást ha a kódot bemásolom.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10064
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: pcint megszakitás

HozzászólásSzerző: Robert » 2013. február 10. vasárnap, 17:17

A kódot file-ként csatold... pl. txt-ként...

Avatar
daniel926
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2011. december 7. szerda, 7:00
Tartózkodási hely: Perkáta

Re: pcint megszakitás

HozzászólásSzerző: daniel926 » 2013. február 10. vasárnap, 17:25

A kód az előző hozzászólásomhoz.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10064
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: pcint megszakitás

HozzászólásSzerző: Robert » 2013. február 10. vasárnap, 19:23

INTben SOHA nincs waitms! Pláne nem ilyen hosszú!

Minthogy _nyomógombod_ van, így a prellt kellene először is lekezelni/megfogni...INT alatt beeső prell előjegyzi a következőt....Azaz kilépéskor még 1x végrehajtódik...

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: pcint megszakitás

HozzászólásSzerző: kapu48 » 2013. február 10. vasárnap, 20:44

És kellene némi verem területet is lefoglalni!
Pl.:

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

$hwstack = 32
$swstack = 32
$framesize = 32

Avatar
daniel926
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2011. december 7. szerda, 7:00
Tartózkodási hely: Perkáta

Re: pcint megszakitás

HozzászólásSzerző: daniel926 » 2013. február 10. vasárnap, 20:49

Az alábbi http://avr.tavir.hu/images/contents/interrupt-debounce-self.bas prellre vonatkozó mintaprogramban szintén van waitms mely ugyanúgy 75 ms-os.
Prell kezelésére kellene nekem szájbarágósan egyszerű mintaprogram ledes visszajelzéssel. Hiába próbálok debounce, debouncetime meg hasonlókat az eredmény ugyan az.

kapu48:

Mért van szükség a veremterület lefoglalására? És melyik mit takar?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10064
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: pcint megszakitás

HozzászólásSzerző: Robert » 2013. február 10. vasárnap, 20:56

A hivatkozott mintaprogram környékén ott a figyelmeztetés: MINTA! Soha nem használj INT késleltetést.
VEREM: a Hibakeresés/biztosítékbitek fejezetben...


NEM debounce/debouncetime.
SAJÁT megvalóstást hozz össze.... Volt már (itt is) jópár minta:
- gombnézés - vár - gombnézés. ha azonos a 2 állapot: gomb volt (ez csak főprogramban)
- timer alapon ellenőrzöd...

Avatar
daniel926
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2011. december 7. szerda, 7:00
Tartózkodási hely: Perkáta

Re: pcint megszakitás

HozzászólásSzerző: daniel926 » 2013. február 16. szombat, 15:21

Probléma továbbra is fennáll.
Hogyan oldható meg a gomb figyelése?
Érthető működő mintaprogrammal rendelkezik valaki?
Segítséget előre is köszi.

Avatar
daniel926
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2011. december 7. szerda, 7:00
Tartózkodási hely: Perkáta

Re: pcint megszakitás

HozzászólásSzerző: daniel926 » 2013. február 28. csütörtök, 16:38

Robert írta:- gombnézés - vár - gombnézés. ha azonos a 2 állapot: gomb volt (ez csak főprogramban)
- timer alapon ellenőrzöd...


Ezeket mind a mai napig nem értem hogyan lehetne megvalósítani. Ki lehetne fejteni bővebben?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: pcint megszakitás

HozzászólásSzerző: kapu48 » 2013. február 28. csütörtök, 18:52

Az elképzelés lényege, hogy az emberi reakció idő jóval lassabb, mint a gomb okozta prelezés.

Tehát figyeled két megszakítás között eltelt időt.
És ha túlzottan rövid, azt Prelnek veszed. És csak 1* hajtod végre amit szeretnél.

Vagyis elengeded a feleslegesnek vélt megszakításokat.

Erre lehet többféle megvalósítást is írni.

Vagy az első megszakítás után kivárod, hogy elmúljon a gombod okozta felesleges megszakítás ideje.
Ezzel az a baj, hogy közben áll az egész program és nem tud gyorsan reagálni, ha közben más esemény is történik.
8)

Avatar
daniel926
Biztosítékgyilkos
Hozzászólások: 65
Csatlakozott: 2011. december 7. szerda, 7:00
Tartózkodási hely: Perkáta

Re: pcint megszakitás

HozzászólásSzerző: daniel926 » 2013. február 28. csütörtök, 20:42

Próbáltam hogy megszakításban várakozzon egy keveset de ez ugye nem jött össze meg nem is szabad.
A metódust magát értem de leprogramozni, megvalósítani már nem tudom.Ha ugye If szerkezetet használunk az szintén lassú, így kiesik mint lehetséges megoldás.
Köszi a választ.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: pcint megszakitás

HozzászólásSzerző: kapu48 » 2013. február 28. csütörtök, 23:27

Azért ne essünk túlzásba!
1 - 2 if művelet nem tart ms-ekig.


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég