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   369 / 840
(#) luxmanpower válasza trudnai hozzászólására (») Okt 20, 2011 /
 
Köszi! Ez egy nagyon egyszerű, és tökéletes megoldás volt a problémámra! .

Másik kérdés:

program memóriában tárolt számot kellene összehasonlítanom egy változó értékével, és csak if-el működik. Ha switch-el próbálom akkor hibát dob. Meg lehet oldani switch-el is?
  1. //Ez megy:
  2. if (temp == pgm_read_byte(&(valtozo[0]))){...}
  3. //ez nem
  4.  
  5. switch (temp)
  6. {
  7. case pgm_read_byte(&(valtozo[0])):...
  8. }
(#) Reggie válasza blackdog hozzászólására (») Okt 20, 2011 /
 
A portok kezeleset az IC doksijaban talalod meg C peldakkal, sot nagyon sok periferia kezeleset ott talalod meg.
Az AVR-libc-ben ertelemszeruen nem fogod megtalalni ezeket, mert ezek IC specifikus dolgok, mindossze header fajlokban definialva vannak a regiszterek es egyebb konstansok, hogy tudjad hasznalni.
(#) Reggie válasza luxmanpower hozzászólására (») Okt 20, 2011 /
 
A case utani reszt nem ertekeli ki, igy oda fuggveny nem mehet(csak konstans).
En valahogy igy csinalnam:
  1. uint8_t i;
  2. uint8_t f;
  3. for(i=0;i<max;i++) {
  4.   if (temp==pgm_read_byte(&(valtozo[i]))) {
  5.     f=i;
  6.     i=max;
  7.   }
  8. }
  9. switch(f) {
  10.   case 0:...
  11.   ...
  12. }
(#) blackdog válasza Reggie hozzászólására (») Okt 20, 2011 /
 
Csak félig értlek.
Az miért IC specifikus, hogy hogyan kell egy portot be-ki kapcsolni vagy H/L szintet adni?
  1. PORTB|=(1<<PB2);
  2. PORTB&=~(1<<PB2);

Ezekszerint ez nem működik minden esetben?
Az alap definíciókról nem találok semmit, hogy:
PORTx ?? =?? PB???
Ezt olvashatóbban nem is lehet beállítani? Pl.: 0x14

(Bocs, de még láma vagyok)
(#) dB_Thunder válasza blackdog hozzászólására (») Okt 20, 2011 /
 
Ahogy a kolléga is írta azért ez nem annyira egyszerű.
Elsőnek is van olyan regiszter ami azt hivatott tárolni, hogy az aktuális port melyik "lába" (DDRx, x a port betűjele) bemenet vagy kimenet e. És persze van még egy pár regiszter, ami meghatározza hogy milyen bemenet vagy kimenet, bekapcsolt felhúzó ellenállás az adott lábon, stb. Ezek bizony típus specifikusak, de sok a hasonlóság, tehát nem fogysz benne elveszni.
Ajánlom neked az AVR mintaprogramok-at, illetve sok-sok c kód nézegetését !
(#) moderboy hozzászólása Okt 20, 2011 /
 
Röviden valaki tudná vázolni nekem elméletben, hogy assemblyben hogyan kéne egy 8 bites változót kipréselnem 3 darab 7 szegmenses kijelzőre? A kijelzőkre BCD kódban megy az adat, tehát a 8 bites számot kellene felbontani decimális helyiértékekre aztán ezt BCDben elküldenem, de nem nagyon boldogulok a felbontással.
(#) trudnai válasza luxmanpower hozzászólására (») Okt 21, 2011 /
 
Nem ismerem pontosan a problemat amin dolgozol, de pl olyat lehet, hogy:

  1. int a = 0;
  2.  
  3. #define egy   1
  4. #define ketto 2
  5. #define harom 3
  6.  
  7. const int tomb[] = {
  8.     egy, ketto, harom
  9. };
  10.  
  11. int main()
  12. {
  13.     switch ( a ) {
  14.         case egy:
  15.             break;
  16.         case ketto:
  17.             break;
  18.         case harom:
  19.             break;
  20.         default:
  21.             break;
  22.     }
  23.  
  24.     return 0;
  25. }


Magyaran a ROM-ba tarolando ertekeket macro-val definialod es akkor lehet case-be tenni. Ha kesobb az 'egy'-et 0-ra akarod valtoztatni akkor csak egy helyen kell modositanod a programodat, a constans tombodben is jo lesz es a case agban is...
(#) Reggie válasza blackdog hozzászólására (») Okt 21, 2011 /
 
Mukodik minden esetben, csak ez egy alacsonyszintu muvelet igy az IC doksija targyalja, az avr-libc pedig egy fokkal magasabbszintu muveleteket tamogat. (Pl. ilyen eeprom programozasa mar osszetettebb muveletsort igenyel, ezert is van ra fuggveny az avrlibc-ben.)
Az alap definiciok azok, amik az IC-k doksijaban is le vannak irva, mint pl. PORTB, ami konkretan egy regiszter. A regiszter tartalmanak kezeleset es ennek fuggvenyeben az I/O labak viselkedeset ertelemszeruen a gyarto dokumentalja, mivel ok gyartjak az ic-t, az avr-libc keszitoinek erre nincs rahatasuk, ok csak megcsinaljak a definiciot, hogy te a PORTB regisztert tartalmat a PORTB definicioval tudd elerni. Ezen nincs mit dokumentalni, egyedul azt fedik el eloled, hogy I/O cimen vagy memoria cimen ered-e el, de ez felhasznaloi oldalrol(foleg kezdoknek) teljesen mindegy.
A PORTB=0x14 is mukodik, ha neked erre van szukseged, bar egyes helyzetekben a PBx olvashatobb. Akkor es azt hasznalod amelyiket szeretned, a lenyeg, hogy minden regiszter 8 bites, igy 8 bites erteket kell adni neki (nehany 16 bites regiszter is van).
(#) blackdog hozzászólása Okt 21, 2011 /
 
Sziasztok!
A következő kóddal próbálkozom, de fordításkor hibát kapok.
  1. #ifndef F_CPU
  2. #define F_CPU 1600000UL
  3. #endif
  4.  
  5. #include <avr\io.h>
  6. #include <avr\interrupt.h>
  7. #include <util\delay.h>
  8.  
  9. //LED ki-be kapcsolásának definiálása
  10.  #define LED_ON PORTB |= _BV(PB0);
  11.  #define LED_OFF PORTB &= ~(_BV(PB0));
  12.  int unsigned i=0; // általános számláló
  13.  
  14.  
  15.  ISR (INT0_vect)
  16.  {
  17.  if (bit_is_set(TIMSK,OCIE0)) //ha timer0 megszakítás engedélyezve
  18.  {TIMSK &=~(_BV(OCIE0));
  19.  LED_OFF}
  20.  else
  21.  TIMSK |=_BV(OCIE0);
  22.  }
  23.  
  24. ISR (ADC_vect)
  25.  {
  26.  OCR0=ADCW/ 4; //csak 8 bit kell
  27.  };
  28.  
  29. ISR (TIMER0_COMP_vect)
  30.  {
  31.  if (bit_is_set(PINB,0))
  32.  LED_OFF
  33.  else
  34.  LED_ON;
  35.  }
  36.  
  37.  static void delay_1s(void)
  38.  {
  39.  uint8_t ii;
  40.  for (ii = 0; ii < 100; ii++)
  41.  _delay_ms(10);
  42.  }
  43.  
  44.  
  45. //innen indul a program
  46.  int main(void)
  47.  {
  48.  DDRB=0B00001001; //a PORTB kimenet ha a bit=1, bemenet ha a bit=0
  49.  PORTB=0B00000000; //a PORTB beállítása
  50.  PORTD=(1<<PD2); //INT0 felhúzó ellenállásának bekapcsolása
  51.  
  52. //int0 beállítása
  53.  MCUCR=0B00000010; //lefutó él generál int0-nál megszakítást
  54.  GICR= (1<<INT0); //int0 megszakítás engedélyezve
  55.  
  56.  //TIMER0 beállítása
  57.  TCNT0=0; //timer0 számlálója
  58.  OCR0=255; //komparátor regiszter
  59.  TCCR0=0B00001101; //CTC mód, 1:32 óra
  60.  TIMSK|=(1<<OCIE0); //OCR0=TCNT0 és lészen megszakítás
  61.  
  62. //AD beállítása
  63.  ADMUX=0B01000000; //0-ás bemenet
  64.  ADCSRA=0B10101111; //ADC mehet,auto mód,megszakítás engedélyezve, előosztó 1:128
  65.  
  66. //villog
  67.  for (i=1;i<4;i++)
  68.  {
  69.  LED_ON;
  70.  delay_1s();
  71.  LED_OFF;
  72.  delay_1s();
  73.  }
  74. ADCSRA = ADCSRA | (1<<ADSC); //AD indul ADSC=1
  75.  sei(); //globális megszakítás indul
  76.  
  77. while(1)
  78.  {
  79.  //végtelen ciklus
  80.  }
  81.  }


Hiba:
../Ledes1.c: In function '__vector_1':
../Ledes1.c:20: error: 'TIMSK' undeclared (first use in this function)
../Ledes1.c:20: error: (Each undeclared identifier is reported only once
../Ledes1.c:20: error: for each function it appears in.)
../Ledes1.c:20: error: 'OCIE0' undeclared (first use in this function)
../Ledes1.c: In function '__vector_21':
../Ledes1.c:29: error: 'OCR0' undeclared (first use in this function)
../Ledes1.c: At top level:
../Ledes1.c:32: warning: 'TIMER0_COMP_vect' appears to be a misspelled signal handler
../Ledes1.c: In function 'main':
../Ledes1.c:60: error: 'GICR' undeclared (first use in this function)
../Ledes1.c:64: error: 'OCR0' undeclared (first use in this function)
../Ledes1.c:65: error: 'TCCR0' undeclared (first use in this function)
../Ledes1.c:66: error: 'TIMSK' undeclared (first use in this function)
../Ledes1.c:66: error: 'OCIE0' undeclared (first use in this function)
(#) TavIR-AVR válasza blackdog hozzászólására (») Okt 21, 2011 /
 
Uram + isten!

Tessék behúzni a kéziféket, mert ebből fának menés esete lesz....

A LEDvillogóba kell:
kimenetkezelés, delay(normál) időzítés.

INT, ADC, TIMER minek?
Ezeket majd később! És nem is a legmagasabb/legnehezebb szintem kezelni előszörre!

Szerintem indulj el a 8 lábbal AVR sorozaton.


Mottó: "Ha kalapács van a kezedben, mindent szögnek nézel...."
(#) blackdog válasza TavIR-AVR hozzászólására (») Okt 21, 2011 /
 
Leszögezem nem saját agyszülemény!
Copy - Paste egy oldalról és csak látni szerettem volna a működését.
De le sem fordul.
Amúgy pont a Timer0 miatt érdekel mert a _delay funkciókkal nem tudk 1sec-5sec időzítést beállítani.

Vagy tévedek? :hide:
(#) TavIR-AVR válasza blackdog hozzászólására (») Okt 21, 2011 /
 
Több delay_ms() egymás után?
Így fokozható a késleltés sokáig....
(#) Reggie válasza blackdog hozzászólására (») Okt 21, 2011 /
 
Valoszinuleg az a baj, hogy nem jo uC-re forditod, vagy nem arra keszult amire szeretnel forditani. Nezd meg milyen tipusu timert hasznalt az eredeti kod az eredeti ic-vel es a te icden ugyan olyan timerre ird at. (TISMK-> TIMSK0 vagy TISMK1 , stb.)
(#) Reggie válasza blackdog hozzászólására (») Okt 21, 2011 /
 
  1. void my_delay_ms(uint32_t ms) {
  2. while (ms>0) {
  3.   if (ms>5) {
  4.     delay_ms(5);
  5.     ms=ms-5;
  6.   } else {
  7.     delay_ms(ms);
  8.     ms=0;
  9.   }
  10. }
(#) blackdog válasza Reggie hozzászólására (») Okt 21, 2011 /
 
Gondolom ez is jó:
  1. uint8_t ii;
  2. for (ii = 0; ii < 100; ii++)
  3. { _delay_ms(10); }


A másik ami miatt érdekel az uC időzítője, hogy a delay függvények függnek az IC órajelétől.
Én viszont ettől független időzítésre gondoltam. Ezért próbáltam Time0 -t piszkálni.
(#) norbigal hozzászólása Okt 21, 2011 /
 
Hali

Néhány hete már írogattam ide az AVR programozó kiválasztásával. AZóta döntöttem - és rendeltem - egy TAVIR féle MKII-es programozót. Bár még nem érkezett meg de sztem jövőhéten kézhezveszem és ZH időszak után azonnal neki is fogok kisérletezgetni, de ehhez még lenne pár kérdésem.
Nyilván nem ezzel a programmal kezdek majd, de nem hagy nzugodni a dolog így hát megkérdem, hátha bírtok segíteni:

Szeretnék egy digitális órát készíteni 4db 7 szegmenses kijelzővel(óra és perc kijelzés). Atmega 8-at használok majd - vagy 128-at bár utasításkészlet terén majdnem tök mindegy melyiket. ELképzelésem már elég konkrétan van arról, hogy mégis hogy írjam ezt meg, de pár dolgot nem értek. Assembly-ben írnám a programot. Azt viszont nyilván figyelembe kellene venni, hogy az 1 másodperces késleltetések nem fognak pontosan lefutni, ha maga a program utasításai is felzabálnak jónéhány órajelet. Ezért szerintem a gyári 16MHZ helyett pl. 50-100MHZ között kellene működtetnem a mikrokontrollert, hogy az utasításokból adódó időeltolódás ne okozzon jelentős hibát.

Neten keresgéltem is az után hogy lehet bekötni oszcillátort a mikrokontrollerbe, és az alábbit találtam: az XTAL2 és XTAL1 közé kell tenni a kvarc kristályt egy-egy kondenzátorral, és végül ezt a 2 lábat összekötni a földdel. A kérdésem az lenne, hogy így helyesen lenne bekötve? Másrészről pedig ez a bekötés azt jelentené, hogy a mikrokontroller belső oszcillátorát nem venné figyelembe, hanem helyette automatikusan a 50MHZ-en futna a chip?

A másik nagy kérdés bennem, hogy ugyebár minden utasításnak van meghatáropozott ideje, hogy hány órajel alatt hajtódik végre. De azt hogy birom kiszámolni, hogy pl. 50MHZ-en egy olyan utasítás ami két órajel alatt fut le, pontosan hány secundumot jelent? EGyszerűen csak kiszámolom a periódusidőt a frekvenciából és pl. a fenti példánál maradva ez 1/(50x10^6) =2x10^-8 és ezt megszorzom 2-vel mivel az említett utasítás 2 órajelet igényel?!?! EZt így kell számolni?!?!

Azért lenne fontos, mert majd egy 1sec-os késleltetést/számlálót mindképp be kell iktatnom, ami az egész óra alapját képezi - még ha a többi utasításból adódó órajelektől az 50MHZ-es nagyságrend miatt el is tekintek.
(#) TavIR-AVR válasza norbigal hozzászólására (») Okt 21, 2011 /
 
50MHz?
Szóval a chipet nitrogénnel hűtöd...

Egyszerűbb:
Ott a Timer2 ami fogad órakvarcot. Így ezt leosztva 1 sec időalapod lesz, ami lépteti az órádat (INT-ben).
És a kijelzés meg a főprogramodban fut.
Így nem a lineáris programozásban kell elfedni a időcsúszást, hanem az INT megszakítja a főprogramot, végrehajtja az időléptetést, és utána a főprogramod meg a szegmenseket kezeli. Na bumm, az egyik ilyen szegmenskijelzésed hossza megugrik 5-10 usec-l ...


Javaslat: szedd több részre a feladatot:
1: gombkezelés, mert be kell állítani az órát
2: 7szegmenses kijelzés, illetve multiplexelélés
3, Timer2 és az óra kezelése
4, esetleg I2C vagy külső óraIC, hogy áramszünet után ne villogjon, hanem legyen egy pontos időd...

A kvarc alap pontossága 30 ppm. Ez ha órakvarcról beszélgetünk, akkor ~ napi 1-4 sec eltérést okoz...
Az órádon van mp kijelzés?

Ha tutira mész:
- DCF77 vevő (frankfurti atomora)
- NTP ethernet: netes pontos idő.
- GPS

Nem rossz megoldások ezek sem....
Max ágyú-veréb esete.
(#) norbigal válasza TavIR-AVR hozzászólására (») Okt 21, 2011 /
 
Hűteném ha tehetném Na de komyolra fordítva kajak hülyeséget írtam (de szoktam hülyeségeket beszélni)

Na de ami a témát illeti: nem vagyok nagy igényű:
-egyrészről full kezdőnek érzem magam, és feltehetőleg az is vagyok
- másrészről nem kell nekem hűde pontos óra, csak a sikerélmény miatt akarom csinálni, még az sem zavar ha napi 5-8 másodpercet késik
- Ráadásul nem ma lesz, de nemis heteken belül mire azt megcsinálom , hisz addig még annyi apró, primitív de érdekes dolgot akarnék összerakni. Igazából csak a kiváncsiság nem hagy nyugodni.

A bökkenő azzal van, hogy nem tudom hogy működnek ezek a megszakítások, szóval én primitív de működő megoldásra gondoltam:

-elsőként is ugye mindenképp külön akarom szedni a programot (ezalatt én a szubrutinokat értem)
- másodszor olyan ötletem támadt - lehet hogy elmebetegség , mivel megszakításokhoz még abszolúte nem értek , így arra gondoltam, hogy minden egyes szubrutin illetve macro ugyan annyi órajelet venne igénybe - a késletetést kivéve persze. És ehhez a "referencia órajelszámhoz" ki számolnám az eltelt időt, és ennek függvényében csinálnék egyetlen késleltetést, ami ezen referencia-órajelből-származó időt kiegészítené pontosan 1 másodpercre. Ergó a delay-t minden egyes szubrutinban meghívnám.

Vagy ez így kivitelezhetetlen?!?! (bár én inkább a maceráns jelzővel illetném)
(#) Reggie válasza norbigal hozzászólására (») Okt 21, 2011 /
 
Hidd el nekem, a megszakitasokhoz is pont annyira ertesz mint a tobbihez. Nem kell felni, neki kell ugrani, nehany apro kulonbseg van csak, de errol rengeteg cikk van. De tomoren osszefoglalva: a megszakitas elejen elmented a regisztereket, a vegen visszaallitod es ret helyet iret-tel tersz vissza. Kb. ennyi a kulonbseg, minden mas szempontbol olyan mint egy eljaras, ami nem kap parametert.

De ha nem szeretnel megszakitast, akkor eleg csak az idozito flag-jet figyelni, es nem kell az utasitasok idozitesevel bibelodnod. A flag pedig periodikusan fog beallni a kod futasidejetol fuggetlenul.
(#) sikolymester válasza norbigal hozzászólására (») Okt 21, 2011 /
 
Én akkor sem programoznék assemblyben, hogyha pisztolyt szorítanának a fejemhez.

Fogadj meg egy jó tanácsot, és inkább programozz C-ben, vagy felőlem akár Basicben.

Assembly manapság arra való, hogyha egy baromi időkritikus függvényt, vagy megszakítást akarnak megvalósítani, akkor azt használják. De hangsúlyozom, ennek csak akkor van értelme, ha valaki tényleg assembly guru.

Ezt a lineáris programozási őrületet pedig felejtsd el.
Hogyha egy pontos órát szeretnél, akkor használd az atmega8-t, amire tudsz külső 32,768 kHz-es kvarcot tenni, amivel bitang pontos másodperc alapot kaphatsz.

Ami az egy másodperces késleltetéseket illeti: hidd el az interrupt lefutása, ami kezeli majd a másodperc alapot sokkal rövidebb idő alatt lefut annál, hogy akár a legjobb kristály pontosságát képes lenne ténylegesen rontani.
(#) sitju hozzászólása Okt 21, 2011 /
 
Sziasztok!

Azt hiszem én is megfertőződtem az AVR-el. Nem foglalkoztam azelőtt mélyen elektronikával, inkább csak magasszinten programoztam (PC-t).
A lényeg, hogy szeretnék egy bluetooth-os távirányítást ez alapján:
http://uzzors2k.4hv.org/index.php?page=blucar

Avr programozásról annyit tudtam, hogy kell egy programozó hardver hozzá. Olcsón lehet kapni itt:
http://www.hestore.hu/prod_10024859.html

A hozzá tartozó leírásban szerepel, hogy "ISP felületű" Avr programozható vele. Kiválasztottam egy Avr-t a feladathoz ami hasonló a leírásban szereplőhöz:
http://www.hestore.hu/prod_10024915.html

Viszont a kép alapján más a tokozása(?) és szemmértékkel mérve ez nem illik a programozóba. Jó irányba haladok a feladat megoldásával vagy mellékvágányra tévedtem? Helyre rakna valaki?

(Nem tudom volt-e előttem hasonló jellegű kérdés, nem volt kedvem 367 oldalt végiglapozni)

A segítő szándékú válaszokat előre is köszönöm.
(#) TavIR-AVR válasza sitju hozzászólására (») Okt 22, 2011 /
 
A programozó amit kinéztél az AVR-Doper névre hallgat. A véleményeket a fórumban olvasdf el - eléggé érzékeny sokmindenre. Én inkább az önálló USB illesztővel ellátott STK500-at vagy MKII-t nézném ki (árban kicsit több (pl. nálam is ). De az AVR nem az USB emulációval _és_ a programozással foglalkozik ekkor...

A chipből NEM tiny hanem ATMega chipet néznék ki. Pláne nem SMD-t ...

Inkább egy ATMega 8 vagy ATMega16 családból választanék. A Tinyben nincs pl. Analog resz (megvilagitasmero, feszultsegmero). A Mega chipekben minden van, es arban is kb. itt van...

A programozas ISP-n at (ez a programozasi felulet, az 2*5 vagy 2*3 tuskesor. NEM foglalatba kell rakni az AVR-t es ugy programozni. Celaramkorben. Azaz ISP : In System Programming - a celhelyen programozhato.
(#) norbigal válasza Reggie hozzászólására (») Okt 22, 2011 /
 
Reggie
Hát magamtól nem vettem volna rá magam erre, de ha valóban ennyire érthető a megszakítás kezelés most már biztos hogy végére járok Ezt a peridodikusan belallithato flag-et nem értem, de majd keresgélek ez után is.

Sikolymester
MAximálisan megértelek, elvégre is még egy olyan nehéz, "szétszórt" és nyakatekert nyelvet mint assembly ritkán lát az ember. Mindenkitől ezt hallom. Néha még a saját - régebben megírt 8051-es - relatíve egyszerű progjamjaimat is újra kellett értelmeznem, hogy pontosan kihámozzam azt amit ÉN írtam meg... De egy dolgot szerintem kezdőként szem előtt kell tartanom: a mikrokontroller programozást alapoktól kezdve kizárólag assembly-ben tanultam, és bármennyire is hangzik hülyén: nekem kezelhetőnek tűnik.
Másrészről pedig megint egy elméleti szálat elkezdeni elég demotiváló lenne a "mikrokontrollerek gyakorlatának küszöbén állva"...(ez elég irodalmi volt) Nekem személy szerint fontosab hogy elkészüljön valami, mint az hogy milyen környezetben készül el. Mindenkinek az a legkönnyebb amit éppen megért.

Persze létszükségletnek érzem áttérni majd C-re, hisz végülis átlag felhasználói szinten tudom használni a C-t - de szerintem leghamarabb is csak hónapok múlva fogom a mikrokontrollerekhez alkalmazni
(#) Robi98 hozzászólása Okt 22, 2011 /
 
Sziasztok.
Szeretnék építeni egy PWM-es LED fényerő szabályzót, aminek a fénye nő és ha eléri a maximumot csökkenni kezd.A gond csak az, hogy nem tudom milyen előosztásnál, milyen gyors lesz a timer számlálása.(8Mhz-es órajelre gondolok).

[/OFF]Még sosem PWM-eztem.[OFF]
(#) Norberto válasza Robi98 hozzászólására (») Okt 23, 2011 /
 
Ha van otthon AVR-ed, és hozzávaló programozó, akkor ki kell próbálni, és próbálkozni, állítgatni az értékeket és vizsgálni a hatást!

És ezután már elmondhatod magadról, hogy már PWM-eztél. :yes:
(#) Fizikus válasza Robi98 hozzászólására (») Okt 23, 2011 /
 
Pedig nem olyan bonyolult az...
Pl. ha a procid 8MHz-en megy es az eloosztas 1, akkor 1 masodperc alatt 8 milliot lep a Timer. 8-as eloosztasnal 8millio/8-at, azaz 1 milliot, es igy tovabb...
(#) UbiLinux válasza norbigal hozzászólására (») Okt 23, 2011 /
 
Idézet:
„Néha még a saját - régebben megírt 8051-es - relatíve egyszerű progjamjaimat”


Hmmm... de hát abban is van megszakítás...!
(#) TavIR-AVR válasza Robi98 hozzászólására (») Okt 23, 2011 /
 
A kulcs:
Adatlap bogarászás

Egyszerűbb eset:
AVRCalc illetve KAVRCALC segédprogram. Ezek kiszámolják, és kiírják...
(#) norbigal válasza UbiLinux hozzászólására (») Okt 23, 2011 /
 
Igen abban valóban van, de nem véletlenül használtam az"egyszerű" jelzőt --> Ergó nincs benne megszakítás
(#) carpentt hozzászólása Okt 23, 2011 /
 
Sziasztok!

Az lenne a kérdésem, hogy a Topi féle AVR-Doper, USB-s ISP programozóval - http://www.hestore.hu/prod_10024859.html - lehet-e programozni egy LPC2146-os chipet?
Következő: »»   369 / 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