AVR kezdőnek
SQR -> (négyzet)gyök
POWER -> hatvány
"Max azt tudom elképzelni, hogy lekérdezem a pillanatnyi állapotot és abban csak a nekem szükséges láb értékét módosítom és írom vissza. De ha lenne egyszerűbb hivatkozás egyetlen lábra...."
Így megy Bascomban is:
1, láb állapot beolvasása
2, adott bit megváltoztatása
3, érték kiírása
Csak a Bascom ezt a folyamatot eldugja előled.
POWER -> hatvány
"Max azt tudom elképzelni, hogy lekérdezem a pillanatnyi állapotot és abban csak a nekem szükséges láb értékét módosítom és írom vissza. De ha lenne egyszerűbb hivatkozás egyetlen lábra...."
Így megy Bascomban is:
1, láb állapot beolvasása
2, adott bit megváltoztatása
3, érték kiírása
Csak a Bascom ezt a folyamatot eldugja előled.
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
-
Sziasztok! Hogyan lehet azt megoldani, hogy egy folyamat addig tartson, míg egy gombot nyomok? (Folyamatosan tartom) Aztán egy másik folyamat kezdődjön ha elengedem. (PWM szabályozás a célom) Autó belsőtér világítás halványitása. (jó gyakszi)
(közben keresgéltem)
Itt tartok:
Valami nem stimmel mert az M2-ben marad ha kap egy megszakítást.
(közben keresgéltem)
Itt tartok:
Kód: Egész kijelölése
$regfile = "attiny45.dat"
$crystal = 8000000
Dim Feny As Byte
Dim A As Bit
A = 1
Config Portb.1 = Output 'pwm
On Int0 Valaszt
Config Int0 = Falling
Config Debounce = 50
Enable Interrupts
Enable Int0
Config Timer0 = Pwm , Prescale = 64 , Compare B Pwm = Clear Up
Enable Timer0
Pwm0b = Feny
Main:
Do
' ciklus
Select Case A
Case 1 : Goto M1
Case 2 : Goto M2
Case Else Goto Main
End Select
Loop
Valaszt:
Toggle A
Return
M1:
Disable Int0
Config Int0 = Falling
For Feny = 0 To 255 Step 3
Waitms 20
Pwm0b = Feny
Next Feny
Goto Main
M2:
Disable Int0
Config Int0 = Rising
For Feny = 255 To 1 Step -3
Waitms 20
Pwm0b = Feny
Next Feny
Goto Main
End
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
-
De szerintem lekezeltem:
Ez nem az?
Kód: Egész kijelölése
On Int0 Valaszt
Config Int0 = Falling
Config Debounce = 50
Enable Interrupts
Enable Int0
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
-
Uh ez jogos! Köszi. Öreg hiba. Holnap kipróba.
És észrevettem még valamit. A Case változójának bit értéket használok, ami ugye 0 vagy 1. Viszont Case 1 és Case 2 eseteim vannak. Eszerint a Case kettő nem is teljesülhet? Case 0-at elfogad a bascom?
És észrevettem még valamit. A Case változójának bit értéket használok, ami ugye 0 vagy 1. Viszont Case 1 és Case 2 eseteim vannak. Eszerint a Case kettő nem is teljesülhet? Case 0-at elfogad a bascom?
Szerintem ebben az alkalmazásban teljesen felesleges az INT használata!
Ha már letiltod a rutinokban az INT-eket (255/3)*20=1700ms-re! Vagyis nem kel a gyors reagálás, sőt még gondot is okoz!
Célszerűbb lenne csak Rutin végén, vagy Do-Loop elején vizsgálni a gomb állapotát és összehasonlítani az előzővel.
Történt e változás? A szerint folytatni az elágazást.
Ha már letiltod a rutinokban az INT-eket (255/3)*20=1700ms-re! Vagyis nem kel a gyors reagálás, sőt még gondot is okoz!
Célszerűbb lenne csak Rutin végén, vagy Do-Loop elején vizsgálni a gomb állapotát és összehasonlítani az előzővel.
Történt e változás? A szerint folytatni az elágazást.
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Így már próbáltad:De ha már itt tartunk annyit kérdeznék, hogyan tudom a portbővítő lábait is egyenként ki-be kapcsolni, hasonlóan mint a kontroller lábait? erre még nem találtam példát. Max azt tudom elképzelni, hogy lekérdezem a pillanatnyi állapotot és abban csak a nekem szükséges láb értékét módosítom és írom vissza. De ha lenne egyszerűbb hivatkozás egyetlen lábra....
Itt a portérték 0-255 között van.I2cstart
I2cwbyte Pcf8574write
I2cwbyte Portertek '*** Érték átadása portbővítőnek
I2cstop
Próbáld így!
X=0-7Portertek.X=Y
I2cstart
I2cwbyte Pcf8574write
I2cwbyte Portertek
I2cstop
Y=0,1
Én így szoktam...
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
Üdv re. Egy olyan kérdésem lenne hogy: Attiny45-öt programozok. Ennek ugye 1 db Timer-je van. Én ezt a Timert-t használom PWM-re a programomban. Viszont nekem jó lenne ez a timer mert PWM közben időt is szeretnék mérni. Megszakítást akarok generálni bizonyos idő elteltével. Kérdésem: Lehetséges ez? Egy programban Configolhatom a Timer-t PWM-ként és TIMER-ként is? Köszi
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
Amikor ezt a választ kaptam azt hiszem már tovább léptem és mással kezdtem el foglalkozni, ismerkedni és nem is elemeztem ki pontosan.Robert írta:SQR -> (négyzet)gyök
POWER -> hatvány
"Max azt tudom elképzelni, hogy lekérdezem a pillanatnyi állapotot és abban csak a nekem szükséges láb értékét módosítom és írom vissza. De ha lenne egyszerűbb hivatkozás egyetlen lábra...."
Így megy Bascomban is:
1, láb állapot beolvasása
2, adott bit megváltoztatása
3, érték kiírása
Csak a Bascom ezt a folyamatot eldugja előled.
Tehát a válaszod a múltkori kérdésemre az, hogy a portbővítő lábait véletlenszerűen, egyenként ki és bekapcsolgatni csak úgy nem lehet igaz?
Tehát pl. egy:
Set Ppport.6
I2cwbyte Ppport.6
utasításpárral sosem fogom azt elérni, hogy az adott bővítő többi lába maradjon az előtte való állapotban és csak a 6. lábat kapcsoljam be? Ehhez mindenképp előtte ki kell olvasni az állapotot, és az adott számú lábnak megfelelő bit átváltása és így visszaküldés a bővítőnek? Csak ez lehetséges? Nem tűnik túl rugalmasnak a dolog A kontroller lábait szépen lehet egyenként kapcsolgatni. Ez lenne jó a bővítőnél is.
Stimmel. A kimeneti port állapotát ha változóban tárolod, nem egyszerűbb?
A=&B001000
I2Cstart
I2cWrite cím
I2cwrite A
i2cstop
A=a or &B00000010
I2Cstart
I2cWrite cím
I2cwrite A
i2cstop
Ötlet:
1, &bxxxxxxxx OR &B00001000 'ahol 1 van az bekapcsol, a többi változatlan marad
1, &bxxxxxxxx AND &B11110111 'ahol 0 van az kikapcsol, a többi változatlan marad
Nos, ez nem jó?
Vagy mondjuk kirakod egy sub-ba és ott eldugod a kiírást....
A HW és a SW NEM kívánságaid szerint készül:)
Most az a 10 byte ennyit számít?
[cinizmus on]
Vagy tegyél be 100lábú IC-t. azon 84 láb szabadon I/O lehet:)
[cinizmus off]
A=&B001000
I2Cstart
I2cWrite cím
I2cwrite A
i2cstop
A=a or &B00000010
I2Cstart
I2cWrite cím
I2cwrite A
i2cstop
Ötlet:
1, &bxxxxxxxx OR &B00001000 'ahol 1 van az bekapcsol, a többi változatlan marad
1, &bxxxxxxxx AND &B11110111 'ahol 0 van az kikapcsol, a többi változatlan marad
Nos, ez nem jó?
Vagy mondjuk kirakod egy sub-ba és ott eldugod a kiírást....
A HW és a SW NEM kívánságaid szerint készül:)
Most az a 10 byte ennyit számít?
[cinizmus on]
Vagy tegyél be 100lábú IC-t. azon 84 láb szabadon I/O lehet:)
[cinizmus off]