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   389 / 840
(#) trudnai válasza tecsa hozzászólására (») Dec 12, 2011 / 2
 
Almenukhoz be kellene vezetned statuszgep hasznalatat. Azaz van egy statuszod, ami kezdetben 'fomenu' (erteke legyen 0). Mikor megnyomod az 1-es gombot, akkor statuszt valt 'fenyero menu' -re (erteke legyen 1).

Valahogy igy kellene kineznie:

  1. #define FOMENU 0
  2. #define FENYEROMENU 1
  3.  
  4. unsigned char statusz = FOMENU;
  5.  
  6. void menu(int a)
  7. {
  8.   switch(statusz)
  9.   {
  10.     case FOMENU:
  11.       switch(a)
  12.       {
  13.         // 1-el lepunk be az almenube...  
  14.         case 1: statusz = FENYEROMENU; break;
  15.  
  16.         case 3:break;
  17.         case 4:break;
  18.         case 11: break;
  19.       }
  20.       break;
  21.  
  22.     case FENYEROMENU:
  23.       switch(a)
  24.       {  
  25.         case 1: fenyerofel(); break;
  26.         case 3: fenyerole(); break;
  27.  
  28.         // 0 -val lepunk vissza fomenube...
  29.         case 0: statusz = FOMENU; break;
  30.       }
  31.       break;
  32.   }
  33. }
(#) tecsa válasza trudnai hozzászólására (») Dec 12, 2011 /
 
Köszi szépen a segítséget, ezzel tökéletesen elfogok boldogulni!
(#) tecsa hozzászólása Dec 12, 2011 /
 
Sziasztok
Újra segítségre lenne szükségem.

  1. void Init(void) {
  2.  
  3. //----------------------------------------------------
  4.  
  5.            TCCR0B |=  (0<<CS02)  //64-as előosztás timer 0-re
  6.  
  7.                    |  (0<<CS01)
  8.  
  9.                    |  (1<<CS00);
  10.  
  11.  
  12.  
  13.            TIMSK0     |= (1<<TOIE0) ;  //enable interrupt
  14.  
  15.  
  16.  
  17.            sei();
  18.  
  19.  
  20.  
  21.            DDRB     |= (1<<PINB0)     //kimeneteink
  22.  
  23.                    |  (1<<PINB1)
  24.  
  25.                    |  (1<<PINB2);    
  26.  
  27. }
  28.  
  29.  
  30.  
  31. //----------------------------------------------------
  32.  
  33. SIGNAL(SIG_OVERFLOW0) {
  34.  
  35. //----------------------------------------------------
  36.  
  37.            TimerCounter--;
  38.  
  39.            if(TimerCounter==0) {                     // Tehát F_CPU/64/255
  40.  
  41.                R_counter = R_duty;
  42.  
  43.                G_counter = G_duty;
  44.  
  45.                B_counter = B_duty;
  46.  
  47.            
  48.  
  49.                PORTB     |= (1<<PINB0)
  50.  
  51.                           |     (1<<PINB1)
  52.  
  53.                         |    (1<<PINB2);
  54.  
  55.            }    
  56.  
  57.  
  58.  
  59.            if(R_counter) R_counter--;
  60.  
  61.            if(G_counter) G_counter--;
  62.  
  63.            if(B_counter) B_counter--;
  64.  
  65.  
  66.  
  67.            if(R_counter==0) PORTB &= ~(1<<PINB0);
  68.  
  69.            if(G_counter==0) PORTB &= ~(1<<PINB1);
  70.  
  71.            if(B_counter==0) PORTB &= ~(1<<PINB2);
  72.  
  73. }


Ezen sorok értelmezésében szeretném segítséget kérni.
Suliban is használunk időzítéseket, pwm-et, de csak egy példa program került fel a táblára és nincs rendsen elmagyarázva.
Annyi a különbség hogy nekem atmega128-ra kell ezt programoznom. Azt se tudom hol mit kéne néznem a katalógusban.
Egy fényerő szabályozásra lenne szükségem, ami ugyan ezzel a megoldással állítja a fényerőt:
Egy beállított értékről kéne 256-os felbontás, mellet eggyesével növelve az intenzitást.
  1. R_duty = 128;     //kezdoertekek
  2.  
  3.            G_duty = 30;    
  4.  
  5.            B_duty = 200;
  6.  
  7.  
  8.  
  9.            for(;;) {     // vegtelen ciklus
  10.  
  11.                    
  12.  
  13.                switch(val) {                    // színek fadelése
  14.  
  15.                    case 1:  R_duty++;
  16.                                 break;
  17.  
  18.                    case 3:  R_duty++;
  19.                                  break;
  20.  
  21.                    case 4: G_duty--;
  22.                                 break;          
  23.  
  24.                    case 6: G_duty++;
  25.                                break;
  26.  
  27.                    case 7: B_duty--;
  28.                                break;
  29.  
  30.                    case 9:  B_duty++;
  31.                                  break;
  32.                }
  33.  
  34.                _delay_ms(50);
  35.            }
  36.            return 0;
  37.  
  38. }


Előre is köszi.
Üdv: Tecsa
(#) tbs1001 hozzászólása Dec 12, 2011 /
 
HI! OhsonSoft AVR Simulator IDE-ben az UART szimuláció jó szokott lenni..? Baud, és tsaira gondolok. Akármit állítok be 9600-on ketyeg a szimuláció...
(#) sgt válasza tecsa hozzászólására (») Dec 12, 2011 /
 
Kinél vagy laboron? Mi anno el se jutottunk a megszakításokig (Prog 2 labor). F4-en vagy? Esetlegesen megkérhetnélek, hogy elküldöd, hogy mit is tanultok? Borzasztó hálás lennék érte. Megszakításokra teljesen egyedül kellett rájönnöm.

TCCR0B ez a timer0-re utal. Ha valamelyik regiszterben nem vagy biztos, akkor fogod és rá keresel a doksiban . A timer0 a 92. oldaltól kezdődik. Itt elírják, hogy mi hogyan is működik. Érdemes többször is neki futni az olvasásnak, mert elsőre elég zavaros (nekem legalábbis az volt). Maga a timer0-hoz tartozó regiszterek leírása a 103. oldalon kezdődik.

Viszont a SIGNAL az nekem is új, mert eddig csak az ISR makróról tudtam.

Atmega128 datasheet
(#) sikolymester válasza tbs1001 hozzászólására (») Dec 12, 2011 /
 
Nem tudom, de miért nem a fejlesztőtől kérdezed meg? Ő biztos tudna tuti választ adni.

Illetve frissítetted a legfrissebb verzióra?
(#) sikolymester válasza sgt hozzászólására (») Dec 12, 2011 /
 
A SIGNAL a régi módja az interruptok kezelésének. A mostani WINAVR még támogatja ugyan, de nem javasolt a használata, hiszen a jövőben el lesz távolítva. Dob is rá egy warningot az előbb említett miatt.
(#) Tomi_Bp válasza trudnai hozzászólására (») Dec 12, 2011 /
 
Türelmetlen voltam és még tegnap este tákoltam magamnak megoldást, ami ugyan lehet, hogy nem szép, de működik.
  1. error = readFile_counter(READ, "startcnt.db0");
  2.  
  3. for(j=0;j<4; j++)
  4. {
  5. if(start_counter[j] == 48) start_counter[j] = 0;
  6. if(start_counter[j] == 49) start_counter[j] = 1;
  7. if(start_counter[j] == 50) start_counter[j] = 2;
  8. if(start_counter[j] == 51) start_counter[j] = 3;
  9. if(start_counter[j] == 52) start_counter[j] = 4;
  10. if(start_counter[j] == 53) start_counter[j] = 5;
  11. if(start_counter[j] == 54) start_counter[j] = 6;
  12. if(start_counter[j] == 55) start_counter[j] = 7;
  13. if(start_counter[j] == 56) start_counter[j] = 8;
  14. if(start_counter[j] == 57) start_counter[j] = 9;
  15. }
  16.  
  17. int alakitas;
  18. alakitas = (start_counter[0]*1000)+(start_counter[1]*100)+(start_counter[2]*10)+start_counter[3];
  19. alakitas++;
  20.  
  21. unsigned char a,b,c,d;
  22. a=alakitas%10;
  23. alakitas=alakitas/10;
  24. b=alakitas%10;
  25. alakitas=alakitas/10;
  26. c=alakitas%10;
  27. alakitas=alakitas/10;
  28. d=alakitas%10;
  29.  
  30. start_counter[0] = ( d | 0x30);
  31. start_counter[1] = ( c | 0x30);
  32. start_counter[2] = ( b | 0x30);
  33. start_counter[3] = ( a | 0x30);
  34.  
  35. for(j=0;j<0; j++)//var to ASCII
  36. {
  37. if(start_counter[j] == 0) start_counter[j] = 48;
  38. if(start_counter[j] == 1) start_counter[j] = 49;
  39. if(start_counter[j] == 2) start_counter[j] = 50;
  40. if(start_counter[j] == 3) start_counter[j] = 51;
  41. if(start_counter[j] == 4) start_counter[j] = 52;
  42. if(start_counter[j] == 5) start_counter[j] = 53;
  43. if(start_counter[j] == 6) start_counter[j] = 54;
  44. if(start_counter[j] == 7) start_counter[j] = 55;
  45. if(start_counter[j] == 8) start_counter[j] = 56;
  46. if(start_counter[j] == 9) start_counter[j] = 57;
  47. }
  48.  
  49. for(j=0;j<4; j++)  dataString[j] = start_counter[j];
  50. dataString[j++] = '\r';//10
  51. dataString[j++] = '\n';//13
  52.  
  53. error = writeFile("startcnt.db0");


Már csak az a problémám, hogy valami miatt ha olvasom a fájlt, akkor utána nem tudom sem törölni, sem felülírni.
Azt sejtem, hogy megnyitom a fájlt és nem zárom be(?).
Megy az új fájl létrehozása, illetve meglévő fájlhoz való hozzáírás, de ha olvasom, akkor se törölni nem tudom reset nélkül, sem felülírni, sőt azt hiszem, ha olvastam belőle, akkor hozzáfűzni sem, de ebben nem vagyok biztos.
A fenti kódrészletet hogy lehetett volna szebben megírni? Ebből már ki tudjátok silabizálni, mit is szerettem volna. Csak örülnék, ha rá tudnám magam nevelni, hogy szép legyen a kódom és használjam a már megírt, a fordítóban levő rutinokat, függvényeket. Köszi az eddigi segítséget!
(#) Tomi_Bp válasza sgt hozzászólására (») Dec 12, 2011 /
 
Annak szerintem tényleg nagyon sokan örülnének, ha elérhető lenne, fel tennéd valahova a tananyagotokat. Volt itt a fórumon pár halott egyetemi link, illetve olyan, ami Neptun kódot kér, stb... Nem is értem, hogy az egyetemek miért titkolóznak, mit tanítanak?!? Nem az volna a nemzet érdeke, ha minél több ember tanulhatna és tanulna is. Nagyon jók az itt az oldalon elérhető cikkek (nekem főleg Fizikus és Topi cikkei jöttek be), de keveslem és jó lenne MAGYARUL érthetően hozzáférhető "tananyag", még ha sokan hobbynak is tekintjük.
(#) tecsa válasza Tomi_Bp hozzászólására (») Dec 12, 2011 /
 
[OFF]Mint tananyag olyan nincs, általában a tanár a táblára felír egy programot, amit folyamatosan módosít. Meg ugyebár ezt T-bird nevezetű csodát használjuk, így eléggé felületes a tudás amit kapunk. Visszakérdezni viszont sokkal többet szeretnek mint amit leadtak. Gyakorlatilag nem félnek kiadni mi a tananyag, egyszerűen nincs dokumentálva.
(#) sikolymester válasza Tomi_Bp hozzászólására (») Dec 12, 2011 /
 
Anélkül, hogy trollkodnék mondom a következőt:

Aki egyetemista és bármi köze van informatikához, annak amit tanul, az jobb, hogyha megbarátkozik a gondolattal, hogy az angol nyelv egyszerűen elkerülhetetlen lesz számára (vagy már most is az).

Aki tud angolul, és szeretne tanulni AVR ügyben, az rögvest fészkelje be magát erre az oldalra: http://avrfreaks.net/. Elsősorban a fórum részre, a wiki az már nagyon régen meghalt.

Szinte nincsen olyan kérdés, ami ne lett volna már egyszer megválaszolva itt.
Rengeteg tutorial van megírva.
Stb stb.

Továbbá az adatlap angolul van megírva minden AVR-hez. Gyakorlatilag minden IC-hez angol dokumentáció van. Ha valaki szeretne használni bármilyen IC-t, akkor az adatlapot nem tudja megkerülni.

Szomorú de igaz, hogy aki nem ért angolul, az nagyon gyorsan el fog tűnni a süllyesztőben, mert magyarul sajnos nem lehet boldogulni az elektronikában hosszútávon.
(#) trudnai válasza Tomi_Bp hozzászólására (») Dec 13, 2011 /
 
Ok, latom az atoi() fuggveny valamiert nem tetszik neked (van benne valami persze, ilyen buffer tulcsordulasos dolgok lehetnek benne, ami miatt nem mindig szerencses a dolog). De akkor mar erdemes kicsit algoritmizalni

Eloszor is a szamjegy atalakitasa. Azert az eszreveheto az osszefugges az ASCII kodok es a szamok kozott: Mindig 48-al nagyobb az ASCII kod, mint a szam. Magyaran egy egyszeru kivonassal helyettesitheto a sok osszehasonlitas-ertek adas:

  1. start_counter[j] -= 48;


Nylvan ha biztonsagos kodot szeretnenk irni, akkor meg kell gyozodjunk arrol, hogy az ASCII ertek valoban szamot takar-e:

  1. if (start_counter[j] >= '0' && start_counter[j] <= '9' ) {
  2.     start_counter[j] -= '0'; // ASCII '0'-t kivonjuk az ASCII szambol, igy '0' eseten 0-t kapunk, '9' eseten 9-et...
  3. }


Hogy optimalizaljunk kicsit, lecsokkentjuk a tomb nyulkalasokat, hiszen az 'draga' muvelet:

  1. char szamjegy = start_counter[j];
  2. if (szamjegy >= '0' && szamjegy <= '9' ) {
  3.     szamjegy -= '0'; // ASCII '0'-t kivonjuk az ASCII szambol, igy '0' eseten 0-t kapunk, '9' eseten 9-et...
  4. }


Lehetne meg trukkozni mindenfele tablazatokkal, switch-case-ekkel stb, de most nem erdemes.

Koncentraljunk inkabb a tizes szamrendszerre valo atalakitassal. Konnyen belathato, hogy ezt egy ciklusban meg lehet oldani, azaz nem kell elobb 1000-el, majd 100-al majd 10-el szorozni, hanem ciklusban 10-el kell csak szorozgatni:

  1. int szam = 0; // inicializaljuk 0-val!
  2. for ( j = 0; j < 4; j++ ) {
  3.     char szamjegy = start_counter[j];
  4.     if (szamjegy >= '0' && szamjegy <= '9' ) {
  5.         szamjegy -= '0'; // ASCII '0'-t kivonjuk az ASCII szambol, igy '0' eseten 0-t kapunk, '9' eseten 9-et...
  6.     }
  7.     else {
  8.         // hibakezelest tehetunk ide!
  9.         break; // kilepunk a for ciklusbol, hiszen hiba lepett fel
  10.     }
  11.     szam *= 10; // felszorozzuk 10-el
  12.     szam += szamjegy; // majd hozzaadjuk a szamjegyet
  13. }
(#) tecsa válasza sikolymester hozzászólására (») Dec 13, 2011 /
 
Ez egyáltalán nem trollkodás, jómagamnál az a probléma, hogy vannak olyan dolgok amik nem tisztázottak. Ezek akár C-ben lévő hiányosságok, és AVR-el kapcsolatos hiányosságok. Ezeket le kell küzdeni, addig viszont kénytelek leszek, másoknak akár triviális kérdéseket feltenni.
Atmega128-ra még mindig nem tudtam írni egy led fényerő szabályzást írni.

Egyáltalán, hogyan kéne ezt csinálni?
(#) trudnai válasza trudnai hozzászólására (») Dec 13, 2011 /
 
Hmm, most latom a '9 utan lemaradt a lezaro aposztrof, mar tulleptem az idokeretet, hogy modositsam, talan ha egy modi megtenne ezt nekem, megkoszonnem
(#) Fizikus válasza tecsa hozzászólására (») Dec 13, 2011 /
 
Kezdetnek olvasd el ezt, es az utana kovetkezo oldalt:
PWM
(#) Moderátor hozzászólása trudnai hozzászólására (») Dec 13, 2011
 
Megtettem!
(#) Topi hozzászólása Dec 13, 2011 /
 
Egy pár kérdésre megragadnám az alkalmat, hogy válaszoljak. A T-Bird, egyetem, tanagyag témakörben.

Hogy miért én válaszolok? Egyszerű. Én állítottam össze az Óbudai Egyetemen jelenleg folyó AVR méréseket, a Prog 2 oktatásra pedig Zsíros Dani barátom ennek egy egyszerűsített kivonatát, hozta létre.

A miért nincs elmagyarázva?

Az egyetem már nem óvoda, mindenki tud kérdezni. És beismerhető hogy a rendelkezésre álló idő bőven kevés ahhoz, hogy a csapat teljes egésze ugyan úgy tudjon haladni.
Mi részünkről a legfontosabb a hallgatói visszajelzés, mert hogy mi is hallgatók voltunk egykoron (nem is oly rég), de a prog 2-t tanító többi oktató "megszokásból" tanít. Műszerautomatika F4-en a helyzet más, mert egyedül oktatom az egész évfolyamot. Aki oda jár tudja, hogy valóban máshogy mennek a dolgok mint annó.
Némely oktató nem szereti ha a hallgatók kérdeznek. Mi szeretjük, és ezt az óra kereteibe is beépítjük, de mint említettétek sajnos vannak olyanok akik "felírják a táblára a kódot", magyarázat nélkül.

Az idei mikrovezérlő oktatás sokkal-sokkal keményebb mint ami a múlt években volt. Ennek az oka egyszerű: én magam már akkor is a szakmában dolgoztam, amikor kezdtem az óbudai egyetemen. Így tudom mi kell az iparban a való életben. Emiatt kellett keményíteni, és ezt a tananyagba beleszólással rendelkező intézeti oktatók, igazgatók is elfogadták.
Most megpróbáljuk visszarántani az oktatást a gyakorlati való életbe. Oda, ahol réges-régen is volt a leggyakorlatiasabb egyetemen az országban, a Kandón.

Az egyetemei tananyag miért nem érhető el?

Ne felejtsétek el, hogy a tananyag ugyan olyan műnek minősül mint bármi más. Akár egy könyv. Így vannak bizonyos szerzői jogi kérdések is vele kapcsolatban. Vannak olyan zárt jegyzetek, melyek direkt csak az egyetem hallgatóinak áll rendelkezésre.
Egyfajta cél is ez, hogy a többi egyetem ne tudja mi folyik az adott egyetemen mint képzés.
Tervben van, hogy egy rövid egyetemi jegyzetet írok a mérésekről, de ez csak a jövő zenéje.

Akik itt kérdeznek a fórumon?

Szerintem belőlük lesz a legjobb képességű hallgató, a legfelkészültebb mérnök. Ugyanis az oktatásnak már az általános iskola óta ez a célja (ha az oktatók tettek érte, ha nem). Hogy felkeltse az érdeklődést. Az egyetemen minden tárgy terén zajló gyorsított tanítás meg méginkább ezt követeli. Hogy mindenki otthon foglalkozzon vele.

Mégis mit célszerű tudni?

Hamarosan egy cikksorozat indul majd útjára, ami bemutatja ezt az egész T-Bird családot, ami egy rendkívül jó AVR tanuló készlet. De erről is majd később bővebben.

"Kinél vagy laboron?" - Tudjuk, hogy ahány oktató, annyi elvárás, annyi különböző csapat. Még nálam sem tart egyforma szinten az összes csoport... Pedig mint mondottam volt, a Gyártórendszerek labort egyedül tartom az egész évfolyamnak. De hát a hallgatók képességei kérdés egy nehéz kérdés.
(#) covek válasza Topi hozzászólására (») Dec 13, 2011 /
 
Bocs, hogy beledumálok, de ...

Nekem mint GPL/FDL, CC by ... hívőnek igen is szúrja a szeme az, hogy szerzői okok miatt zárt egy írás, jegyzet.
Miért nem lehet azt az anyagot CC by SA licensszel kiadni? Védi a szerzőt kellőképpen. Sok esetben a jegyzet sem elegendő. Illetve nekem (volt NIK-es hallgatónak) szükségem volt a gyakorlatokon a laborvezető személyes magyarázatára is. Tudom, hogy egyetem és önálló gondolkodás, stb. de én ilyen vagyok.
Egy jó jegyzet még inspirálhatna is, hogy felvételizzek arra a szakra ahol színvonalas jegyzet is van. Ez ügye növelhetni az egyetem hallgatói létszámát is.

Persze lehet, hogy az én hozzáállásommal van a gond. Nem is tudom!

Az, hogy lehet kérdezni viszont nagyon pozitív hozzáállás. Nekem, aki oktatni is szokott, ez egy igen fontos lehetőség a visszajelzésekre. Csak így tudom finomítani az előadásomat, gyakorlatomat.
(#) tecsa válasza Topi hozzászólására (») Dec 13, 2011 /
 
Én is az Óbudai egyetemen tanulok most!

A miért nincs elmagyarázva kérdéshez szólnék hozzá!

Amikor C-nyelven "tanultuk" akkor a következő kódrészlet csak felkerült a táblára:
  1. int lcdwr2(unsigned char x)
  2. {
  3.  PORTF=0x08;
  4.  PORTE=(x)&0xF0;
  5.  _delay_us(1500);
  6.  PORTF=0; _delay_us(1500);
  7.  PORTF=0x08; _delay_us(1500);
  8.  PORTE=(x<<4)&0xF0;
  9.  _delay_us(1500);
  10.  PORTF=0; _delay_us(1500);
  11.  PORTF=0x08; _delay_us(1500);
  12.  return 0;
  13. }

Különösebb magyarázat nélkül. Végül is most már tudom mit csinál ugyanis elolvastam az LCD-vel kapcsolatos cikket itt a hobbielektronikán.
De van ami még sajnos nem tiszta:
  1. ISR(TIMER0_OVF_vect)
  2. {
  3. cnt++;
  4. if (z<cnt)
  5. {
  6.  PORTE=0b1000;
  7. }
  8. else
  9. {
  10. PORTE=0;
  11. }
  12.  
  13. if(cnt>STEP) cnt=0;
  14. }
  15. while(1)
  16. {
  17. switch(a)
  18. {
  19. w++;
  20.         case 1: if ((z<STEP)&&(w==N)) z++;break;
  21.  
  22. case 3: if ((z>0)&&(w==N)) z--;break;
  23.        
  24. case 11: msgwr(msgmenu);
  25. statusz = FOMENU; break;
  26.       }
  27.   if(w>N) w=0;
  28. }


Tényleg nincs idő elmagyarázni.
Az meg hogy ki tartja a labort: Prog1-et is a talán a "legrettegettebb" emberhez vettem fel, amit most észre is veszek, mert ami nem avr-hez kapcsolódik, hanem matematikai, és C-vel kapcsolatos akadályok azokat rendszerint megoldom. Prog2-őt is hozzá vettem fel, és ha egyszer (valószínűleg az utolsó pótláson) meglesz akkor azért lesz meg mert tényleg tudom azt amit kérnek tőlem. Remélem nem úgy értelmezte akárki is amit írtam, hogy én bántani akartam akár az oktatókat, vagy a tananyagot. Én így látom, lehet rossz irányba nézek. Jó megismerni mind a kettő oldalt.

Most elindulok prog2 laborra AVRC-t írni, meglássuk hogyan sikerül
(#) Topi válasza covek hozzászólására (») Dec 13, 2011 /
 
Hogy miért nem publikálják a jegyzeteket ilyen licensz alatt, arra azt hiszem Te is ismered a választ: Maradiság.

Én személy szerint magyarázok még személyenként is, mert a gyártórendszerek labor egy szűkebb 30 fős szakmaibb társaság. De ez általános programozás oktatáson már nehezebb feladat, lenne - lehet ez.

Én is azt vallom, és gyakorlom is a valóságban. A kérdések alapján finomítom magát a tananyagot és az előadást.

Tecsa: Sajnos ahány oktató, annyiféle mentalitás.

Véleményformálás: Aki konkrét példákat hoz fel, azt egyre kérem. Vagy nevezze meg az oktatót, akinél tanul, vagy ne beszéljen "általánosan".
Mert sok oktató van, aki lelkiismeretesen és jól csinálja, és mint mindenhol, minden intézményben vannak olyanok akik nem. Tisztelt meg az oktatók nagy többségét azzal, hogy nem általánosítasz.

De ez a téma itt ebben a topikban már lassan OFF...
(#) jodri2003 hozzászólása Dec 13, 2011 /
 
Sziasztok!
Azt szeretném kérdezni, hogy egy szilárdtest, félvezető relét (ASR-04DD) miként illik illeszteni az AVR output lábához.
Köszönettel: Jodri
(#) Topi válasza jodri2003 hozzászólására (») Dec 13, 2011 /
 
A szilárdtest relék bemenete szinte mindegyikénél (ahogy ennél is) áramgenerátoros, így maximum túlbiztosításként egy soros pár ohm-os ellenállást tegyél.
(#) jodri2003 válasza Topi hozzászólására (») Dec 13, 2011 /
 
Így fogok tenni.
Köszönöm!
(#) sgt válasza Topi hozzászólására (») Dec 13, 2011 /
 
Akkor ezért tűnt el wiki.mai is . Azért sajnálom, hogy nincs semmilyen dolog erről, mert bár igaz, hogy F1-es vagyok, de eléggé vonz a beágyazott rendszerek terület, és olvasgatnék róla(mint pl. Schuster által írt PERL, meg C könyvek, amik különösen jól sikerültek)

Zsíros Dániel véletlenül nem tanít(ott) PERL-t jel és képfeldolgozás tárgy címén?
(#) tecsa válasza sgt hozzászólására (») Dec 13, 2011 /
 
De tanított!
(#) sgt válasza tecsa hozzászólására (») Dec 13, 2011 /
 
Durva volt, amikor kb 4 labor alatt az objektum orientált programozáson kívül mindent lenyomott, ami PERL .

I^2C (azaz TWI) milyen problémái lehetnek? Program 10000%, hogy jó, mert másik eszközön működött. Most viszont elküldjük a címet, jön az ACK, de aztán slave nem engedi el az SDA vonalat, így az első adat bájt elküldésénél megáll az egész, mert nem volt start. Mi lehet a probléma?
(#) tecsa válasza Topi hozzászólására (») Dec 13, 2011 /
 
BTW ma sem sikerült a prog2, eléggé elkeserítő, és már esélyt sem látok arra, hogy meglegyen.

Ez a T-bird viszont érdekel, meg úgy kompletten a programozás is. A mostani problémám, a tasztatúráról bekérni egy legfeljebb 4 jegyű számot. Ebben tudnál segíteni?

Előre is köszönöm.

Üdv: Tecsa
(#) Topi válasza tecsa hozzászólására (») Dec 14, 2011 /
 
Billentyűzet kezelő függvényed - megoldásod van már, azt kell csak kiegészíteni a szám bekéréssel?

Vagy az elejéről szeretnéd megoldani?
(#) tecsa válasza Topi hozzászólására (») Dec 14, 2011 /
 
Eddig Mohos Tanár Úr bill kezelő függvényét használtam, amivel nem sikerült boldogulnom, Valkai Tanár Úr azt mondta, hogy az nem is biztos, hogy jó arra amire használni akarom. Mutatott egy programot (gondolom a sajátja), ami vizsgálja a lenyomott gombot, meg hogy felengedtem-e.
A mai nappal kiderült, hogy nem tudtam teljesíteni a prog2 labort, ezért van 12 hónapom beverni a tananyagot, és természetesen tovább fejlődni.


Szóval ahhoz kérnék segítséget, hogyan kéne számot beolvasni a bill-ről. Pontosan hogyan is működik?
Inkább az elvre lennék kíváncsi, most már van időm magamtól is megírni a programot.
Ha esetleg van hozzá, valami dokumentált leírás, akármi ami segíthet, azt is megköszönném.
Üdv: Tecsa
(#) mrgrassy hozzászólása Dec 14, 2011 /
 
Sziasztok
Azt szeretném kérdezni, hogy hogyan tudom javitani az időzítési problémát?

egy attiny45-el csináltam az oldalon meg található közlekedési lámpát és túl gyorsan váltogat és például a piros és a sárga nem világit egyszerre pedig a programban úgy van bele írva szerintem a delay-ms függvény nem úgy működik ahogy kéne (kezdő vagyok ezért csak találgatok)
kérlek segítsetek.

Köszi
Következő: »»   389 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.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