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   358 / 840
(#) Axel hozzászólása Szept 6, 2011 /
 
Sikolymester és Cavalier, köszi szépen!
(#) yoman917 hozzászólása Szept 6, 2011 /
 
Sziasztok!
Attiny2313-al készítettem egy PWM-es ventillátorszabályzót. Azt akartam elérni vele, hogy 0-255-ig randomra váltogatja a beírt számokat, így a ventillátor hol maxon forog, hol épphogy csak megy, néha persze leáll. A kérdésem a következő: Nem ad le 5V-ot, próbáltam ledet rákötni, de azzal sem kap 5V-ot, saccolásom szerint olyan 3V jöhet ki rajta. Szerintetek mi lehet a baj?
Forráskód:


  1. #include <avr/io.h>
  2. #define F_CPU 8000000UL
  3. #include <util/delay.h>
  4.  
  5.         //     
  6.  
  7. void PWMInit()
  8. {                               DDRB = (1<<PB2) | (1<<PB3) | (1<<PB4);
  9.                                 DDRD = (1<<PD5);
  10.                 TCCR0A =  (1<<COM0A1)
  11.                |  (0<<COM0A0)
  12.                            |  (1<<COM0B1)
  13.                |  (0<<COM0B0)                      
  14.                            |  (1<<WGM01)
  15.                |  (1<<WGM00)
  16.                            ;
  17.                        
  18.                 TCCR0B = (0<<WGM02)
  19.                                 | (1<<CS02)
  20.                                 | (0<<CS01)
  21.                                 | (0<<CS00)
  22.                                 ;
  23.  
  24.                 TCCR1A = (1<<COM1A1)
  25.                                 | (0<<COM1A0)
  26.                                 | (1<<COM1B1)
  27.                                 | (0<<COM1B0)
  28.                                 | (1<<WGM10)
  29.                                 | (1<<WGM12)
  30.                                 ;
  31.                 TCCR1B = (1<<CS12)
  32.                                 | (0<<CS11)
  33.                                 | (0<<CS10)
  34.                                 ;
  35.  
  36.                    OCR0B  = 0xFF;
  37.            OCR1A  = 0xFF;
  38.                    OCR0A = 0xFF;
  39.                    
  40.                  
  41.  
  42. }
  43.  
  44. int main (void)
  45. {
  46.        
  47.         PWMInit();
  48.                
  49.                         while(1)
  50.                 {  
  51.                         OCR0A=rand(255);
  52.                         _delay_ms(1000);
  53.                         OCR0B=rand(255);
  54.                         _delay_ms(1000);
  55.                         OCR1A=rand(255);
  56.                         _delay_ms(1000);
  57.                
  58.                        
  59.  
  60.  
  61.                 }
  62.                 }



Üdv,
yoman
(#) Thowra hozzászólása Szept 7, 2011 /
 
Üdv mindenkinek!
Egy Atmega16 hoz lenne szükségem bootloaderrre.
Sajnos szoftveres uart van csak (a hardveres lábai foglaltak). Tud esetleg valaki olyan bootloadert ami képes szoftveres uarton működni? Bascomot használok a fejlesztéshez. Előre is köszönöm.
(#) zombee válasza Thowra hozzászólására (») Szept 7, 2011 /
 
Bascom alatt találsz egy csomó programozási lehetőséget. Ahol bootloadert látsz(arduino, MCS) és COM portot(pl. a FLIP csak USB-n megy), mindegyiknél keress rá guglin, hátha akad olyan is ami szoftveres.
(#) zombee válasza yoman917 hozzászólására (») Szept 7, 2011 /
 
1: tettél rá aluláteresztő szűrőt?
2: a PWM max. 0-255-ig megy.
A "széleken" vagy nem teljesen 0(inverz PWM) vagy a maximum kimenet is meg van szaggatva.
Szűrő ÉS terhelés nélkül a kimenet különálló életre kel. De talán a terhelés fontosabb...
(#) kovacsj hozzászólása Szept 7, 2011 /
 
Sziasztok!

Mi tulajdonképpen a brown-out az Atmeleknél?

Köszönöm előre is!
(#) kovacsj válasza kovacsj hozzászólására (») Szept 7, 2011 /
 
Ha jól értelmezem, a feszültség csökkenése esetén csinál egy reset-et és egy bizonyos ideig késlelteti az indítást?
(#) yoman917 válasza zombee hozzászólására (») Szept 7, 2011 /
 
Hello,
Nem tettem rá szűrőt. Ha jól értelmezem, akkor a pwm terhelés nélkül ad ki 5V-ot?
(#) zombee válasza yoman917 hozzászólására (») Szept 7, 2011 /
 
Nem egészen 5V-ot, mert a szórt kapacitások is közrejátszanak. Inkább úgy nevezném hogy
szűrő nélkül csak egy négyszögjelet kapsz. A szűrő azért kell hogy ezt egy analóg feszültségértékre átalakítsd.
A terhelés pedig azért, hogy folyamatos legyen a vezetés. A szaggatott vezetési tartományban
a kimenőfeszültség mindig nagyobb mint a kitöltési tényező és az AVR feszültségének szorzata.

Van egy képlet de sajnos nem jut eszembe hogy minimum mekkora terhelés kell(mA-ben).
Valami ilyesmi: I(min) = k/f*L*C; ahol f a frekvencia, C a szűrőkondi, L a szűrőtekercs, a k-t most nem tudom fejből.
(#) pityu_lite hozzászólása Szept 7, 2011 /
 
Sziasztok
megakadtam egy kommunikációs dologban. 2vezetékes rendszer lenne több AVR között, de most valamiért nem megy. 1 Master és több slave eszköz lenne( mind ATmega IC).
Remélem tudtok segíteni mit rontok el. Tehát a master rész:
  1. void TWIM_Init (uint32_t TWI_Bitrate)
  2.         {
  3.         TWBR = ((F_CPU/TWI_Bitrate)-16)/2;     
  4.         }
  5.  
  6. uint8_t TWIM_Start (uint8_t Address, uint8_t TWIM_Type)
  7.         {
  8.         uint8_t         twst;
  9. /*
  10. ** Send START condition
  11. */
  12.         TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
  13. /*
  14. ** Wait until transmission completed
  15. */
  16.         while (!(TWCR & (1<<TWINT)));
  17. /*
  18. ** Check value of TWI Status Register. Mask prescaler bits.
  19. */
  20.         twst = TWSR & 0xF8;
  21.         if ((twst != TWI_START) && (twst != TWI_REP_START)) return FALSE;
  22. /*
  23. ** Send device address
  24. */
  25.         TWDR = Address + TWIM_Type;
  26.         TWCR = (1<<TWINT)|(1<<TWEN);
  27. /*
  28. ** Wait until transmission completed and ACK/NACK has been received
  29. */
  30.         while (!(TWCR & (1<<TWINT)));
  31. /*
  32. ** Check value of TWI Status Register. Mask prescaler bits.
  33. */
  34.         twst = TWSR & 0xF8;
  35.         if ((twst != TWI_MTX_ADR_ACK) && (twst != TWI_MRX_ADR_ACK)) return FALSE;
  36.  
  37.         return TRUE;
  38.         }
  39.  
  40. void TWIM_Stop (void)
  41.         {
  42. /*
  43. ** Send stop condition
  44. */
  45.         TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
  46. /*
  47. ** Wait until stop condition is executed and bus released
  48. */
  49.         while (TWCR & (1<<TWINT));
  50.         }
  51.  
  52. uint8_t TWIM_Write (uint8_t byte)
  53.         {
  54.         uint8_t   twst;
  55. /*
  56. ** Send data to the previously addressed device
  57. */
  58.         TWDR = byte;
  59.         TWCR = (1<<TWINT)|(1<<TWEN);
  60. /*
  61. ** Wait until transmission completed
  62. */
  63.         while (!(TWCR & (1<<TWINT)));
  64. /*
  65. ** Check value of TWI Status Register. Mask prescaler bits
  66. */
  67.         twst = TWSR & 0xF8;
  68.         if (twst != TWI_MTX_DATA_ACK) return 1;
  69.  
  70.         return 0;
  71.         }


A main fv-ben csak 1-1 bájtot küldenék próbaképp.
  1. ...
  2. TWIM_Init (100000);
  3.         _delay_ms(100);
  4. while(1)
  5.         {
  6.         if (!TWIM_Start (SlaveAddress, TWIM_WRITE))
  7.                         {
  8.                         TWIM_Stop ();
  9.                         }
  10.                 else
  11.                         {
  12.                        
  13.                         TWIM_Write (adat);
  14.                        
  15.                         TWIM_Stop ();
  16.                         }              
  17.         }


A slave eszközben a kód:

  1. uint8_t TWIS_Init (uint8_t Address, uint32_t Bitrate)
  2.         {
  3. /*
  4. ** Set the TWI bitrate
  5. ** If TWBR is less 11, then error
  6. */
  7.         TWBR = ((F_CPU/Bitrate)-16)/2;
  8.         if (TWBR < 11) return FALSE;
  9. /*
  10. ** Set the TWI slave address
  11. */
  12.         TWAR = Address;
  13. /*
  14. ** Activate TWI interface
  15. */
  16.         TWCR = (1<<TWEN)|(1<<TWEA);
  17.  
  18.         return TRUE;
  19.         }
  20.  
  21. uint8_t TWIS_ReadAck (void)
  22.         {
  23.         TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);
  24.         while (!(TWCR & (1<<TWINT)));
  25.         return TWDR;
  26.         }
  27.  
  28. main()
  29. ...
  30. TWIS_Init (TWI_addres, 100000);
  31.         while(1)
  32.         {
  33.                 if ((TWCR & (1<<TWINT)))
  34.                 {
  35.                   adat=TWIS_ReadAck ();
  36.                 }
  37. ....
  38.          }

Az F_CPU mindekét programban 8MHZ.
A TWI címek természetesen ugyanazok.
Ha adat érkezik a slave-re akkor próbának fel kéne gyulladni egy lednek de az nem történik meg.
A master-en is ha a bájt átküldés végbement akkor is egy led jelezné hogy eljutott odáig a program, de ez se történik meg ! Esetleg tudtok valami tippet adni vagy valami forrást ahol működő master slave kód esetleg elérhető lenne? Sokadik próbálkozásra se akar menni
(#) pityu_lite hozzászólása Szept 7, 2011 /
 
Üdv újra.
Ezen honlapos megoldás is már sokadik átdolgozásra került nálam, de még mindig nem megy.
http://www.rn-wissen.de/index.php/TWI_Slave_mit_avr-gcc
Ezalapján a master részem ilyen :
  1. #include <avr/io.h>
  2. #include "i2cmaster.h"  
  3. #include "delay.h"
  4. #define SLAVE_ADRESSE 0x50
  5.  
  6. int main(void)
  7. {
  8.         char matrix[]={0,1,1,1,0,0,1,0,1,1};
  9.         int i;
  10.         DDRD=0b01000110;
  11.         DDRC=0xFF;
  12.        
  13.         i2c_init();
  14.         i=0;
  15.        
  16.     while(1)
  17.     {
  18.                 PORTD|=1<<PD6;
  19.                 _delay_ms(100);
  20.                 if(!(i2c_start(SLAVE_ADRESSE+I2C_WRITE)))
  21.                 {
  22.                         _delay_ms(250);
  23.                        
  24.                         i2c_write(matrix[i]);
  25.                        
  26.                         i2c_stop();      
  27.                         if (i==9)
  28.                         {
  29.                                 i=0;
  30.                         }
  31.                         else
  32.                         {
  33.                                 i++;
  34.                         }
  35.                 }
  36.                 _delay_ms(250);
  37.                 PORTD&=~(1<<PD6);
  38.                 _delay_ms(250);
  39.     }
  40. }


A slave pedig ilyen :
  1. #include <avr/io.h>
  2. #include <util/twi.h>    
  3. #include <avr/interrupt.h>
  4. #include "delay.h"
  5. #include "twislave.h"
  6. #include <stdint.h>        
  7.  
  8. #define SLAVE_ADRESSE 0x50
  9.  
  10. volatile uint8_t matrix[i2c_buffer_size+1];
  11. volatile uint8_t buffer_adr;
  12.  
  13. void init_twi_slave(uint8_t adr)
  14. {
  15.         TWAR= adr;
  16.         TWCR &= ~(1<<TWSTA)|(1<<TWSTO);
  17.         TWCR|= (1<<TWEA) | (1<<TWEN)|(1<<TWIE);        
  18.         buffer_adr=1;  
  19.         sei();
  20. }
  21.  
  22.  
  23. #define TWCR_ACK TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|(0<<TWWC);  
  24.  
  25.    
  26. #define TWCR_NACK TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|(0<<TWWC);
  27.  
  28.  
  29. #define TWCR_RESET TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(1<<TWEA)|(0<<TWSTA)|(1<<TWSTO)|(0<<TWWC);  
  30.  
  31.  
  32. ISR (TWI_vect)  
  33. {
  34. uint8_t data=0;
  35.  
  36. switch (TW_STATUS)
  37. {
  38.  
  39. // Slave Receiver
  40.  
  41. case TW_SR_SLA_ACK: // 0x60 Slave Receiver, Slave wurde adressiert     
  42.         TWCR_ACK; // nächstes Datenbyte empfangen, ACK danach senden
  43.         buffer_adr=1; //Bufferposition ist undefiniert
  44. break;
  45.        
  46. case TW_SR_DATA_ACK: // 0x80 Slave Receiver, ein Datenbyte wurde empfangen
  47.         data=TWDR; //Empfangene Daten auslesen
  48.         buffer[buffer_adr]=data;
  49.         if (buffer_adr==10)
  50.         {
  51.                 buffer_adr=1;
  52.         }
  53.         else
  54.         {
  55.                 buffer_adr++;
  56.         }
  57.         TWCR_ACK;      
  58.        
  59. break;
  60.  
  61.  
  62. //Slave transmitter
  63.  
  64. case TW_ST_SLA_ACK: //0xA8 Slave wurde im Lesemodus adressiert und hat ein ACK zurückgegeben.
  65.         //Hier steht kein break! Es wird also der folgende Code ebenfalls ausgeführt!
  66.        
  67. case TW_ST_DATA_ACK: //0xB8 Slave Transmitter, Daten wurden angefordert
  68.         TWCR_ACK;
  69. break;
  70.  
  71. case TW_ST_DATA_NACK: // 0xC0 Keine Daten mehr gefordert
  72. case TW_SR_DATA_NACK: // 0x88
  73. case TW_ST_LAST_DATA: // 0xC8  Last data byte in TWDR has been transmitted (TWEA = “0”); ACK has been received
  74. case TW_SR_STOP:      // 0xA0 STOP empfangen
  75. default:        
  76.         //TWCR_ACK;
  77.     TWCR_RESET;
  78. break;
  79.        
  80. } //end.switch (TW_STATUS)
  81. }
  82.  
  83.  
  84. void init()
  85. {
  86.         DDRD=0xFF;
  87.         DDRC=0b11110111;
  88.         PORTC&=0xF7;
  89.         DDRB=0xFF;
  90. }
  91.  
  92. int main(void)
  93. {
  94.         char adat,sor,oszlop;
  95.         int index,i;
  96.         init();
  97.         init_twi_slave(SLAVE_ADRESSE);
  98.     while(1)
  99.     {
  100.                 if (buffer[buffer_adr-1]==1)
  101.         {
  102.                         PORTD|=1<<PD6;
  103.         }
  104.         else
  105.         {
  106.                         PORTD&=~(1<<PD6);
  107.         }
  108.        
  109.     }
  110. }

Na ekkor ha nincs összekötve a 2 eszköz akkor a master-en villog a led, mert az i2c_start hibával tér vissza.
Amint rákötöm a slave eszközt a led folyamatosan ég.. Nem lép tovább. és a slave-en persze nem kezd el égni a led szóval nem megy át adat.
Azt még megnéztem hogy a vezetékek ilyenkor "megfagyott" állapotban hogy állnak :
SCL : 5V
SDA : ~0V
(#) pityu_lite hozzászólása Szept 8, 2011 /
 
Nos éjjel még szkópot sikerült szerválnom
Tapasztalat : ha slave eszköz nincs rádugva a masterra akkor szépen kiadja a start utasítást az adress bájttal együtt, de nincs válasz és villog a led ezért.. SCL és SDA lábakon mérhető az adatmozgás. Amint rádugom a slave-t a start bitnél megáll az egész. az SDA láb a földön marad... Ez miért lehet?
(#) painkillerperoxi válasza zombee hozzászólására (») Szept 8, 2011 /
 
Félsiker!
Beraktam egy 100nF kondit amitől már megjelentek hibás karakterek, és néha a tényleges hőmérséklet is fel fel villant. A ckdiv8-at kivettem már az első próbálkozásnál, mert nem ment fel másképp a progi, és végül kivettem a kvarcot ennek hatására a következő figyelhető meg: bekapcsoláskor 34C-t ír, majd 9C-t és aztán jön a vicces rész hibás karaktereket írkál másodpercenként változtatva, majd kb 10sec elteltével kiírja a tényleges hőmérsékletet, majd néha valami nonfiguratívat, majd ismét a helyes hőmérsékletet.
Nem tudom mire vélni, de végülis működik, úgyhogy köszönöm a segítségeteket!

Üdv: Krisztián
(#) pityu_lite válasza pityu_lite hozzászólására (») Szept 8, 2011 /
 
Sziasztok,
megoldódott!
Esetleg aki tanulni szeretne a hibámból :
Amint a TWI hardvert aktiválom , az SDA láb az IC-n belül pár kOhm -os mérhető ellenállással lekerült a földre és onnan el se mozdult. Amúgy minden más funkció tökéletesen működit az IC-n, csak ez nem. IC cserével a TWI lábak is tökéletesen működnek.

Pityu
(#) sikolymester válasza kovacsj hozzászólására (») Szept 8, 2011 /
 
Pontosan erre való. Hiszen túl alacsony feszültségen hibák történhetnek az áramkörben. Sokszor pedig jobb, ha egy egység semmit sem csinál, mintsem, hogy azt hibásan tegye. Ekkor jön jól a brown out reset
(#) koczka hozzászólása Szept 9, 2011 /
 
Üdv.

Hex to ascii táblázatot keresek tudnátok-e segíteni?
(#) sikolymester válasza koczka hozzászólására (») Szept 9, 2011 /
 
(#) Hp41C válasza sikolymester hozzászólására (») Szept 9, 2011 /
 
Tessék választani...
(#) yoman917 hozzászólása Szept 9, 2011 /
 
Sziasztok!
Az a kérdésem, hogy az AVR egyik lábát +5V-ról áttudom e kapcsolni testre, és ha igen, akkor hogyan?
Üdv,
yoman
(#) TavIR-AVR válasza yoman917 hozzászólására (») Szept 9, 2011 /
 
???

I/O lábat igen.A megfelelő bitjébe írj 0-t (Portx.y=0)
(#) yoman917 válasza TavIR-AVR hozzászólására (») Szept 9, 2011 /
 
Olyat szeretnék csinálni, ha az AVR egyik lábát letestelem, akkor 3 lábat testre kapcsol, és másik 3 lábat +5V-ra? Már egy ideje szenvedek vele de nem nagyon sikerül
(#) zombee válasza yoman917 hozzászólására (») Szept 9, 2011 / 1
 
  1. DDRB = 0b01111110;
  2. if(!(PINB&1)) PORTB = 0b01110000;
  3. else ...


Tehát: PORTB.0-át figyeljük. Ha testre kötöd és ezután a program ráfut az "if"-es részre, teljesül a vágyad:
A PORTB.4,5,6 beáll 1-re(+5V), a PORTB.1,2,3 földre(0V).
(#) freechat hozzászólása Szept 9, 2011 /
 
6 gombot szeretnék rákötni egy AVR-re 2 dróttal.
Az elgondolás az, hogy egy Analóg bemenetre kötném rá a gombokat amiknél ellenállásos feszültségosztással tudnám mikor melyik gombot nyomta le.

A szoftver részével nincs gondom, de a gombok kapcsolási rajza nagy segítség lenne számomra illetve az, hogy ez így működhet-e?
Egyszerre csak egy lenyomott gombot kell érzékelnie.
(#) zombee válasza freechat hozzászólására (») Szept 9, 2011 /
 
A 2 dróttal használhatsz I2C expandert is. Analóg portra elég 1 is. Ha egyszerre valóban csak 1 gomb lesz rákötve akkor ellenállásosztót használj úgy, hogy egy közös ellenállás húzza fel az 5V-ra a portot, majd rákötöd a gombokat amiken keresztül különböző ellenállásértékekkel a földre kapcsolódnak. Ne az ellenállásokat kalkuláld hanem a kimenő feszültséget. Szűrőtől és zavarjelektől függően minimum 5-10%-os lépésközök legyenek! Egy bizonyos korlátig az R-2R létra is használható. Korlátozottan, mert a gombok csak lenyomott állapotban vezetnek. De ha pl. 33-100Ohm a felhúzó ellenállás a gombokon és a létrán az R=10-22kOhm, akkor az egyszerre lenyomott gombokat is fel tudod ismerni!
(#) Damian666 hozzászólása Szept 10, 2011 /
 
Helósztok, Találtam 1 tachometer progit, atmega 16-hoz, forráskód .c-ben van. de mihelyt én hex-re akarom fordítani, minden féle hibát talál, alapból nem talál pl: mega16.h-t meg a többi ilyen dolgot sem. mi lehet ennek az oka?

Egyébként bármit próbálok hex-re átalakítani, minden proginál et csinálja

hiba.JPG
    
(#) sikolymester válasza Damian666 hozzászólására (») Szept 10, 2011 /
 
io.h -t includeolj mega16 helyett. Az avr tipusa a project propertiesben legyen beallitva. Tovabba a delay.h az util/delay.h ha jol emelkszem.
(#) zombee válasza Damian666 hozzászólására (») Szept 10, 2011 / 1
 
A forráskódot ilyenkor illik automatikusan csatolni, valószínű hogy ebbe a hozzászólásba
már adtam volna a kijavított kódot. De már látszik hogy a legelső soroknál mi a gebasz:
A beszúrandó könyvtárakat "helyben" keresi, miközben azok máshol és másképp helyezkednek el.
Például a delay.h az így érhető el: util/delay.h
Emlékezetem szerint mega16.h sincs már, én arra tippelek hogy ezt még valami régebbi C fordító alá írták.
A mega16.h helyett avr/io.h használata ajánlott. A szerepe ugyanaz, csak ez mindenhová jó...
(#) Reggie válasza Damian666 hozzászólására (») Szept 10, 2011 / 1
 
Az avr-lib nem is tartalmaz mega16.h, bcd.h fajlokat. delay.h van csak util/delay.h -t kell include-olni, de van egy olyan erzesem, hogy ez a delay.h nem biztos, hogy az amit a te programod keres.
Ugy tudom, hogy ezek a "Codevision C compiler for AVR" nevu fordito eseten hasznalatosak.
Esetleg megprobalhatod a mega16.h helyere az avr/io.h -t irni. A bcd.h-ban lenyegeben ket fuggveny van:
unsigned char bcd2bin(unsigned char n)
unsigned char bin2bcd(unsigned char n)

Ezeknek nincsen megfeleloik az avr-libc-ben, viszont konnyen implementalhatoak:
  1. unsigned char bcd2bin(unsigned char n) { return (n>>4)*10+(n&0x0F); }
  2. unsigned char bin2bcd(unsigned char n) { return (n%10) + (n/10)<<4; }
(#) Damian666 válasza sikolymester hozzászólására (») Szept 10, 2011 /
 
az util/delay.t elfogadta, de az io.h-t nem, és nagyon sok hasonló van :S

csatolom a progit :S Hátha jobb ha látod köszönöm előre is.

tachometer1.c
    
(#) Damian666 válasza Reggie hozzászólására (») Szept 10, 2011 /
 
Sajnos én nem értek ennyire az avr-ekhez, sem a programozáshoz, szeretném megtanulni, de az nem 1-2 óra köszömöm
Következő: »»   358 / 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