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   578 / 840
(#) vzoole válasza yohnsee hozzászólására (») Dec 19, 2013 /
 
(#) Sick-Bastard válasza rigomate hozzászólására (») Dec 20, 2013 /
 
Még esélyesebb lett, hogy vége van. A reset lábra kötött COM1 vezeték -10V-on volt a földhöz képest... Ezek szerint valamit tuti elnéztem a szintillesztőnél.
(#) Fizikus válasza yohnsee hozzászólására (») Dec 20, 2013 /
 
Az ADC-rol ezt a cikket olvassad el:
AVR ADC
(#) yohnsee válasza vzoole hozzászólására (») Dec 20, 2013 /
 
vzoole: neked is és Fizikus-nak is köszönöm a linkeket!
Beleásom magam, remélem megértek mindent, ha esetleg valami még homály lesz, kérdezek!
(#) ThompsoN hozzászólása Dec 21, 2013 /
 
Sziasztok.

Tudom, hogy amatőr kérdés, de nem találom rá a választ. Van egy Atmega8515 mikrokontrollerem, és egy 8MHz-es külső kvarcról szeretném neki adni az órajelet. A fuse bitek beállításánál az alábbi listából melyiket kéne választanom?

clocks.png
    
(#) vzoole válasza ThompsoN hozzászólására (») Dec 21, 2013 /
 
Ext. Crystal/Resonator
Azon belül Mid vagy High. Mindegy, mert pont határon van.
A Start up time legyen a leglassabb, ha nem kritikus az alkalmazásodban (általában nem szokott).

Ext. Crystal/Resonator Mid freq, Start-up time: 16K CK + 64ms
A hozzászólás módosítva: Dec 21, 2013
(#) ThompsoN válasza vzoole hozzászólására (») Dec 21, 2013 /
 
Értem, köszönöm.
(#) Addye hozzászólása Dec 21, 2013 /
 
Sziasztok! Segítséget szeretnék kérni egy AtMega644 felprogramozásában. Keszthely, Hévíz közelében tudna segíteni valaki ebben? Nincs saját égetőm és még nem is csináltam ilyet, ezért is kellene a segítség. Előre köszönöm mindenkinek!
(#) Addye válasza Addye hozzászólására (») Dec 22, 2013 /
 
Sziasztok!

Módosult annyival a dolog, hogy a mellékelt kapcsolásban lévő AVR-t kellene ugye felprogramozni és van hozzá egy ISP csatlakozó is a kapcsolásban. Mellékeltek hozzá egy egyszerű LPT portos csatlakozást. PonyProg-gal megpróbálkoztok úgy, hogy csak simán, a mellékelt LPT-ISP átalakítóval rákötöm LPT portra és úgy programozom?
(#) yoman917 hozzászólása Dec 22, 2013 /
 
Sziasztok

Segítség kellene. Mérem a hőmérsékeletet egy NTC-vel. Ha 3 fok alá esik, azt szeretném ha pl egy led felvillanna 3 mp-ig. De ha a hőmérséklet továbbra is 3 fok alatt marad, akkor ne villanjon ki újra 3 mp-ig. Lényeg, hogy hogyan tudnám megoldani, hogy ez a feltétel csak egyszer futna le a főprogramban? (Mert ha simán a while-ba teszem be egy if feltétellel, akkor a program végrehajta, mindig, amikor a hőmérséklet 3 fok alá esik.)
(#) Zsolt2 válasza yoman917 hozzászólására (») Dec 22, 2013 / 1
 
Amikor felvillan a led egy flag-et 1-re allitasz es csak akkor nullazod amikor ismet megemelkedett a homerseklet. A villanas feltetelenel meg figyeled a homersekletet es a flag-et is.
(#) kiborg válasza Reggie hozzászólására (») Dec 24, 2013 /
 
Szia!

Írtam egy programot, ami egy H-haddal vezérel egy kis DC motort,pwm-el.
Bluetooth modullal küldöm neki a pwm értékét.
Elindítom a motort, de egy idő után reset lesz a vége. JTAG-al csatlakozom a Mega16-hoz.
Ha csatlakozom az MCU-hoz, akkor mindig az External Reset Flag és JTAG Reset Flag van 1-ben. A JTAG Res Flag-ot még értem, mert csatlakozáskor a JTAG reseteli az MCU-t, de az External Reset hogy kerülhet oda ? Ha csak csatlakozom és bontom a kapcsolatot, akkor is megjelenik az External Reset Flag.
Viszont ha csatlakozva vagyok és úgy futtatom a programot, és Resetelődik az áramkör, akkor újra kell csatlakoznom, de akkor már csak az adott két bit aktív, de mégis volt reset. Mikor olvassam ki ? Alkalmas ez a módszer egyáltalán az MCUCSR ilyesféle kiolvasására?
Üdv Kiborg
(#) TavIR-AVR válasza kiborg hozzászólására (») Dec 25, 2013 /
 
Külső reset:
- nincs 4k7..10k felhúzóellenállás
- zajos a resetkábel (közösen megy a motor táppal, és induktív zajt szed össze),
- nincs ott a GND és a Reset közt a 100nF kerámiakondi.

Egyéb reset tipp:
- BOD be van kapcsolva? 5V esetén 4.3V-ra, 3.3V esetén 2.7V-ra. A tápfeszmegrántás így kimutatható (BOD resetet is jelez az MCUSR).
(#) kiborg válasza TavIR-AVR hozzászólására (») Dec 25, 2013 /
 
Szia!
-felhúzóelenállás van, értéke:10kohm
-ott van a 100nF-os hidegítőkondi a GND és a Reset között.
-A motor és a vezérlő külön tápról megy, csak a GND a közös. A vezérlő 3-5 cm-re van a motortól, viszont a felhúzóellenállás és a hidegítő kondi a vezérlő közvetlen közelében van, a legrövidebb vezetékkel.

Megpróbálom a BOD-t.
Amúgy így reális képet az a JTAG-al való kiolvasás Reset után?
Kiborg

Kiegészítés: megnéztem, 3,3Von használom, és engedélyezve volt, de nem volt aktív az MCUCSR-ben a BOD jelzés.
A hozzászólás módosítva: Dec 25, 2013
(#) zsuscsinyo válasza kiborg hozzászólására (») Dec 25, 2013 /
 
Ha használsz megszakítást, minden ISR rutin létre van hozva?
(#) kiborg válasza zsuscsinyo hozzászólására (») Dec 25, 2013 /
 
Szia!

Igen.Illetve nem. ASM-ben csinálom. Csak az van létrehozva, ami kell. A többi csak egy reti-vel lezárva.

Viszont létezhet, az hogy a motor kapcsolási frekvenciáját módosítom, akkor megszűnik a jelenség?

  1. .include        "m16Adef.inc"
  2. .include        "macro.inc"
  3. .ORG    0x0000
  4.         jmp     RESET
  5.         jmp     EXT_INT0                ;IRQ0 handler EICR regiszter engedélyezi az IT-jét
  6.         jmp     EXT_INT1                ;IRQ1 handler                           - " -
  7.         jmp     TIM2_COMP               ;Timer2 compare 8 bites TCNT2, TIMSK reg. az IT eng., OCR2 reg.-hez compare
  8.         jmp     TIM2_OVF                ;Timer2 overflow                8 bites TCNT2, TIMSK reg. az IT eng., Timer2 overflow
  9.                                                         ;TCCR2 control register szabja meg a Timer2 üzemmódját (PWM)
  10.         jmp     TIM1_CAPT               ;Timer1 capture 16 bites TCNT1, TIMSK reg. az IT eng., PD4 bitre ICR1H, ICR1L
  11.         jmp     TIM1_COMPA              ;Timer1 compare A 16 bites TCNT1, TIMSK reg. az IT eng., compare OCR1AH, OCR1AL
  12.         jmp     TIM1_COMPB              ;Timer1 compare B 16 bites TCNT1, TIMSK reg. az IT eng., compare OCR1BH, OCR1BL
  13.         jmp     TIM1_OVF                ;Timer1 overflow 16 bites TCNT1H(8)+TCNT1L(8), TIMSK reg. az IT eng., overflow
  14.                                                         ;TCCR1A és TCCR1B control register szabja meg az üzemmódját
  15.         jmp     TIM0_OVF                ;Timer0 overflow 8 bites TCNT0, TIMSK reg. az IT eng., Timer0 overflow
  16.                                                         ;TCCR0 control register szabja meg a Timer0 üzemmódját (PWM)
  17.         jmp     SPI_STC                 ;SPI transfer complete  SPI transfer kész
  18.         jmp     UART_RXC                ;UART RX complete vevő vett egy byte-ot
  19.         jmp     UART_DRE                ;UDR empty a ténylegesen shiftelt regiszter előtti user data reg. üres
  20.         jmp     UART_TXC                ;UART TX complete az adásnak vége
  21.         jmp     ADC_C                   ;Analog to Digital Converter conversion complete
  22.         jmp     EE_RDY                  ;EEPROM ready EEPROM írásnak vége
  23.         jmp     ANA_COMP                ;Analog comparator      konvertálás kész
  24.         jmp TWSI                        ;Two Wire Serial Interface Handler
  25.         jmp EXT_INT2            ;IRQ1 handler
  26.     jmp TIM0_COMP               ;Timer0 compare 8 bites TCNT0, TIMSK reg. az IT eng., OCR0 reg.-hez compare
  27.         jmp SPM_RDY                     ;Store Program Memory Ready Handler
  28.  
  29. RESET:
  30.         ldi temp,low(RAMEND)
  31.         out SPL,temp
  32.         ldi temp,high(RAMEND)
  33.         out SPH,temp
  34.  
  35. usart_init:
  36.         ; set baud rate to 38400kpbs
  37.         ldi r17,0
  38.         ldi r16,23
  39.         out UBRRH,r17
  40.         out UBRRL,r16
  41.         ; enable receiver and transmitter
  42.         ldi temp,(1<<TXEN)+(1<<RXEN)+(1<<RXCIE)
  43.         out UCSRB,temp
  44.         ;frame format 8bit,1 stopbit
  45.         ldi temp,(1<<URSEL)+(0<<USBS)+(1<<UCSZ0)+(1<<UCSZ1)
  46.         out UCSRC,temp
  47.  
  48. T0_inic:
  49.         ;14,7456MHz kvarc használva
  50.         ldi temp,0
  51.         setbit temp,CS01
  52.         setbit temp,CS00
  53.         out TCCR0,temp          ; Clock select prescaler:64
  54.         ldi temp,0
  55.         out TCNT0,temp          ; Timer/Counter Register Clear
  56.         ldi temp,34                     ; 35-el számolni!!!!!!!
  57.         out OCR0,temp           ; Output Compare Regiszter
  58.         in temp,TIMSK
  59.         ori temp,(1<<OCIE0)     ; T0 Compare Enable
  60.         out TIMSK,temp
  61.  
  62. ;**** Konstansok elnevezése
  63. .equ sysclk = 14745600 
  64. .equ servo_port = portd
  65. .equ servo      = 3
  66. .equ mot_port   = portd
  67. .equ mot_e_pwm  = 4
  68. .equ mot_e              = 5
  69. .equ mot_h_pwm  = 6
  70. .equ mot_h              = 7
  71. .equ all_byte_rec       = 6     ; status-ban
  72. .equ eh_irany   = 7             ; előre-hátra forgásirány a status-ban
  73. .equ jb_irany   = 5             ; jobbra-balra kormányzás a status-ban
  74. ; status 0 és 1 bit a vett byteok indexe
  75. .equ bit_0      = 0
  76. .equ bit_1      = 1
  77. .equ bit_2      = 2
  78. .equ bit_3      = 3
  79.  
  80. ;**** Változók/Regiszterek elnevezése
  81. .def nulla                      = R0    ; konstansok
  82. .def egy                        = R1
  83. ;.def xx                        = R2
  84. ;.def xx                        = R3
  85. .def korm_kozep         = R4
  86. .def korm_h                     = R5    ; kormányszervó túlcsordulási értéke
  87. .def korm_l                     = R6
  88. .def mot                        = R7    ; motor pwm túlcsordulási értéke
  89. .def k_pwm_min          = R8
  90. .def k_pwm_max          = R9
  91. ;.def xx                        = R10
  92. ;.def xx                        = R11
  93. ;.def xx                        = R12
  94. .def rec_1byte          = R13
  95. .def rec_2byte          = R14
  96. .def rec_3byte          = R15
  97. .def temp                       = r16   ; átmeneti munkaregiszter
  98. .def sitt                       = r17   ; átmeneti munkaregiszter
  99. .def status                     = r18   ; jelzőbiteknek fenntartott regiszter
  100. .def korm_akt_h         = r19   ; kormányszervó futóértéke,
  101. .def korm_akt_l         = r20   ; 0 és 950 között
  102. .def mot_akt            = r21   ; motorpwm futóértéke 0-31 között
  103. .def k_pwm                      = r22   ; kívánt kormányszervó pozíció
  104. .def m_pwm                      = r23   ; kívánt motor pwm érték
  105. .def index                      = r24
  106. ;.def xx                        = r25
  107.  
  108. ;**** portbeállítások
  109. ; 1 - kimenet
  110. ; 0 - bemenet
  111.  
  112. ;**** port A inic
  113.         ldi     temp,0xFF
  114.         out DDRA,temp                           ;A port kimenet
  115.         ;ldi temp,0xFF
  116.         ;out portA,temp ; felhúzóellenállás aktiválása
  117.  
  118. ;**** port B inic
  119.         ldi     temp,0xFF
  120.         out DDRB,temp                           ;B port kimenet
  121.  
  122. ;**** port C inic
  123.         ldi     temp,0b11000011
  124.         out DDRC,temp                           ;C port bemenet + Jtag
  125.        
  126. ;**** port D inic
  127.         ldi     temp,0b11111000
  128.         out DDRD,temp                           ;D port kimenet + UART + 2. bit - létrejött BT kapcsolat
  129.  
  130. ; **** Változók/Regiszterek törlése/alaphelyzetve hozása
  131.  
  132. clr status
  133. clr index
  134. ldi k_pwm,69    ; kormány beállítása középre
  135. clr m_pwm
  136. clr rec_1byte
  137. clr rec_2byte
  138. clr rec_3byte
  139.  
  140. ldi temp,0x03
  141. mov korm_h,temp
  142. ldi temp,0xB6; 950dec
  143. mov korm_l,temp
  144. ldi temp,0x20; 32dec
  145. mov mot,temp
  146.  
  147. ldi korm_akt_h,0
  148. ldi korm_akt_l,0
  149. ldi mot_akt,0
  150.  
  151. ldi temp,0
  152. mov nulla,temp  ; fix érték, nem módosítom
  153. ldi temp,1
  154. mov egy,temp    ; fix érték, nem módosítom
  155.  
  156.  
  157. ldi temp,0
  158. ldi sitt,$00
  159.  
  160. ;**** Főprogram
  161.  
  162. sei
  163. main:
  164.  
  165. rjmp main
  166.  
  167.  
  168.  
  169. EXT_INT0:
  170. EXT_INT1:
  171. TIM2_COMP:
  172. TIM2_OVF:
  173. TIM1_CAPT:
  174. TIM1_COMPA:
  175. TIM1_COMPB:
  176. TIM1_OVF:
  177. TIM0_OVF:
  178. SPI_STC:
  179. ;UART_RXC:
  180. UART_DRE:
  181. UART_TXC:
  182. ADC_C:
  183. EE_RDY:
  184. ANA_COMP:
  185. TWSI:
  186. EXT_INT2:
  187. ;TIM0_COMP:
  188. SPM_RDY:
  189.         reti
  190.  
  191.  
  192.  
  193.  
  194. ;**************************************
  195. ;*****                                    *****
  196. ;***** Timer0 megszakításkezelése *****
  197. ;*****                                    *****
  198. ;**************************************
  199.  
  200. TIM0_COMP:
  201.  
  202.         out TCNT0,R0    ;TCNT0 törlése
  203.         push temp
  204.         in temp,sreg
  205.         push temp
  206.        
  207.         ;***** Motor PWM vezérlése *****
  208.        
  209.        
  210.         cpi index,100   ; ez a max
  211.         breq motor_tulcsordul
  212.  
  213.         cp m_pwm,index
  214.         breq motor_kikapcs
  215.  
  216.         rjmp m_pwm_vez_end
  217.  
  218.  
  219.                                 motor_tulcsordul:
  220.                                         clr index
  221.                                         cpi m_pwm,0
  222.                                         breq mot_tulcs_end
  223.                                                 call mot_elore
  224.                                         mot_tulcs_end:
  225.                                         rjmp m_pwm_vez_end
  226.  
  227.                                 motor_kikapcs:
  228.                                         call mot_stop
  229.                                         rjmp m_pwm_vez_end
  230.  
  231.        
  232.         m_pwm_vez_end:
  233.  
  234.         inc index
  235.        
  236. TIM0_COMP_end:
  237.         pop temp
  238.         out sreg,temp
  239.         pop temp
  240.         reti
  241.  
  242.  
  243. mot_elore:
  244. sbi mot_port,mot_e
  245. cbi mot_port,mot_h_pwm
  246. sbi mot_port,mot_e_pwm
  247. cbi mot_port,mot_h
  248. ret
  249.  
  250. mot_hatra:
  251. sbi mot_port,mot_h
  252. cbi mot_port,mot_e_pwm
  253. sbi mot_port,mot_h_pwm
  254. cbi mot_port,mot_e
  255. ret
  256.  
  257. mot_fek:
  258. sbi mot_port,mot_e
  259. sbi mot_port,mot_h
  260. sbi mot_port,mot_h_pwm
  261. sbi mot_port,mot_e_pwm
  262. ret
  263.  
  264. mot_stop:
  265. ; motor szabadon fut
  266. cbi mot_port,mot_e_pwm
  267. cbi mot_port,mot_h_pwm
  268. sbi mot_port,mot_e
  269. sbi mot_port,mot_h
  270. ret
  271.  
  272.  
  273. ;****************************
  274. ;*****                  *****
  275. ;*****  USART kezelése  *****
  276. ;*****                  *****
  277. ;****************************
  278.  
  279. UART_RXC:       ; fogadás
  280. push temp
  281. in temp,sreg
  282. push temp
  283. push sitt
  284.  
  285.         in temp,UDR
  286.         mov m_pwm,temp
  287.  
  288. UART_RXC_end:
  289. pop sitt
  290. pop temp
  291. out sreg,temp
  292. pop temp
  293.  
  294. reti
  295.  
  296.        
  297. UART_TX:        ; küldés
  298.         sbis ucsra,udre
  299.         rjmp UART_TX
  300.         out udr,temp
  301.  
  302. ret
A hozzászólás módosítva: Dec 25, 2013
(#) boomerang hozzászólása Dec 26, 2013 /
 
Sziasztok!

Atmega 128-hoz nem tudok belépni programozás módba.
MOSI, MISO, SCK, RST és a föld a helyén van, kimértem. VTG nincs rávezetve a panelre a programozóról, azt kap külön.
A RESET lábon jelenleg nincs semmi csak a programozó RST-je.
Továbbá a VCC és GND is mindenütt ott van, ahol kell az Atmega 128-nak táplálás.
Az Uc még szűz új, most menne először.

AVR Studio 4 + STK500 amivel próbálkozok.

Mit rontottam el ?
köszi!
A hozzászólás módosítva: Dec 26, 2013
(#) TavIR-AVR válasza boomerang hozzászólására (») Dec 26, 2013 /
 
Nem MOSI/MISO hanem PDI/PDO lábak kellenek (ami a sorosporttal közös!).
És a PRG láb is vagy lebeg, vagy a Vcc-re kötendő.
(#) boomerang válasza TavIR-AVR hozzászólására (») Dec 26, 2013 /
 
Nagy naívan attiny 13 és mega 8 mintára gondolkodtam ezek szerint.
Na majd esztétikusan vezetékezek a panelen.

Viszont nem látok "PRG" lábat....... ? A "PEN" az vcc-n van, ha arra gondolsz.

Köszönöm a segítséget!
A hozzászólás módosítva: Dec 26, 2013
(#) TavIR-AVR válasza boomerang hozzászólására (») Dec 27, 2013 /
 
A PEN az. Programming ENable.
(#) rolandgw válasza kiborg hozzászólására (») Dec 27, 2013 /
 
Szia !
Nekem fura ez a megszakítás kezelés. Nem futtattam le,de működik ez az összevont reti lezárás ?
Így szoktam kezelni asm-ben:
  1. .CSEG
  2. .ORG $0000
  3. rjmp Reset; Reset-vector
  4. reti ; External Interrupt Request 0
  5. reti ; External Interrupt Request 1
  6. reti ; Timer/Counter1 Capture event
  7. rjmp TCmp1A ; Timer/Counter1 Compare match A
  8. reti ; Timer/Counter1 Compare match B
  9. reti ; Timer/Counter1 Overflow
  10. reti ; Timer/Counter0 Overflow
  11. reti ; SPI Serial Transfer complete
  12. reti ; Uart Rx char available
  13. reti ; Uart Tx data register empty
  14. reti ; Uart Tx complete
  15. reti ; Analog comparator
  16. Reset:
(#) kiborg válasza rolandgw hozzászólására (») Dec 27, 2013 /
 
Szia!
Nekem meg a tied a fura. Semmi gond vele.Tökéletesen teszi a dolgát ez a fajta lezárás is. Számomra így sokkal könnyebben áttekinthető,mert amit használok a végén kikommentelem és létrehozom újból és az eleje pedig állandó, nem kell variálnom.
De a tied is tökéletes. Szerintem. Mindent meg lehet oldani többféleképpen is Ez egy jó példa.
Üdv Kiborg

ui:közben rájöttem hogy nagyon nagy valószínűséggel valami induktív/kapacitív tüske/zavar indította újra a vezérlőt, mert most távolabb helyeztem (anélkül, hogy a vezetékezést változtattam volna) megjavult. Erősen elgondolkodtam optocsatolós leválasztáson.
Kérdéses az, hogy mágneses tér vagy a PWM miatti impulzus zavarta össze. Mert mágneses tér ellen nem véd az opto Ezt még majd fogom tapasztalgatni.
A hozzászólás módosítva: Dec 27, 2013
(#) zombee válasza kiborg hozzászólására (») Dec 27, 2013 /
 
Elég nagy mágneses tér kellene ahhoz hogy megzavarja az AVR-t. Nem ezért indul újra!
Egyrészt a PWM miatt nagy áramcsúcsok alakulhatnak ki, ami feszültségesést okoz az AVR tápellátásánál(is). Elég ha csak a földpont közös! A profik kondival és induktivitással védik meg az AVR-t az ilyesfajta tranziensektől.
A másik hogy a nagy áram miatt kialakuló változó mágneses térben a közeli, párhuzamosan futó vezetékek összeszedik az impulzust és ez simán tud RESET-elni, de még ocsmányabb dolgokra is képesek. Építettem egy "csapj a falra!" játékot nagy méretben. A nyomógombokhoz és a körülöttük elhelyezett LED-ekhez 4 méteres vezetékpárok mentek. A LED-es vezetéken folyó kb. 120mA-es áram miatt a vezérlő megbolondult: a nyomógomb vezetékén megjelent a LED-sor felkapcsolásakor egy impulzus és a vezérlő azt hitte hogy lenyomták a gombot. Ezen 100Ohm-os felhúzó ellenállás tudott csak segíteni.
(#) rolandgw válasza kiborg hozzászólására (») Dec 28, 2013 /
 
Nem teszi a dolgát ! A felsoroltak közül csak az első után tesz reti-t, a többi kimarad.Nézz rá a Disassembler-re
(#) zombee válasza rolandgw hozzászólására (») Dec 28, 2013 /
 
Szia!
Mit értesz "összevont reti lezárás"-on? Milyen a "nem-összevont"? Csak szólok hogy amit
ide beszúrtál, ezt szokás használni ha már valaki asm-ben ír programot. Mást nem is ismerek.
(#) kiborg válasza rolandgw hozzászólására (») Dec 28, 2013 /
 
Szia!
Diassemblert nem néztem, JTAG-al ellenőriztem. Ha bármelyik megszakítás meghívódik, akkor a listában szereplő megszakítás cimke utáni első utasításra ugrik, ami egy reti. Így le van zárva és rendben vannak, másrészt meg ott csak azok vannak amik nincsenek használva,beállítva, így elméletileg meg sem hívódhatnának.

zombee: akkor megpróbálom az optocsatolós kivitelezést, bár nem nagyon fűlik hozzá a fogam. A táp most is külön van választva (AVR 3,3V (4db 1,2V akku és 3,3V LDO, motor és H híd:6V akku), egyedül a GND a közös. Akkor csak ez az egy közös pont miatt is csinálhatja a cirkuszt... pedig nincs nagyon hosszú vezetékezés, max 10-12 cm.
(#) rolandgw válasza zombee hozzászólására (») Dec 28, 2013 /
 
Én is ezt használom,de kiborg így oldotta meg,szerintem rosszul,részlet a programból:
  1. EXT_INT0:
  2. EXT_INT1:
  3. TIM2_COMP:
  4. TIM2_OVF:
  5. TIM1_CAPT:
  6. TIM1_COMPA:
  7. TIM1_COMPB:
  8. TIM1_OVF:
  9. TIM0_OVF:
  10. SPI_STC:
  11. ;UART_RXC:
  12. UART_DRE:
  13. UART_TXC:
  14. ADC_C:
  15. EE_RDY:
  16. ANA_COMP:
  17. TWSI:
  18. EXT_INT2:
  19. ;TIM0_COMP:
  20. SPM_RDY:
  21.         reti
(#) zombee válasza zombee hozzászólására (») Dec 28, 2013 /
 
Egy 100uH tekercs az LDO és az AVR VCC közé, és "nagy" kondi a táplábak közvetlen közelébe.
Minimum 1-2.2µF kerámia ha SMD, 10µF ha tantál, 100µF ha mezei elkó.
(#) rolandgw válasza kiborg hozzászólására (») Dec 28, 2013 /
 
Csak a fordítás után nem lesz meg az összes címke,csupán az első.Nem állítom,hogy ez okozza a hibát,a rossz megszakítás kezelést jeleztem
(#) zombee válasza rolandgw hozzászólására (») Dec 28, 2013 /
 
Hát ez az utóbbi egy pofon a sz*rnak. Ha ez lenne a program LEGELSŐ 21 sora (nem valószínű),
azt a programozót úgy kivágnák hogy Föld körüli pályára áll...

Szerintem azért nem lesz meg a többi címke, mert az ÖSSZES címke ugyanoda mutat,
arra az egy szerencsétlen "reti"-re. Ugyanis a címke az nem része a programkódnak,
csak egy szimbólum amit a fordító egy valós cím-re fordít le.

Amit először megadtál (Bővebben: Link) az a helyes és szabványos formátum interrupt kezelésre.
Csak arra kell figyelni hogy más AVR esetén más lehet a sorrend(pl. ATMega16<-->ATMega32),
illetve 16KB vagy nagyobb flashmemóriájú IC-k esetén az interrupt vektorok kizárólag
páros címen vannak("rjmp" helyett "jmp", "reti" helyett "reti + nop".
A hozzászólás módosítva: Dec 28, 2013
Következő: »»   578 / 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