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   548 / 840
(#) ThompsoN válasza elektros90 hozzászólására (») Júl 10, 2013 /
 
Szia.

Bocsi a késői válaszért, de úgy tűnik a reset felhúzása tápfeszültségre megoldotta mindkét problémát. Jelen állás szerint az IC folyamatosan resetelt, ezért nem nyitottak a MOSFET-ek.
(#) TavIR-AVR válasza fecus hozzászólására (») Júl 10, 2013 /
 
FuseBitDoctor
Ez a legegyszerűbb.....
(#) Szabi1 hozzászólása Júl 10, 2013 /
 
Sziasztok!
Még csak most ismerkedek AVR-ekkel akarok csinálni egy LINE FOLLOWER robotot, ATTINY13A-val.

Rajzoltam egy elvi kapcsolási rajzot amiből kiindulok, valaki ellenőríze hogy így beköthetem az atmel IC-t? Az elem 6V-ot fog szolgálni. A kapcsoló lenyomására akarom hogy induljon azért van beépítve, motorvezérlő IC-t direkt nem akarok használni, itt csak előre,jobra, balra, kell menjen.

A programot majd megirom valamikor és feltöltöm, majd valaki átnézi majd? Elég sokat programoztam C++-ban de csak console appokat írtam PC-re
A hozzászólás módosítva: Júl 10, 2013

Névtelen.jpg
    
(#) TavIR-AVR válasza Szabi1 hozzászólására (») Júl 11, 2013 /
 
(#) fifadani hozzászólása Júl 11, 2013 /
 
Sziasztok!
Már sikerül összerakni fejből egy sima ledes vezérlést. Most szeretném kiegészíteni egy potméterrel. A lényeg annyi lenne, hogy ha a poti "feszültségosztójáról" 2,5 volt kerül az attiny13 ADC1-re akkor bekapcsol egy ledet. Tudtok ebben segíteni, hogy kell?

Köfi!
(#) neptunes4you hozzászólása Júl 11, 2013 /
 
Üdv mindenkinek! Szeretnék venni egy ilyen kijelzőt Bővebben: Link
Valakinek van hozzá működőképes programja? Értek az AVR-ekhez, de annyira azért nem hogy megírjam a sajátomat... Előre köszi!
(#) TavIR-AVR válasza fifadani hozzászólására (») Júl 11, 2013 /
 
Bascom alatt kb.
  1. $regfile = "t13def.dat"                                    ' we use the M163
  2. $crystal = 1200000
  3. $tiny
  4.  
  5. Config Adc = Single , Prescaler = Auto , Reference = Vcc
  6. Start Adc
  7.  
  8. Dim W As Word
  9.  
  10. Config Portb.1 = Output
  11.  
  12. Do
  13.  
  14. W = Getadc(2)                                              '2. csatorna beolvas
  15.  '0: 0, 1023:5V igy 2.5V: 512
  16. If W < 512 Then Reset Portb.1 Else Set Portb.1
  17. Loop
  18.  
  19. End


Fejpitesz ellen logopedusszzz!
(#) TavIR-AVR válasza neptunes4you hozzászólására (») Júl 11, 2013 /
 
Arduino Mega2560-hoz van készen. Az a háttérben C.
Szóval lehet Arduionoval, vagy átemeled C-re...
(#) neptunes4you válasza TavIR-AVR hozzászólására (») Júl 11, 2013 /
 
Nekem sima C kellene, azt szeretem
(#) Szabi1 hozzászólása Júl 11, 2013 /
 
Valaki átírná c/c++ ba a következőt?
  1. '-------------------------------------
  2. ' ! D E M O P R O G R A M !
  3. '-------------------------------------
  4. ' Code is consisted of 4 digits.
  5. ' 1 user code is entered in program.
  6. ' File:codelcd-D.bas you can download on:
  7. '
  8. ' Code is consisted of 1 to 4 digits.
  9. ' 1 user code is entered via keypad.
  10. ' File:codelcd.hex you can download on:
  11. ' http://www.avr.4mg.com/custom3.html
  12. '-------------------------------------
  13. ' Professional version:
  14. ' Code is consisted of 4 to 12 digits.
  15. ' File:codelcd6.hex,codelcd40.hex
  16. ' 6 or 40 user codes.
  17. ' Current in stand-by is 4 mA.
  18. '-------------------------------------
  19. '-------------------------------------
  20. 'Project: CodeLockAVR - LCD
  21. ' File:codelcd-D.bas
  22. 'Copyright: Rudi Slejkovec
  23. 'WWW: www.avr.4mg.com
  24. 'Device: Atmel AVR uC
  25. 'Date: 5.2.2005
  26. '-------------------------------------
  27.  
  28. $regfile = "2313def.dat"
  29. $crystal = 4000000
  30.  
  31. Dim Keyread As Byte
  32. Dim Key As Byte
  33. Dim Code As Word
  34. Dim Mycode As Word
  35. Dim Digits As Byte
  36. Dim Point As Byte
  37.  
  38. Ddrd = 255
  39. Portd = 0
  40.  
  41. Relay Alias Portd.4
  42. Beep Alias Portd.3
  43.  
  44. Config Kbd = Portb , Debounce = 40
  45.  
  46. Config Lcd = 16 * 2
  47. 'Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3
  48. 'Enable = Portd.6 , Rs = Portd.5
  49. '-------------------------------------
  50. 'Standard LCD 2x16; type:CMC216x01 or sim.; www.cct.com.my
  51. 'pin1: Ground(-)
  52. 'pin2: Supply(+)
  53. 'pin3: Supply(0V-5V DC) for LCD Contrast Level
  54. 'pin4: RS Signal
  55. 'pin5: R/W Selection
  56. 'pin6: Enable Signal
  57. 'pin7: Db0 (Data Bus Line)
  58. 'pin8: Db1 (Data Bus Line)
  59. 'pin9: Db2 (Data Bus Line)
  60. 'pin10: Db3 (Data Bus Line)
  61. 'pin11: Db4 (Data Bus Line)
  62. 'pin12: Db5 (Data Bus Line)
  63. 'pin13: Db6 (Data Bus Line)
  64. 'pin14: Db7 (Data Bus Line)
  65. 'pin15: Backlight Ground(-)
  66. 'pin16: Backlight Supply(+)
  67. '-------------------------------------
  68.  
  69.  
  70. '-------------------------------------
  71. Mycode = 5060
  72. '-------------------------------------
  73.  
  74.  
  75.  
  76. Do
  77.     Cls
  78.     Cursor Off Noblink
  79.     Lcd "WWW.AVR.4MG.COM"
  80.     Wait 2
  81.     Lowerline
  82.     Lcd "CodeLockAVRdemo"
  83.     Wait 4
  84.     Cls
  85.  
  86.     Set Beep
  87.     Waitms 100
  88.     Reset Beep
  89.     Waitms 100
  90.  
  91. Begin:
  92.     Code = 0
  93.     Digits = 0
  94.     Point = 0
  95.  
  96. Scan:
  97.     Cls
  98.     Lcd " Enter code"
  99. Do
  100.     Keyread = Getkbd()
  101.         If Keyread <> 16 Then Gosub Gotkey
  102.         Waitms 100
  103.             If Digits = 4 Then
  104.  If Code = Mycode Then
  105.  Goto Opendoor
  106.  Else
  107.  Goto Error
  108.  End If
  109.             End If
  110. Loop
  111.  
  112. Loop
  113.  
  114.  
  115.  
  116. Gotkey:
  117.     Ddrb = 255
  118.     Set Beep
  119.     Waitms 100
  120.     Reset Beep
  121.     Waitms 100
  122.  
  123.     Key = Lookup(keyread , Dta)
  124.  
  125.     Incr Digits
  126.     Point = Digits + 6
  127.     Locate 2 , Point
  128.     Lcd "*"
  129.     Code = Code * 10
  130.     Code = Code + Key
  131. Return
  132.  
  133. Dta:
  134.     Data 12 , 9 , 6 , 3 , 0 , 8 , 5 , 2 , 11 , 7 , 4 , 1
  135.  
  136. Error:
  137.     Cls
  138.     Lcd " Code wrong"
  139.     Waitms 100
  140.     Set Beep
  141.     Wait 3
  142.     Reset Beep
  143.     Wait 20
  144.     Goto Begin
  145.  
  146. Ok:
  147.     Waitms 100
  148.     Set Beep
  149.     Waitms 200
  150.     Reset Beep
  151.     Waitms 200
  152.     Set Beep
  153.     Waitms 200
  154.     Reset Beep
  155.     Return
  156.  
  157. Opendoor:
  158.     Cls
  159.     Lcd " Code accepted"
  160.     Gosub Ok
  161.     Lowerline
  162.     Lcd " Unlocked"
  163.     Waitms 300
  164.     Set Relay
  165.     Wait 1
  166.     Reset Relay
  167.     Wait 1
  168.     Goto Begin


Kapcsolás
A hozzászólás módosítva: Júl 11, 2013
(#) fifadani válasza TavIR-AVR hozzászólására (») Júl 11, 2013 /
 
C-ben ez, hogy néz ki?

up1.:
Mit gondolsz, kezdőnek inkább bascom-al kellene kezdenie mint C-vel?
A hozzászólás módosítva: Júl 11, 2013
(#) neptunes4you válasza fifadani hozzászólására (») Júl 11, 2013 /
 
Bár nem én vagyok a kérdezett, de szerintem C!
(#) fifadani válasza neptunes4you hozzászólására (») Júl 11, 2013 /
 
Én is erre hajlok, csak az a baj, hogy legtöbb leírás angolul van. Azt meg nehéz áthámozni úgy, hogy az angol tudásom hiányos...
(#) TavIR-AVR válasza fifadani hozzászólására (») Júl 11, 2013 /
 
C esetén:
- hardware
- software
- és a nyelvi finomságok mind egyszerre....

Én amit javasolni szoktam _nullkezdőknek_:
1. Arduino és a külső HW alapok (LED, prell stb)
2, C vagy Bascom fele nyitás - ill amit ismer/segítség van! De micropascal, ASM is lehet felúőlem

Kezdőnek: ATMega8 vagy ATMega128 chip (ez utóbbi ha a chipet _igazán_ akarja ismerni: JTAGICE debugger (vagy AVR-Dragon)).
(#) TavIR-AVR válasza Szabi1 hozzászólására (») Júl 11, 2013 /
 
Most kérsz valakitől kb. 2-4 óra fordítási/tesztelési munkát???
(#) Szabi1 hozzászólása Júl 12, 2013 /
 
Bővebben: Link
Az l293D-t ki lehet váltani tranzisztorral? Hátramenetre nincs szükség.
(#) zombee válasza Szabi1 hozzászólására (») Júl 12, 2013 /
 
Hát persze! pl. H-híd...
(#) zombee válasza Szabi1 hozzászólására (») Júl 13, 2013 /
 
Pl. ilyet. A típusokat most ne figyeld, hanem nézd a technikát!
A hozzászólás módosítva: Júl 13, 2013
(#) Robi98 hozzászólása Júl 14, 2013 /
 
Sziasztok!
Készítettem egy olyan négyszögjelgenerátort, aminek a frekvenciája egy potméter tekerésével egyenesen arányosan változik. A probléma az lenne, hogy a hangszóró sípolásán kívül néha recsegő, pattogó hangot hallok. A timer-t úgy állítottam be, hogy ha eléri a komparátori szintet, akkor a kimenet állapotot vált. Továbbá CTC módot választottam, ezáltal egyforma jeleket generál. A potméter értékét pedig egy 10 bites(1024) ADC-vel olvasom be, amit aztán egyenlővé teszek az OCR1A-val.
  1. // ATmega 8-as proci
  2.  
  3. #include <avr/io.h>
  4. #include <util/delay.h>
  5.  
  6. uint16_t beolvasADC(void)
  7. {
  8. ADCSRA|=1<<ADSC;
  9. while(ADCSRA & (1<<ADSC));
  10. return(ADCL|ADCH<<8);// 10 bit-es értéket kapok
  11. }
  12.  
  13. int main (void)
  14. {
  15. DDRB|=1<<PB1;// PB1-es láb kimenet
  16. TCCR1A|=1<<COM1A0;// váltott állapotú, CTC mód
  17. TCCR1B|=1<<WGM12|1<<CS10;// 1-es előosztás
  18. //****************************************************
  19. ADMUX|=1<<REFS0|1<<MUX0;// 5 volt referenciafeszültség
  20. ADCSRA|=1<<ADEN|1<<ADPS0|1<<ADPS1;// 8-as előosztás
  21. TCNT1=0;
  22.  
  23.    while(1)
  24.    {
  25.        OCR1A=beolvasADC();
  26.    }
  27. }


Ha a potméter szélső állásban van akkor 1000000Hz/1024=976.5625Hz
A másik szélső állásban pedig 1000000Hz/1=1000000Hz amit az emberi fül már nem érzékel.

A kérdésem az lenne, hogy mitől van a recsegő mellékzaj, valamint, hogy a proci elbírja-e a 8 Ohm-os hangszórót(5V/8=0.625A)?
A hozzászólás módosítva: Júl 14, 2013
(#) Topi válasza Robi98 hozzászólására (») Júl 14, 2013 /
 
"Recsegő mellékzaj" akkor lehet, amikor a TCNT értéke nagyobb mint a CTC módban az OCR értéke.
Ilyenkor kimarad a compare esemény, és egy teljes overflow után áll csak helyre a "billegés". Minden esetben vizsgáld meg, hogy a TCNT nem nagyobb az OCR-nél.
(#) Robi98 válasza Topi hozzászólására (») Júl 14, 2013 /
 
Nemigazán értem. A TCNT nem csak az OCR-ig számol CTC módban?
(#) kapu48 válasza Robi98 hozzászólására (») Júl 14, 2013 /
 
Mikor felülírod (csökken az értéke) az OCR-t, a TCNT nem nullázódik!
Hanem tovább számol, míg átfordul, és 0-ról újra kezdi.
(#) johny999 hozzászólása Júl 14, 2013 /
 
Nincs senkinek semmi ötlete erre a problémára? Bővebben: Link

(#) kapu48 válasza johny999 hozzászólására (») Júl 14, 2013 /
 
Biztos a CPU 8000000Hz?
Fuse Biteknél nincsen bekapcsolva a 8-as órajel osztás?
(#) johny999 válasza kapu48 hozzászólására (») Júl 14, 2013 /
 
Makefilebe F_CPU = 8000000 van úgyhogy biztos.
Azt a fuse bitet hol tudom megnézni?
(#) johny999 válasza johny999 hozzászólására (») Júl 14, 2013 /
 
Úgy nezem default be van kapcsolva. Kikapcsolni úgy lehet hogy pld. itt kiveszem a pipát a CKDIV8-tól majd amit kidob -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m ezt beteszem a makefileba?
(#) Robi98 válasza kapu48 hozzászólására (») Júl 14, 2013 /
 
Köszi a magyarázatot, így már értem. Viszont még most sem sikerül, mert ezt írtam:
  1. while(1)
  2.    {
  3.     if(TCNT1<OCR1A)  OCR1A=beolvasADC();
  4.    }

És most már semmilyen hangot nem ad ki a hangszóró.
A hozzászólás módosítva: Júl 14, 2013
(#) johny999 válasza kapu48 hozzászólására (») Júl 14, 2013 /
 
Köszi, ez volt a hiba. Most már a megfelelő frekvencián muzsikál a piezom.
(#) Topi válasza Robi98 hozzászólására (») Júl 15, 2013 /
 
  1. while(1) {
  2.   OCR1A = beolvasADC();
  3.   if(TCNT1>OCR1A) TCNT1 = 0;  //ez csak akkor hajtódik végre, ha a módosított OCR miatt nem venné észre a compare-t (mert már túlhaladott rajta)
  4. }
Következő: »»   548 / 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