Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
WinAVR / GCC alapszabályok:
1. Ha ISR-ben használsz globális változót, az legyen "volatile"
2. Soha ne érjen véget a main() függvény
3. UART/USART hibák 99,9% a rossz órajel miatt van
4. Kerüld el a -O0 optimalizációs beállítást minden áron
5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás
6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et
Bővebben: AVR-libc FAQ
Lapozás: OK   634 / 837
(#) eSDi válasza Raspun hozzászólására (») Dec 16, 2014 /
 

Ezt nem tudom, hogy honnan vetted. WiFi Shield-el különböző eszközöket tudsz vezérelni WAN/LAN-on keresztül, illetve a shield-en lévő foglalatba dugott SD kártyán lévő fájlokat érheted el. Bár képzelem, hogy a fájlokat mennyire elképeszően nagy sebességgel kezelheti. Bővebben: Link
(#) csabeszq válasza rolandgw hozzászólására (») Dec 16, 2014 /
 
Ez a három paraméteres operátor (egymásbaágyazva).

  1. uint8_t ertek = (valami == 2) ? 5 : 9;


Ha "valami" 2, akkor "ertek" 5 lesz, egyébként meg 9. Semmi köze sem a switch-hez, sem a makróhoz.
A hozzászólás módosítva: Dec 16, 2014
(#) rolandgw válasza csabeszq hozzászólására (») Dec 16, 2014 /
 
Ezt értem,de itt nincs megadva a 3. paraméter az első két sorban.
(#) csabeszq válasza rolandgw hozzászólására (») Dec 16, 2014 /
 
  1. ((y==3) ? LCD_LINE4 : \
  2.                                            ((y==2) ? LCD_LINE3 : \
  3.                                            ((y==1) ? LCD_LINE2 : LCD_LINE1 ))))


Ha kirakom a zárójeleket érthetőbb lesz?
(#) Istvanpisti válasza rolandgw hozzászólására (») Dec 16, 2014 /
 
Esetleg, ha így nézed, akkor érthetőbb?
  1. 1. #define lcd_xy(x, y)    lcd_command((x) + ((y==3) ? LCD_LINE4 : (y==2) ? LCD_LINE3 : (y==1) ? LCD_LINE2 : LCD_LINE1 ))

Tehát: if(y==3) akkor LCD_LINE4, ha nem akkor if (y==2), akkor LCD_LINE3, ha nem akkor if(y==1) akkor LCD_LINE2, ha nem, akkor LCD_LINE1 az értéke.
(#) killbill válasza rolandgw hozzászólására (») Dec 16, 2014 /
 
Meg van adva. De ez nem parameter, hanem operandus, ami lehet egy tetszoleges kifejezes, aminek a tipusa megegyezik a kettospont elott allo kifejezes tipusaval . A kettospont utan nem csak egy konstans allhat, hanem barmi, akar egy ?: operator, de lehetne ott fuggvenyhivas, vagy osszeadas, tok mindegy.
Ha bezarojelezed, akkor talan tisztabb a kep:

(y == 2) ? 12 : ((y == 3) ? 3 : 13);
(#) rolandgw válasza csabeszq hozzászólására (») Dec 16, 2014 /
 
Kösz, így már értem (?),tehát az utolsó kifejezéstől (jobbról) értékelem ki.De ez egy switch,nem ?!
  1. switch y
  2. {
  3.  case:3
  4.  LCD_LINE4;
  5.  break;
  6.  case:2
  7.  LCD_LINE3;
  8.  break;
  9.  case:1
  10.  LCD_LINE2;
  11.  break;
  12.  default:
  13.  LCD_LINE1;
  14.  }
(#) killbill válasza rolandgw hozzászólására (») Dec 16, 2014 /
 
Idézet:
„De ez egy switch,nem ?!”
Nem. A switch az utasitas, a ?: pedig operator.

Az operatoroknak vannak operandusaik, amikkel valamit csinalnak, es az egesznek van egy eredmenye. A eredmenynek van erteke es van tipusa is (int, char, pointer..)

Vannak egyoperandusos operatorok mint pl. a !, ~, *, &, -.

Vannak a szokvanyos ketoperandusos operatorok mint pl. a +, -, *, /, ==, >, stb.
Az == operatornak is van eredmenye. Ha a ket operandusa egyenlo, akkor az eredmeny 1, ha kulonbozo, akkor az eredmeny 0. Tehat az y == 5 az egy olyan muvelet, aminek az eredmenye 1, ha y erteke 5, kulonben pedig 0. Az == (es az osszes relacios) operator tipusa mindig int.

A ?: az specialis operator, mert annak harom operandusa van, bar a K&R konyv kettonek irja.
Az ?: operator eredmenye az elso operandus erteketol fuggoen vagy a masodik vagy a harmadik operandus lesz. Ezert a masodik es harmadik operandus tipusa azonos kell legyen.

C alapismeretek, K&R konyv.
A hozzászólás módosítva: Dec 16, 2014
(#) rolandgw válasza killbill hozzászólására (») Dec 16, 2014 /
 
OK,köszönöm ! Hülyeséget írtam. Bocs a kezdő kérdéseimért !
(#) kapu48 válasza rolandgw hozzászólására (») Dec 16, 2014 /
 

Ha tényleg nem lehet élni, C tudás nélkül?

Hasznos C++ oktató anyag: INFO C
Bővebben: Link A menüsor alcsoportjait érdemes átnézni!
Bővebben: Link

A programozás alapjai
Bővebben: Link
Bővebben: Link
Bővebben: Link
...
A hozzászólás módosítva: Dec 16, 2014
(#) rolandgw válasza kapu48 hozzászólására (») Dec 16, 2014 /
 
Ez idáig elboldogultam az asm-el(mega48),de e felett én is mazochizmusnak tartomA K&R könyvem nemrég érkezett...
(#) kapu48 válasza rolandgw hozzászólására (») Dec 16, 2014 /
 
Véleményem szerint ezért sem muszáj pénzt kiadni!

A C programozási nyelv
(#) kala1982a hozzászólása Dec 16, 2014 /
 
Elakadtam szoftveres PWM-nél. Attiny2313, Bascom, 14 Mhz. RGB LED szalagot szeretnék vezérelni. Ciklusokban nulláról felfutnak egyenként a színek. Ne legyen olyan gyors a felfutás 80 ms késleltetés van a ciklus magban. Egy idő után, de mindig adott helyen vibrálnak a színek. Ez miért lehet? (Timer0 megszakításban csak a 3 led-et kapcsolom ki-be.)
(#) kala1982a válasza kala1982a hozzászólására (») Dec 16, 2014 /
 
Tápegység volt kicsi. Össze sem számoltam, hogy mennyi a fogyasztás. Kapcsoló üzemű tápegység (asztali DVD lejátszóból) 12V-os része kevésnek bizonyult.
(#) killbill válasza kapu48 hozzászólására (») Dec 16, 2014 /
 
Ez jogtiszta?
(#) kapu48 válasza killbill hozzászólására (») Dec 16, 2014 /
 
Szerintem ezt a kérdésed a Forrásnál tedd fel!>
Mennyit keres egy fejlesztő Magyarországon?
(#) killbill válasza kapu48 hozzászólására (») Dec 16, 2014 /
 
Idézet:
„Szerintem ezt a kérdésed a Forrásnál tedd fel!”
Jogos.
(#) csabeszq válasza rolandgw hozzászólására (») Dec 17, 2014 / 1
 
Meglehetősen gyorsan kiábrándultam AVR alatt az assembly-ből. Sok munkát fektettem bele, megcsináltam, működött boldog voltam.

Boldogságom addig tartott, amíg bele nem néztem, hogy a gcc mit csinál és szembesültem azzal, hogy jobban csinálja mint én. Értsd: gyorsabb és tömörebb kódot készített nálam.

Ezután vontam le a következtetést, hogy nem fogok az avr-gcc-vel versenyezni, inkább használom.
(#) rolandgw válasza csabeszq hozzászólására (») Dec 18, 2014 /
 
Meg tudom erősíteni,pár programomat próbaképpen átírtam GCC-be.Max. 5-6% plusz jött ki,de ez betudható a start up-nak és a kezdő C tudásomnak.
(#) holex hozzászólása Dec 19, 2014 /
 
Mi a magyarázat arra, hogy pl az LDI utasítás csak az r16-os regisztertől működik, alatta meg nem? És hol lehet annak utánanézni, hogy az utasítások mely regisztereken működnek? Az adatlapban nem találtam erről semmi infót.
(#) 06smici válasza holex hozzászólására (») Dec 19, 2014 /
 
AVR Studio helpjében jól le vannak írva ezek. Egyedül az egyik komparálási utasításnál találkoztam olyannal, hogy nem úgy működik ahogy abban van.
(#) holex válasza 06smici hozzászólására (») Dec 19, 2014 /
 
Ott eszembe se jutott megnézni, köszi.
(#) rolandgw válasza holex hozzászólására (») Dec 19, 2014 /
 
A konstans paraméterű utasítások csak R16-tól használhatók: sbci,subi,cpi,andi,ori,de pl. az sbr,cbr is,mert az ori/andi utasításnak felel meg,vagy a ser,ahol szintén konstans kerül a regiszterbe.
(#) killbill válasza holex hozzászólására (») Dec 19, 2014 /
 
Az ra a magyarazat, hogy az utasitasszóban csak 4 biten van lekodolva a cel regiszter. r16..r31 az pont 16 darab. Bizonyos utasitasoknal 5 bit van a regiszternek, abban r0-r31 barmi lehet. Igy jott ki a tervezesnel.
(#) killbill válasza holex hozzászólására (») Dec 20, 2014 /
 
Idézet:
„És hol lehet annak utánanézni, hogy az utasítások mely regisztereken működnek? Az adatlapban nem találtam erről semmi infót.”
Van kulon utasitaskeszletet leiro pdf. Valoszinuleg van frissebb is (Mega AVR) az Atmel oldalan.
(#) holex hozzászólása Dec 21, 2014 /
 
Köszönöm mindenkinek, hasznos infók voltak!
(#) Amarton hozzászólása Dec 22, 2014 /
 
Sziasztok,
Van egy Atmega162, amit szeretnék programozni.
USBasp a programozó eszköz, amit használok hozzá. eXtrame Burner a SW, amivel programozni szeretném.
Van olyan szituáció, hogy valamit rosszul állítok be rajta, akkor többet nem lehet programozni?
Most már a devideID-t sem tudom kiolvasni.
5V-t megkapja. Van hozzá kapcsolva külső kvarc. Az sem nem rezeg.
(#) Koleus válasza Amarton hozzászólására (») Dec 22, 2014 /
 
Csak tipp...
Ha előzőleg tudtad olvasni a device ID-t, most meg már nem, alapvetően két dolog lehet:
1. bekötési vagy érintkezési hiba (forrasztás, kábel, stb)
2. kizártad magad a chip-ből, átírtad a fuse biteket (letiltottad a reset lábat vagy SPI portot)

A 2. esetben csak HV programozó segíthet...
(#) Amarton válasza Koleus hozzászólására (») Dec 22, 2014 /
 
A második eset sanszos.
Milyen az a HV programozó?
(#) Koleus válasza Amarton hozzászólására (») Dec 22, 2014 /
 
A HV programozó, High Voltage programozó lenne. Pl itt van leírás róla.
Következő: »»   634 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem