AVR kezdőnek

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2016. május 1. vasárnap, 8:40

A chipek atmel oldali adatlapjaz nezd meg vagy a bascom pdf allomanyat.
Ebben a 3. oldalon van a chip rajza....

bagizoltan
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2015. december 8. kedd, 19:52
Tartózkodási hely: Budapest

Re: AVR kezdőnek

HozzászólásSzerző: bagizoltan » 2016. május 1. vasárnap, 13:30

Szia!
Pont azzal kezdtem, hogy elővettem a chip leírást. A 3. oldalon található rajzon nem tudom egyértelműen beazonosítani a kivezetéseket. Azok, melyeknek van speciális funkciója, és ez szerepel is a kivezetésleírásában, az mind egyértelmű. Azonban a többi kivezetés már nem. A BASCOM leírásban eleve csak két portról találtam leírást: POTRB, PORTD. Mi van azokkal a kivezetésekkel, melyek nem a b és d porthoz tartoznak? Azokra hogyan hivatkozhatok a programban?
Köszönettel
Bagi

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2016. május 1. vasárnap, 13:47

4. oldal lábrajz.
PD3 = PortD.3
labak.gif


Bascom alatt a chip ikonnal nyiss chiprajzot és menj rá a lábára (bal felső (1-es láb) amin az egér állt).
pinbascom.gif



Melyik kivezetést nem tudod kezelni?
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.

Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: AVR kezdőnek

HozzászólásSzerző: csegebiga » 2016. május 1. vasárnap, 14:03

atmega328p datasheet.pdf
3. oldal dip18 pinout
a chiphez legközelebbi jelzés PBxx PCxx PDxx vagyis: Port B, Port C, Port D
4-5. oldal lábak részletesen
melyik láb milyen funkciókat lát el
6.oldal blokkdiagram
mi hova csatlakozik logikailag

mi a kérdésed? szerintem minden itt van

bagizoltan
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2015. december 8. kedd, 19:52
Tartózkodási hely: Budapest

Re: AVR kezdőnek

HozzászólásSzerző: bagizoltan » 2016. május 2. hétfő, 11:20

Szia!
A BASCOM leírásban a következő táblázatot találtam:

Port B Pins Alternate Functions
PortPin
Alternate Functions
PORTB.0
T0
(Timer/Counter 0 external counter input)
PORTB.1
T1
(Timer/Counter 1 external counter input)
PORTB.2
AIN0
(Analog comparator positive input)
PORTB.3
AIN1
(Analog comparator negative input)
PORTB.4
SS
(SPI Slave Select input)
PORTB.5
MOSI
(SPI Bus Master Output/Slave Input)
PORTB.6
MISO
(SPI Bus Master Input/Slave Output)
PORTB.7
SCK
(SPI Bus Serial Clock)

bagizoltan
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2015. december 8. kedd, 19:52
Tartózkodási hely: Budapest

Re: AVR kezdőnek

HozzászólásSzerző: bagizoltan » 2016. május 2. hétfő, 11:20

Szia!
A BASCOM leírásban a következő táblázatot találtam:

Port B Pins Alternate Functions
PortPin
Alternate Functions
PORTB.0
T0
(Timer/Counter 0 external counter input)
PORTB.1
T1
(Timer/Counter 1 external counter input)
PORTB.2
AIN0
(Analog comparator positive input)
PORTB.3
AIN1
(Analog comparator negative input)
PORTB.4
SS
(SPI Slave Select input)
PORTB.5
MOSI
(SPI Bus Master Output/Slave Input)
PORTB.6
MISO
(SPI Bus Master Input/Slave Output)
PORTB.7
SCK
(SPI Bus Serial Clock)

bagizoltan
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2015. december 8. kedd, 19:52
Tartózkodási hely: Budapest

Re: AVR kezdőnek

HozzászólásSzerző: bagizoltan » 2016. május 2. hétfő, 11:30

Bocsánat, de írás és másolgatás közben megnyomtam valamit, így elment egy félkész hozzászólás! Itt a teljes hozzászólás, amit küldeni szerettem volna:

