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
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   637 / 637
(#) csabeszq válasza rolandgw hozzászólására (») Kedd, 10:39 /
 
  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 (») Kedd, 10:40 /
 
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 (») Kedd, 10:59 /
 
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 (») Kedd, 11:22 /
 
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 (») Kedd, 13:37 /
 
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: Kedd, 13:39
(#) rolandgw válasza killbill hozzászólására (») Kedd, 14:27 /
 
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 (») Kedd, 16:33 /
 

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: Kedd, 19:01
(#) rolandgw válasza kapu48 hozzászólására (») Kedd, 16:55 /
 
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 (») Kedd, 17:20 /
 
Véleményem szerint ezért sem muszáj pénzt kiadni!

A C programozási nyelv
(#) kala1982a hozzászólása Kedd, 18:57 /
 
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 (») Kedd, 19:56 /
 
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 (») Kedd, 20:01 /
 
Ez jogtiszta?
(#) kapu48 válasza killbill hozzászólására (») Kedd, 20:14 /
 
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 (») Kedd, 20:19 /
 
Idézet:
„Szerintem ezt a kérdésed a Forrásnál tedd fel!”
Jogos.
(#) csabeszq válasza rolandgw hozzászólására (») Sze, 8:03 / 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 (») Csü, 21:02 /
 
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 Pé, 21:54 /
 
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 (») Pé, 22:17 /
 
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 (») Pé, 22:25 /
 
Ott eszembe se jutott megnézni, köszi.
(#) rolandgw válasza holex hozzászólására (») Pé, 23:20 /
 
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 (») Pé, 23:55 /
 
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.
Következő: »»   637 / 637
Bejelentkezés

Belépés

Hirdetés
Frissek
2014. Dec, 20. Szo
4:39:01
Jelenleg 47 fő olvassa az oldalt
Online tagok:
Lapoda.hu     XDT.hu     HEStore.hu