AVR kezdőnek

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

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 :)
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Re: AVR kezdőnek

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

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 :)
Szívesen!

(ezért nem szabad reflexből/megszokásból(és fáradtan) dolgozni - minidg ki kell nyitani az adatlapot)
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

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.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: AVR kezdőnek

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

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.
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

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:

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
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?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: AVR kezdőnek

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

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.
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

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..

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
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

közben rájöttem hogy commandot is kell küldeni a cím után...
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

de még nem működik..
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVR kezdőnek

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

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.
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

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
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

Összejött..
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
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: AVR kezdőnek

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

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
:?:
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

Igen- igen.. így oké.. köszönöm a kiegészítést.

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
Avatar
Marvinn
Tranzisztorgyógyász
Hozzászólások: 153
Csatlakozott: 2008. július 24. csütörtök, 6:00

Re: AVR kezdőnek

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

Így néz ki:

300ms, 200ms
PCA9534-kimenet_1.jpg
és az SDA:
PCA9534-kimenet_2.jpg
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Válasz küldése