A BASCOM leírásban a következő táblázatot találtam:
Port B Pins Alternate Functions
Port Pin Alternate Functions
PORTB.0 T0 (Timer/Counter 0 external counter input)
PORTB.1 T1 (Timer/Counter 1 external counter input)
PORTB.2 AIN0 (Analog comparator positive input)
PORTB.3 AIN1 (Analog comparator negative input)
PORTB.4 SS (SPI Slave Select input)
PORTB.5 MOSI (SPI Bus Master Output/Slave Input)
PORTB.6 MISO (SPI Bus Master Input/Slave Output)
PORTB.7 SCK (SPI Bus Serial Clock)

Ugyanakkor az ATmega 328 leírásban a lábkiosztásban pl. az MOSI feliratú láb teljes jelölése a köbvetkező:
PB3 (MOSI/OC2A/PCINT3)

Azt hiszem, hogy valamit nagyon benézek, mert az első táblázatban a MOSI kivezetés a Portb6, miközben a lábfelirat rövidítása alapján PB3 vagyis portb3 láb kellen, hogy legyen. Ezt az ellentmondást kellene feloldani valahogyan! Mit nézek el?

Köszönettel

Bagi Zoltán

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2016. május 2. hétfő, 12:29

Ok. Küldj képernyőfotót. Nálad nem a Mega328 chip van kiválasztva...
Hanem valamelyik Tinychip (Tiny24? vagy Tiny26? Tiny2313?)

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

Re: AVR kezdőnek

HozzászólásSzerző: winnerbt » 2016. május 2. hétfő, 15:07

Most már megkérdezek valaki hozzáértőt:
Adott egy kis ASM betéttel működő program, aminél az ASM rutinban a szoros időzítések miatt nem jöhet megszakítás, máskor nincs baj. Már lecsupaszítottam mindent:

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

Declare Sub Send
Dim Rgbbyte As Byte 
Config Int1 = Falling                                       'INT1
Enable Int1
On Int1 Int1_isr
Enable Interrupts

Do
Waitms 1
      For Rgbbyte= 0 To 255
        Send
        Send
        Send
      Next Rgbbyte
Loop
'---------------------------
Sub Send
   $asm
      CLI
      Push r26
      Push r27
      push r17
      push r16
      push r0
      Loadadr Rgbbyte , X                                   'RGB adatok
' stb...időzítések...
      '-------------------------------------------------------------------------------
      pop r0
      pop r16
      pop r17
      pop r27
      pop r26
     SEI
   $End Asm
End Sub

Int1_isr:
Return
End

Az ASM részben tiltom (tiltanám) az INT-eket, hogy ne köszönjenek bele, az INT1 nem csinál semmit. Ennek ellenére beleköszön a rutinba.
Szimulátorban nézve a SEND alatt bejött INT1 utána nem csinál semmit, nem ugrik rá, tehát ott is van valami gond.
A SEND évek óta jól működő rész, csak azt nem értem, hogy hogy a fenébe szól bele az INT1, ha le van tiltva a globális INT???
JAni

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

Re: AVR kezdőnek

HozzászólásSzerző: kapu48 » 2016. május 2. hétfő, 15:47

Már régen olvashattad a Bascom könyvet?

Idézet az interupt részből:
http://avr.tavir.hu/modules.php?name=Content&pa=showpage&pid=18
" Gifr = 64
Return

End
A megszakításrutinba egy sima várakozás kerül. A megszakításrutinban a megszakítások tiltva vannak, a program csak a nyomógomb első megnyomására reagál. Megváltoztatva a Debouncetime értékét kellően nagyra, a nyomógomb érzékelése csak egyszer történik meg.
A Bascom rendelkezik még a Debounce parancssal, melyet a megszakítás-rutinban is használhatunk.

Mi is az a Gifr?"

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

Re: AVR kezdőnek

HozzászólásSzerző: winnerbt » 2016. május 2. hétfő, 17:32

