Fórum témák
» Több friss téma |
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
Köszi a tippeket! A bementen egyébként egy erősítés kapcsolás kimenete van, és hiába hitetlenkedtem, hogy ott nem lehet akkora zavar mégis kell hogy legyen, mert potival kicsit feljebb tolva a kimeneti offsetet megszűnnek az interruptok.
Köszi a segítséget.
Ha ez sem sikerül átküldenem, feladom.
sziasztok!
Nagy hétszegmensű kijelzőket készítettem a csatolt képen látható alapelv szerint. A kapcsoló szerepét egy atmega8 tölti be. Ameddig a programozórol kapja a mikrovezérlő az öt voltot addig gyönyörűen működik. Viszont mivael 220-ról -->adapter-->12V-->ledek. A 12V-ból csinálnék 5V-ot az avr-nek. 7805-össel. bekötöm a 7805 kimenetét, amit leellenőriztem, h. 5V. És nagyon melegszik a stabilizátor, de működik a kijelző. hosszabb ideig nem próbáltam mert szerintem elfüstölne Előre is köszönöm a válaszokat.
Szia!
A 7805 elmelegiti a felesleget, ezert melegszik neked fel. Nem tudom mennyi az aramkorod aramfelvetele, de ugye 12-5 tehat 7V-tal kell kiszamolnod mekkora teljesitmenyt kell szerencsetlennek diszcipalnia. Vagy tegyel ra eg hatalmas hutobordat, vagy oldd meg egy olyan stabilizatorral ami kapcsolo uzemu.
Nem egészen értem, hogy mi a megfogalmazott kérdésed. Kérlek írj egyértelműbben.
Segítséget szeretnék kérni. Mikroelektronika C program, Atmega128 AD konverzióval, IT alatt, valamit elszúrok.
A kijelző prg. jó, mert az ADC_Read(0) (most kommenttel kizárva) által kapott érték korrekt. Nagy valószínűséggel az inicializálás körül van hiba, vagy IT alatt a két AD regiszter kiolvasásával. Ez persze csak tipp. Köszönök minden segítséget.
Mennyi a maximális áram az 5V-os stabilizátor kimenetén ?
Szia!
A C-hez igencsak keveset konyítok, így lehet, nem valósat fogok mondani. De nekem az tűnt fel, hogy:
Itt először az ADCL-t olvasod, majd az ADCH-t... Legjobb tudomásom szerint, a két bájtos regisztereket a felső (H) regiszter olvasásával kell kezdeni. Valami rémlik, hogy nekem is emiatt lett volna problémám egy kódban. Persze ez csak egy tipp... Aki C-ben jártas, majd megmondja, mi lehet valójában a gond.
Nem is hülyeség. Múltkor pont ilyesmiről volt itt szó. Csak vissza kellene olvasni pár oldalt. De ezt tegye meg a kérdező.
Elméletileg csak a processzor áramfelvételét kell fedezni.
Pontosan nemtudom mennyi lehet de szerintem pici. valami nem jó mert nagyon melegszik
A két áramforrás testje között miért van ellenállás? Nem bázisellenállást akartál te berakni? Így ez nem a legjobb.
Meg kell merni a 'pici'-vel nem lehet szamolgatni... nem is beszelve arrol, hogy kinek mi a pici...
7805 ele tegyel be diodakat sorban. Max 8 db, de azon belul akarhany, minel tobb, annal jobb. Nem mondom, hogy egy mernoki megoldas, de lehet pillanatnyilag segit a problemadon...
Az AVR belso felepitese miatt mindig az ADCL-t kell eloszor kiolvasni esutana az ADCH-t.
Bővebben: Link
A kérdező visszaolvasta már korábban. 5x. Nem lustaságból írtam a fórumra. Az inicializálás sorrendjét több talált verzió szerint kipróbáltam, de nem találtam eddig biztosan működőt. Köszönöm fizikus egysorosát. Kipróbálom. Hátha ez a tuti!
Itt:
en szerintem csak annyi a gond, hogy az adc_be nincs nullazva ily modon. Tehat csak annyit kellene tenni, hogy kivenni az OR muveletet:
Masik gond pedig az lehet, hogy ha igy interruptbol szeretned azt a valtozot (adc_be) valtoztatgatni, amit a foprogramban lekerdezgetsz, akkor annak 'volatile'-nak kell lennie! tehat az adc_be-t igy kellene definialni:
fizikus egysorosa igaz frappáns, de nem oldotta meg.
(mindig tanulok) A változó, volatile ..... után korrekt a konverzió, de csak minden reset után 1x konvertál. Az inicializálással tanácstalan vagyok, mert először az alapmódokat (Ain, clk ), majd IT-k és start állítom be, amit jónak gondolok. A Free Run-t kivettem, mert az IT végén indítom újra a Conversion Start-al. Igaz, hogy először az ADCL-t, majd az ADCH-t kell beolvasni, mert az ADCL olvasás nem enged felülírást az ADCH-ra. Így nem két egymást követő konverziót olvasok ki eltérő H és L regiszterértékekkel, de itt a sorrend miatti hiba az IT alatt ez kizárt. Korábban mindkét sorrendet kipróbáltam. C alatt kevesen használnak IT hívásokat ?
Dehogynem, csak Te valahogy faramuci modon oldottad meg:
Igy kellene valahogy:
Amugy a volatile-al kellene mukodnie az egysorosnak is, sot az a szebb...
Sokan használnak C-t AVR-en. Aki kicsit komolyabb programot akar írni az ilyen-olyan módon biztos használ interruptot.
Viszont véleményem szerint mikroelektronika AVR compilert kevesen használnak. És mivel abban nem vagyok én sem jártas, így nem is nagyon néztem végig a kódodat. Szerintem a legnépszerűbb fordító AVR-re az ingyenes avrgcc, így legnagyobb eséllyel erre kapsz segítséget.
Szia!
Én is javasolnám neked az avr-gcc-t. Nem ismerem a fordítót amit használsz, de biztos vagy benne, hogy nem kell törölni az interrupt flag bitjét az ADC nek a interrupt handler végén?
Volt benne egy rövidzár azért melegedett annyira.
Azt kivettem, most a csatolt képen látható módon néz ki a kapcs és az a probléma, h. a tranzisztorok MINDIG nyitva vannak, ha bedugom a 12V tápot. Tehát mindig világít minden led. Pedig csak akkor kellene ha a avr lábán megjelenik a +5V. Ha a programozó ról kapja a tápot az avr, akkor továbbra is rendesen működik. Köszönöm a válaszokat.
Most vettem észre, h. ebben az állapotban is kinyit az összes tranzisztor, valaki meg tudná mondani miért?
köszönöm
Miért van a két test között a 400 Ohm-os ellenállás? Azt kösd csak át simán. A tranzisztorokra meg nem árt egy bázisellenállást rakni. Vagy esetleg még lehet, hogy lehúzó ellenállást is kívánna.
Akkor nyílnak ki a tranzisztorok, ha a 7805 input lábán rajta van a +12V és a GND lába pedig rajta van az avr GND-jén.
A 7805 +5V lába pedig csak lóg a levegőben Miért nyitnak a tranzisztorok a kollektor emitter között? köszönöm
Ha az az ellenállás nincsen benne akkor mikor a programozóról meg melegszik az avr, az ott ilyen felhúzó ellenállás szerű, eleinte úgy volt, h. minden ellenálás bázisán volt egy ellenállás aztán így az 14 ellenállást lecseréltem egy 3 wattosra.
tehát minden tranzisztor bázisán volt egy ellenállás
Persze hogy melegszik, ha nincs bázisellenállás. Így most nálad alapból a 400 Ohm-os ellenálláson kialakul a tranzisztorok nyitófeszültsége és bármit csinálsz soha nem fog lezárni a tranzisztor. A 400 Ohm-on ha már 0,6V esik, akkor már nem fog lezárni a tranzisztor, bármit csinálsz. Azt szedd ki onnan és rakjál minden tranzisztor bázisával sorba kb 1K-s bázisellenállást. Kicsit utána kellene olvasni az alapoknak is, mert azok nélkül, hiába vagy profi programozó bele fogsz ilyen piti hibákba esni minden egyes dolognál.
Sziasztok!
Ezt szeretném beprogramozni, de található itt néhány fájl, köztük a .hex is, ez az egy fájl elég a programozáshoz? Avrstudio 4.18 és avr-isp programozóm van. Hogyan kell összekötni az avr-t a programozóval? MOSI, MISO, RESET, és a tápok megvannak, az SCK-t melyik lábra kell kötni, továbbá az RXD és TXD-t nem kell rákötni? Az attiny2313 adatlapján XCK van írva (6-os láb) arra megy a programozó SCK-ja? Programozásnál is rá kell kötni a kvarcot? A programban mit kell csinálni?
Szia !
Vásárolt, Mikroelektronika C fordítót használok (jogtiszta). Adtak hozzá mintaprogikat is. Sajnos az IT kezelésekhez nem teljes. Így kerültem kérdésemmel a listára. Tudomásom szerint az IT handler visszatörli a flaget. Az MC fórumra rápróbálok, hátha belefutott már valaki ebbe a témába. Köszönöm.
Szia !
A vásárolt Mikroelektronika C fordítót használom. Ezek szerint az elterjedt (GCC, stb) C-től van amiben eltér. Jó az IT kezelés. A fordított állományban az IT vektor táblában a helyére (jó címre)fordította be. Köszönöm. |
Bejelentkezés
Hirdetés |