AVR kezdőnek
Re: AVR kezdőnek
Szia Laci!
Köszönöm!
Nagy nehezen este/éjszaka rájöttem hogy nem a PORTA lábakra kell kötni a potit... ez egy elég szivatós dolog volt az Atmega128-tól de már ezt is tudom
Köszönöm!
Nagy nehezen este/éjszaka rájöttem hogy nem a PORTA lábakra kell kötni a potit... ez egy elég szivatós dolog volt az Atmega128-tól de már ezt is tudom
Re: AVR kezdőnek
Szívesen!Marvinn írta:Szia Laci!
Köszönöm!
Nagy nehezen este/éjszaka rájöttem hogy nem a PORTA lábakra kell kötni a potit... ez egy elég szivatós dolog volt az Atmega128-tól de már ezt is tudom
(ezért nem szabad reflexből/megszokásból(és fáradtan) dolgozni - minidg ki kell nyitani az adatlapot)
Re: AVR kezdőnek
Sziasztok!
Van valakinek DHT22 programja Bascomhoz? Olyan lenne jó, ami nem használ Timert. Timerest találtam, működik, de más célokra kell a Timer.
Van valakinek DHT22 programja Bascomhoz? Olyan lenne jó, ami nem használ Timert. Timerest találtam, működik, de más célokra kell a Timer.
Re: AVR kezdőnek
Timer helyett tegyél be waitus sorokat. Igaz ehhez kötött az AVR órajele. De ezt ha univerzális a kódod, akkor a _crystal változó visszaadja.
Re: AVR kezdőnek
Sziasztok!
Adott egy 3x4-es keypad ---> PCF8574, ebből most 8 db gombbról van szó
van hozzá 8db led ---> PCF8574
Megszakítással kiolvasom a megnyomott gombot. A gomb mellett lévő ledet fel és le akarom kapcsolgatni.
Az működése az lenne a dolognak, hogy a 8 db kapcsolóval random sorrendben fel és le lehetne kapcsolgatni a ledeket úgy, hogy a többi állapotjelző változatlanul maradjon. Most úgy működik, hogy ha "P" gombot megnyomom akkor:
A kérdésem az lenne, hogy hogyan tudom megcsinálni azt, hogy a többi lábon lógó led állapotát ne bántsam, azaz változatlanul hagyjam? Lehet írni csak egy bitet is a többi változatlanul hagyásával?
Adott egy 3x4-es keypad ---> PCF8574, ebből most 8 db gombbról van szó
van hozzá 8db led ---> PCF8574
Megszakítással kiolvasom a megnyomott gombot. A gomb mellett lévő ledet fel és le akarom kapcsolgatni.
Az működése az lenne a dolognak, hogy a 8 db kapcsolóval random sorrendben fel és le lehetne kapcsolgatni a ledeket úgy, hogy a többi állapotjelző változatlanul maradjon. Most úgy működik, hogy ha "P" gombot megnyomom akkor:
Kód: Egész kijelölése
'P_allapot ~ P gomb jelzőbitje
'Zold_led címén lévő portbővítő 4. bitje a P gomb állapotjelző led-e
Select Case P_allapot
Case 0 :
I2cstart
I2cwbyte Zold_led
I2cwbyte &B00010000
I2cstop
P_allapot = 1
Case 1 :
I2cstart
I2cwbyte Zold_led
I2cwbyte &B00000000
I2cstop
P_allapot = 0
End Select
Re: AVR kezdőnek
Utoljára kiírt állapotot eltárolod.
Ebben módisítod a megfelelő bitet.
Újra kiírod a portra.
Nem módosítható közvetlenül 1 bit.
Ebben módisítod a megfelelő bitet.
Újra kiírod a portra.
Nem módosítható közvetlenül 1 bit.
Re: AVR kezdőnek
Sziasztok!
Próbálta már valaki a PCA9534-es 400kHz-es portbővítőt használni?
http://www.nxp.com/documents/data_sheet/PCA9534.pdf
Összedugtam, de nem ír, nem olvas a chiből..
Próbálta már valaki a PCA9534-es 400kHz-es portbővítőt használni?
http://www.nxp.com/documents/data_sheet/PCA9534.pdf
Összedugtam, de nem ír, nem olvas a chiből..
Kód: Egész kijelölése
$crystal = 16000000
$regfile = "m328def.dat"
$baud = 19200
$lib "i2c_twi.lbx"
Config Scl = Portc.5
Config Sda = Portc.4
Config Twi = 400000
Dim Olvas As Byte
I2cinit
Waitms 200
I2cstart
I2cwbyte &B01000000
I2cwbyte 255
I2cstop
Waitms 200
I2cstart
I2cwbyte &B01000001
I2crbyte Olvas , Nack
I2cstop
Print Bin(olvas)
Do
nop
Loop
End
Re: AVR kezdőnek
közben rájöttem hogy commandot is kell küldeni a cím után...
Re: AVR kezdőnek
de még nem működik..
Re: AVR kezdőnek
Legalább kommenteznéd, a kód részleted!
Így azt sem tudjuk, éppen mit is akarsz csinálni?
Szerintem Product data sheet szerint így kellene:
Port Kimenet:
1. Be kellene állítani az ábra szerint, hogy kimenet legyen a regiszter!
Fig 9. Write to Configuration register, Data kimenet
2. Fig 8. Write to Output Port register, ábra szerint kiküldöd az adatot a portra.
Port Bemenet:
1. Fig 9. Write to Configuration register, Data bemenet
2. Fig 11. Read Input Port register, szerint beolvasod a bemenet értékét.
Így azt sem tudjuk, éppen mit is akarsz csinálni?
Szerintem Product data sheet szerint így kellene:
Port Kimenet:
1. Be kellene állítani az ábra szerint, hogy kimenet legyen a regiszter!
Fig 9. Write to Configuration register, Data kimenet
2. Fig 8. Write to Output Port register, ábra szerint kiküldöd az adatot a portra.
Port Bemenet:
1. Fig 9. Write to Configuration register, Data bemenet
2. Fig 11. Read Input Port register, szerint beolvasod a bemenet értékét.
Re: AVR kezdőnek
Mondjuk írni első körben a kimenetekre. olyan mintha a chip döglött lenne.. de lehet hogy csak a kommandok nem stimmelnek.. még küzdök
Re: AVR kezdőnek
Összejött..
a kimenet..
a kimenet..
Kód: Egész kijelölése
'44 a cim - 0100 0100
I2cstart
I2cwbyte &B01000100
I2cwbyte &B00000011 'command byte
I2cwbyte &B00000000 'data register
I2cstop
'Adatküldés
I2cstart
I2cwbyte &B01000100 'cim
I2cwbyte &B00000001 'kimenet command
I2cwbyte &HFF
I2cstop
Re: AVR kezdőnek
Próbáldmeg ezt:
Kód: Egész kijelölése
'-------------------------------------------------------------------------------
' (c) 2005 MCS Electronics
' This demo shows an example of I2C on the M128 portF
' PORTF is an extened port and requires a special I2C driver
'-------------------------------------------------------------------------------
$regfile = "m128def.dat" ' the used chip
$crystal = 8000000
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
$baud = 19200 ' baud rate
'configure the used port pin for I2C
Config I2cdelay = 5 ' default slow mode
Config Scl = Portf.0 ' we need to provide the SCL pin name
Config Sda = Portf.1 ' we need to provide the SDA pin name
I2cinit ' Initializes the SCL and SDA pins.
'44 a cim - 0100 0100
Const slave_address_read = &B01000101
Const slave_address_write = &B01000100
Const kimenet_command = &B00000001
Const konfig_regiszter = &B00000011
'6.1.5 Register 3 - konfigurációs regiszter
'Ez a regiszter állítja be az utasításokat, az I / O láb. Ha egy Bit ebben a regiszter értéke 1, a
'megfelelő port pin engedélyezve van, mint egy input magas impedancia kimeneti vezérlő. Ha lévő bit
'Ez a regiszter törlődik, a megfelelő port pin engedélyezve van, mint egy kimenetet. A reset után, a
'I / O konfigurált bemenet.
' Port konfigurált Kimenet
I2cstart
I2cwbyte slave_address_write 'Cim + acknowledge from slave
I2cwbyte konfig_regiszter '3 - konfigurációs regiszter
I2cwbyte &B00000000 '0 = megfelelő port pin engedélyezve kimeneti
I2cstop
'Adatküldés
I2cstart
I2cwbyte slave_address_write 'cim
I2cwbyte kimenet_command 'kimenet command
I2cwbyte &HFF
I2cstop
Waitms 100 'wait for 100 milliseconds
'Adatküldés
I2cstart
I2cwbyte slave_address_write 'cim
I2cwbyte kimenet_command 'kimenet command
I2cwbyte &H00
I2cstop
Waitms 100 'wait for 100 milliseconds
End
Re: AVR kezdőnek
Igen- igen.. így oké.. köszönöm a kiegészítést.
Nano v3-ba való kód:
Nano v3-ba való kód:
Kód: Egész kijelölése
$crystal = 16000000
$regfile = "m328def.dat"
$baud = 19200
$lib "i2c_twi.lbx"
Config Scl = Portc.5 'Initializes the SCL and SDA pins
Config Sda = Portc.4
Config Twi = 400000
'44 a cim - 0100 0100
Const slave_address_read = &B01000101
Const slave_address_write = &B01000100
Const kimenet_command = &B00000001
Const konfig_regiszter = &B00000011
'6.1.5 Register 3 - konfigurációs regiszter
'Ez a regiszter állítja be az utasításokat, az I / O láb. Ha egy Bit ebben a regiszter értéke 1, a
'megfelelő port pin engedélyezve van, mint egy input magas impedancia kimeneti vezérlő. Ha lévő bit
'Ez a regiszter törlődik, a megfelelő port pin engedélyezve van, mint egy kimenetet. A reset után, a
'I / O konfigurált bemenet.
I2cinit
' Port konfigurált Kimenet
I2cstart
I2cwbyte slave_address_write 'Cim + acknowledge from slave
I2cwbyte konfig_regiszter '3 - konfigurációs regiszter
I2cwbyte &B00000000 '0 = megfelelő port pin engedélyezve kimeneti
I2cstop
'Adatküldés
I2cstart
I2cwbyte slave_address_write 'cim
I2cwbyte kimenet_command 'kimenet command
I2cwbyte &HFF
I2cstop
Waitms 300 'wait for 300 milliseconds
'Adatküldés
I2cstart
I2cwbyte slave_address_write 'cim
I2cwbyte kimenet_command 'kimenet command
I2cwbyte &H00
I2cstop
Waitms 200 'wait for 200 milliseconds
'Adatküldés
I2cstart
I2cwbyte slave_address_write 'cim
I2cwbyte kimenet_command 'kimenet command
I2cwbyte &HFF
I2cstop
End
Re: AVR kezdőnek
Így néz ki:
300ms, 200ms és az SDA:
300ms, 200ms és az SDA:
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.