Huhh, tényleg rémlik valami, de:
1. ez ASM bitbizergálás, nem értem, miért nem tiltódik a globális INT
2. Gifr: Error : 46 Line : 77 Assignment error, unknown variable (DIM) [GIFR: 0 64: 112] , in File : D:\ATT........
3. Emlékeim szerint ez arra volt jó, hogy futó megszakítást másik m eg tudjon szakítani, nekem meg az kellene, hogy a program apró részét senki ne tudja megszakítani, viszont tárolódnak a bejött INT-bitek, ha visszaengedélyezem, akkor végrehajtódnak.
De nem...megszakítja az INT1 a "lezárt" kis rutint. A CLI után elméletileg semmilyen INT nem érvényesülhet (-ne), nekem meg szépen beleköszön.
Ja, Mega328P-s kis Arduinos panelről van szó, már arra is gondoltam, hogy valaki (valahol?) mindig engedélyezi az INT-eket.
De gondolom a benne leledző Arduino bootloader kiszáll teljesen az upload után.
JAni

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

Re: AVR kezdőnek

HozzászólásSzerző: kapu48 » 2016. május 2. hétfő, 18:04

Nézdmeg az adatlapot, mert itt másnak nevezik a regisztereket!

12.2.3 EIFR – External Interrupt Flag Register
...
12.2.5 PCIFR – Pin Change Interrupt Flag Register
...

szerintem a megszakítás a több send rutin között esikbe neked.

For Rgbbyte= 0 To 255
Send
???
Send
???
Send
Next Rgbbyte

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

Re: AVR kezdőnek

HozzászólásSzerző: winnerbt » 2016. május 2. hétfő, 18:58

Az nem baj, ha a SEND-ek között esik be (igazából ott van 20kB-nyi program), csak az a baj, hogy a SEND-en belül ne essen be. A kivülről jövő, igazából 2db INT (INT1 és Timer2) elég laza, szkópon nézve a fenntartott 50usec-ből 2-t vesz el, tehát annyira szépen mennie kellene, hogy ihaj. A regiszterneveket akkor áttúrom, köszi hogy figyelmeztettél rá, már sok minden annyira mechanikusan megy, hogy apróságokra nem figyelek...
(o.t.: Kis vacak Arduino panel az USB-n, már 1 órája vésem a prg-ot és bármit változtatok, semmi nem történik, látszatra minden jó, lefordul, áttölt stb. Akkor vettem észre, hogy a másik USB portra is egy rá volt dugva egy ugyan olyan Ard. kispanel és abba töltődtek a programok, persze az be volt esve a fiókba, ami be volt tolva) Szóval vagy többet vagy kevesebbet kellene szívni...
JAni

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

Re: AVR kezdőnek

HozzászólásSzerző: Robert » 2016. május 3. kedd, 4:55

Bootloader:
- Bascom alatt a főprogram egyik első lépése a memória kipucolása illa DIM ek esetén a változó 0-val való feltöltése.
- Arduino alatt néha vannak érdekességek, ott a memóriapucolás elmarad. Aztán ha foglalsz arra a SRAM memóriacímre- van már kezdőértéke !

Bascom alatt is lehetséges: $ramclear fordítási direktívával. Ha cipőskanál fejlesztés: jól jön az induláskori programok kifaragásához....

bagizoltan
Bitmanipulátor
Hozzászólások: 116
Csatlakozott: 2015. december 8. kedd, 19:52
Tartózkodási hely: Budapest

Re: AVR kezdőnek

HozzászólásSzerző: bagizoltan » 2016. május 3. kedd, 6:38

Robert írta:Ok. Küldj képernyőfotót. Nálad nem a Mega328 chip van kiválasztva...
Hanem valamelyik Tinychip (Tiny24? vagy Tiny26? Tiny2313?)


Szia Robert!

Megnéztem a BASCOM-ban. A chip leírásban (ATmega328 van iválasztva) szintén a 17-es pinhez kivezetéshez írja a PB3/MOSI funkciót. Ez a BASCOM help táblázatával van ellentmondásban. Feltöltöttem a képernyőfotót.
Nem akarok ezen sokat lovagolni, előbb-utóbb előveszem az Arduino-t és programot is írok, akkor biztosan kiderül, hogy mi a helyzet valójában. Éppen csak fennakadtam ezen az eltérésen! Úgy éreztem, már megint én nem látok valamit!

Bagi
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.


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