AVR kezdőnek

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3354
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: AVR kezdőnek

HozzászólásSzerző: kapu48 » 2015. szeptember 17. csütörtök, 14:45

Felkerekítés:

Veszed a szám egész részét.
Kivonod a számodból az egész részt.
Ha az eredmény nem egyelő 0-val?
A számod egész részét növeled 1-el.

Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Re: AVR kezdőnek

HozzászólásSzerző: gerry » 2015. szeptember 19. szombat, 17:55

kapu48 írta:Felkerekítés:

Veszed a szám egész részét.
Kivonod a számodból az egész részt.
Ha az eredmény nem egyelő 0-val?
A számod egész részét növeled 1-el.


Ott a pont!
Be"temp"eltem az eredeti szám "INT()"-ét, majd az eredeti számot osztottam a tempel. Ha az eredmény <> 1 hozzáad az "INT()"-elt számhoz 1-et.
Működik!
Köszönöm!

Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Re: AVR kezdőnek

HozzászólásSzerző: gerry » 2015. szeptember 19. szombat, 17:59

Megint elakadtam!
Létre kellene hoznom egy szám 16 bites "formáját"
és ezt megjeleníteni "Lo_byte" és Hi_byte"-ban.
Hogyan kellesz ezt csinálni?
Köszönöm!

Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Re: AVR kezdőnek

HozzászólásSzerző: gerry » 2015. szeptember 19. szombat, 18:38

Eddig eljutottam! :-)

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

$sim

$regfile = "m48def.dat"                                     ' specify the used micro

$crystal = 8000000                                          ' used crystal frequency

$baud = 19200                                               ' use baud rate

$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


Dim A As Word
Dim S As String * 15 , Z As String * 15 , X As String * 15
Dim Lo_byte As Byte : Dim Hi_byte As Byte

A = 481

S = Bin(a)

Print S

Z = Left(s , 8) : Print Z

X = Mid(s , 9 , 8) : Print X

End


Az "S" értéke

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

S = "0000000111100001"

A "z" értéke

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

Z = "00000001"

Az "X" értéke

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

X= "11100001"

Hogy tudom byte-osítani ezeket az értékeket?
Köszönöm!

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2015. szeptember 19. szombat, 19:19

dim w as word
dim a1 as byte overlay at w
dim a2 as byte overlay at w+1

vagy

dim w as word
dim a1 as byte
dim a2 as byte
a1=w\256
a2=w mod 256

Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

Re: AVR kezdőnek

HozzászólásSzerző: SirLeslie » 2015. szeptember 19. szombat, 19:55

gerry írta:Eddig eljutottam! :-)
...

Az "S" értéke

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

S = "0000000111100001"

A "z" értéke

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

Z = "00000001"

Az "X" értéke

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

X= "11100001"

Hogy tudom byte-osítani ezeket az értékeket?
Köszönöm!


A help-ben nézd meg a LOW és HIGH utasításokat - megadja egy word alsó/felső bájtját.

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

LOW
Action
Retrieves the least significant byte of a variable.

Syntax
var = LOW( s )
Remarks

Var
 The variable that is assigned with the LSB of var S.
S
 The source variable to get the LSB from.

...

HIGH
Retrieves the most significant byte of a variable.

Syntax
var = HIGH( s )

Remarks
Var
 The variable that is assigned with the MSB of var S.
S
 The source variable to get the MSB from.

Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Re: AVR kezdőnek

HozzászólásSzerző: gerry » 2015. szeptember 19. szombat, 21:10

Köszönöm meglett!
Robi amit írt jó lett csak át kellett írni az utasítást, mert ahogy leírta úgy nem volt jó a fordítónak. :-)

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

Dim W As Word
Dim A1 As Byte At W Overlay
Dim A2 As Byte At W + 1 Overlay


Üdv!

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 898
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: AVR kezdőnek

HozzászólásSzerző: winnerbt » 2015. október 7. szerda, 9:37

Tiszteletem!
Decimális értéket nem lehet megadni Word/Long változóknak? :

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

Dim W As Eram Word
Dim WW As Word
Dim L As Eram Long
Dim LL As  Long

W=1000%
WW=1000%
L=1000&
LL=1000&


Data-sorban megeszi az értéket is meg a beolvasást is...Csak így direktben nem. (nem nagy gond, csak furi...)

Ez mind hibát generál :(
Verzió: 2.0.7.7 és 2.0.7.9

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 898
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: AVR kezdőnek

HozzászólásSzerző: winnerbt » 2015. október 7. szerda, 9:41

Birka vagyok, DATA sorból emeltem át, nem kell a végére jelzés ilyenkor...Bár a LL=&H3E8&-t megeszi.

Herakles
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2015. március 4. szerda, 9:40

Re: AVR kezdőnek

HozzászólásSzerző: Herakles » 2015. november 27. péntek, 11:41

Egy nagyon komoly kérdésem volna. Egy tudományos fejlesztés kapcsán több száz ATMega32 körüli (még nem dőlt el, de az ár is számít) kontrollert fogunk összekapcsolni.
Szerintetek megoldható, hogy egy kontroller programot töltsön le egy másikba? Magyarul a program frissítést úgy képzelem el, hogy az első megkapja és egymás után felprogramozzák egymást.
Szerintetek megoldható?

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2015. november 27. péntek, 15:47

Tipp/kérdés:
- Minden holmi kap egy címet és a bootloaderen át online töltöd le? Azaz online a kapcsolat?
- Minden holmi mellett van egy min 32k-s EEPROM, abba letöltöd a kódot és a bootloader a külső eepromból frissíti magát?


Mi van sikertelen frissítéskor?
Mi van ha a frissítés megszakad?
Mi van ha a rendszer egy része frissült, egy része nem?

Kérdés: Hogyan vannak összekötve akontrollerek?
- 485 kiesett (32 limit)
- 1Wire kiesett kb. 60 db a limit
- I2C kiesett a távolság miatt.

CAN busz?
Ethernet?

Herakles
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2015. március 4. szerda, 9:40

Re: AVR kezdőnek

HozzászólásSzerző: Herakles » 2015. december 9. szerda, 11:35

Nincs még, csak halvány elképzelésem a dologról...
Szóval egy hálózatot képzelj el, ahol 128 kontroller egymással van összekötve. Mindegyik a 8 körülötte lévővel, sima I/O lábakon keresztül. A programjuk szerint majd adatokat fognak cserélni egymással.
A gondom csak az, hogy amikor mondjuk ki szeretném cserélni a programjukat, akkor ne kelljen 128 -szor egyesével csatlakoztatgatni a letöltőt és beírni a programot.

Hanem arra gondoltam, hogy mondjuk az 1. kontroller erre a célra fenntartott 4db I/O lába be lenne kötve a 2. kontroller MOSI MISO SCK RESET lábára. Átküldök az 1. -nek adatként egy lefordított programot, amit az beéget a 2.-be, majd adatként (másik I/O lábakon) átadja neki is a programot. A 2. kontroller beégeti a progit a 3. kontrollerbe, majd továbbadja adatként is a progit. Szóval a PC-ről felprogramozom az 1. kontrollert, majd adatként átadom a programot és onnantól fogva végigprogramozza egymást a 128 kontroller.
De ez csak egy ötlet, kérdeném hogy szerintetek megvalósítható?

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2015. december 9. szerda, 14:04

1, Minden kontroller mellett a kontroller méretével megegyező tárhely. Ide letöltve a programot a bootoláskor innen frissíti a flash tartalmát.
2, Ha a processzor flashmemóriájának felénél kisebb a kód, akkor a programkód (frissítendő) a FLASH szabad részre töltődik le. Ide letöltve a programot a bootoláskor innen frissíti a flash tartalmát.
3, RS-485 buszon át kommunikálnak az eszközök. MAX485 illetve a 1/4 terhelésű illesztőket kell használni, így 32 helyett 128 holmi lehet a buszon (1 master). A programfrissítéskor a master küldi az adatot és a címet (melyiken adatot frissítesz). A többi figyelő állapotban van, amíg a buszon szórt üzenetként ki nem megy: "MIndenkinek: Frissítési folymat vége, please RESET!"

Lineáris továbbprogramozás hogyan menne? A programkód hogy jut el az elsőtől a másodikba? A programod tartalmazza a programozóprotokollt, a programkódot, mindent? Necces. Plusz hiba: SPI busz (programozó) max távolsága 20 cm lehet!

Herakles
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2015. március 4. szerda, 9:40

Adat csere PC -vel.

HozzászólásSzerző: Herakles » 2015. december 10. csütörtök, 10:44

Köszönöm a válaszod! Alaposan végiggondolom még hogyan tervezzem meg.

Egy másik kérdésem is lenne, ha megtisztelsz a válasszal:

Egy ATMega32 és a PC között hogy a legegyszerűbb/olcsóbb adatátvitelt megvalósítani?
- USB Host IC -vel?
- USB-Soros átalakítóval?
- Vagy az ATMega32 -t rá tudom venni szoftveresen, hogy USB-vel tudjon beszélgetni közvetlenül?

Amióta nincs a gépeken párhuzamos és soros port elég macerás lett az életem. Az USB - kontroller adatátvitelbe lassan bele kell kóstolnom.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 898
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: AVR kezdőnek

HozzászólásSzerző: winnerbt » 2015. december 10. csütörtök, 22:27

Sziasztok, csak egy apró kérdés:
BascomAVR Demo korlátja csak a fordítási méretre vonatkozik vagy a feltöltésre is?
Tehát ha adok valakinek 123kB-os bin-t, akkor demoval fel tudja-e tölteni a uC-be?


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 2 vendég