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
Van, 32.768.
Ezt akartam tudni, hogy mind a 4 bepipál. Köszi ja, még egy kérdés. Előfordulhat az, hogy a fuse bitek miatt, a nyomógombokkal nem lehet az időt beállítani? A funkciókra reagál mind a 3 gomb, de az idő és dátumbeállítást nem lehet elérni, nem lehet módosítani.
Szia!
Kotorásztam egy kicsit az ATmega88P adatlapjában: Idézet: „ATmega48P/88P/168P share the Timer/Counter Oscillator Pins (TOSC1 and TOSC2) with XTAL1 and XTAL2. When using the Timer/Counter Oscillator, the system clock needs to be four times the oscillator frequency. Due to this and the pin sharing, the Timer/Counter Oscillator can only be used when the Calibrated Internal RC Oscillator is selected as system clock source.” Ez azt jelenti, hogy a CKSEL3..0 biteknek a 0010 értéket kell beállítani. Idézet: „Device Clocking Option | CKSEL[3:0] Calibrated Internal RC Oscillator | 0010”
Ez a legegyszerűbb megoldás :
Idézet: „Ez a legegyszerűbb megoldás” Ez tenyleg egyszeru, mar csak ket problemat kell benne megoldani: 1. Definialsz egy tombot aminek a hivatkozasat pointerkent felhasznalva lepegetsz a tomb elemeiben -- a kerdes pedig: Hogyan orzod meg az eredeti tomb cimet? 2. Jon egy 6 terabyt-os adathalmaz ami nem tartalmaz nullat... Mi fogja neked leallitani a 20 elemu tomb tullepeset? (Errol a problemarol mar korabban irtam)
Nyilvan, de annak aki ilyen kerdest tesz fel, nem biztos
Sziasztok!
Korábbi kapcsolásom elkezdtem átdolgozni AVR-re. Mivel nem akarom most szivatni magam az UART-al és jó lenne, ha a beállításokhoz nem kellene számítógép így azt tervezem, hogy a beállításokat 2x8 DIP kapcsolóval lehetne elvégezni. Így viszont temérdek bemenetre van szükségem. A bemenetek és kimenetek száma összesen 32db. Úgy gondolom erre az ATMEGA32 épphogy alkalmas. De ekkor fel kell használnom a MOSI,MISO,SCK lábakat is vagy bemenetként vagy kimenetként. De akkor hogyan fogom tudni programozni?
Szia!
A programozó lábakra akkor kötöd rá a programozót, amikor éppen be akarod programozni, nálam így tökéletesen működik(nem számít mit csinál az a láb éppen, úgy is lereseteli a programozó az AVR-t) Egyébként nem olyan nagy "szívás" az UART, ha van beépített hardware-s uartja a uC nek, csak inicializálni kell, és utána nem sokat kell vele foglalkozni, csak a bejövő adatot később feldolgozni(pl if bejövő bájt=a, akkor ezt csinálja...), emellett csak 1 láb kell hozzá... Zoltán
A programozo labakra DIP kapcsolot tegyel. A felhuzo ellenallasokat valaszd kelloen nagyra, ugy kb 10K kore es akkor tudod parhuzamosan programozni a kapcsolo allasatol fuggetlenul.
Közben rájöttem, hogy elszámoltam magam.
Szükségem lesz még egy időzítőre is amit potméterrel lehetne állítani 0-10 perc között. Gondolom ehhez szükségem lesz legalább egy ADC lábra. Innentől kezdve viszot -1 I/O lábam van. Input oldalon meglehet azt csinálni, hogy bemenetet csak 4 lábon figyelek? Mint a kimeneteknél a shift regiszter. Hasonlóképpen.
Hello, valamiért rosszul tette be a linket, azóta nem néztem fel ide.
Szóval, frekimérőhöz jó-e ez a tranzisztor a bemenő fokozatra? BFG67; BFG67/X; BFG67/XR
Van olyan SPI/TWI buszos portbővítő, amivel lehet kezelni bemenetet. Pl. az MCP23S17 SPI és 16 I/O.
De említetted a shift regisztert, abból beraksz párat kimenetnek, akkor a kontrollernek marad bemenethez elég lába. Vagy több ATMEGA, vagy van a nagytesó, az XMEGA-ák, sok-sok lábbal, smd. Jobban dokumentált a PIC18F sorozat magyarul, ehhez választhatsz pl. egy 18F6490-est, a Chipcad.hu-n a legolcsóbb 64 lábú (TQFP, 700Ft+ÁFA). Látom megjött az étvágy. Kitartást kívánok, mert kezdőként már szépen megbonyolítottad a dolgot. Programozód van? Az elég sarkalatos pontja az egésznek.
Természetesen van programozom meg egy marék tesz panelem arduino sorozat.
Elnézést, de a PIC-től elhatárolódom. Nincs különösebb oka ez számomra olyan mit az Intel vs. AMD. Én AMD párti vagyok és soha nem csalódtam. Szóval: Az a főgondom, hogy 8+3 kimenetre van szükségem. Ezt megoldom úgy, hogy 8 lábat szűkítek négyre shift regiszter segítségével és marad a +3. Így kimenetből csak 7 lábat használok fel. Viszont bemeneten kell 8+8+8+1+1. Ezt kellene valahogy leszűkítenem.
Attol fugg milyen kapcsolast talaltal ki.
Multiplexeld a DIP kapcsolokat. Ugy a 16 I/O helyett mar csak 8 kell.
1. Ha az eredeti cím kellene akkor deklarálni kell egy másik mutatót.
2. Általában szabványok vannak a kommunikáció minkéntjére pl. SCPI, ahol előre le van definiálva, hogy mekkora lehet a legnagyobb bejövő string hosszúsága, de ha ne adj Isten nem ezt a szabványt használod, akkor is fel állítasz saját magad egyet, amihez tudod igazítani mind a szoftvert mind a firmwaret. De ha még ezt sem teszed meg, akkor is a perfiériák meg fognak szabni egy határt aminél nem lehet hosszabb pl. LCD kijelző 2x16-osnál 32 karakternél egyszerre többet nem tudsz kijelezni.
Ha nem akarsz sem soros portot sem LCD használni, akkor még mindig "szebb" megoldás, ha ledeket használsz. Minden kimenet kap egy-egy ledet, amelyel egyrészről követhetővé válik a működés, hogy melyik kimenet épp mikor aktív, másrészről alakalmazható programozáshoz.
Kell még egy 2x kétállású kapcsoló (rajzon S1), amellyel a normál működés és programozás között tudsz választani. Programozás közben a be és kimenetek tiltva vannak. Kell még egy léptető gomb (rajzon S3) amellyel ki tudod választani, hogy épp mit szeretnél programozni. Ezt jelentheti pl. a második shift regiszteren lévő 3 kimenet állapota. Kell még minden bemenetre egy-egy nyomógomb (rajzon S2, S4), amellyel be/ki kapcsolhatod az adott ledet. Így 3x8 bitet tudsz beállítani: pl.: IC4-15 led: fűtés engedélyezés beállítása IC4-1 led: hűtés engedélyezés beállítása IC4-2 led: időzítő beállítása Ezek között válthatsz a "léptet" (S3) gombbal. Fűtés/hűtés engedélyező módban az egyes csatornákhoz rendelt led-ek mutathatják, hogy engedélyezett-e arra a csatornára vagy sem (IC3-15,1..7). Időzítő beállításakor a ledek az időzítés értékét mutathatják binárisan.
DIP kapcsolókkal is meg lehet oldani. A mellékelt rajzon minden egyes bemenethez 3 db DIP kapcsoló (vagy jumper) tartozhat (JP1, JP2, JP3 vagy S1, S2, S3).
A rajzon az 1-es lábak közösek kapcsoló csoportonként, a 2-es lábak pedig a 8 bemenetre csatlakoznak Induláskor az Atmega végig olvassa a kapcsolókat (PD0, PD1, PC1 portokkal), majd átvált a bementekre (PC2). Így 8 bemeneted van és 24 db (3x8) DIP kapcsolód.
Ha I2C bővítőIC-t használsz, sokkal egyszerűbb:
PCF8574-t. Ez 8bites portbővítő, és így elfoglalsz 2 AVR lábat és 8 ki/bemeneted van (és ebből 8 fűzhető fel). Bascom alól könnyű kezelni az I2C-t
Ha még nem írtam volna le: 220-330 kOhm bázisellenállás + 1µF kondi a DC leválasztásra,
a tranzisztor pedig open-collector módban működne és annak kimenete menne az osztóra és az AVR-re.
Mellékeltem az első elgondolásom és jönnek is a kérdések.
Közben rájöttem, hogy az egyik 8-as DIP kapcsolóra nincs szükségem csak egy kapcsolóra helyette. A többit szoftveresen lehet kezelni. Így most kimeneten továbbra is van 8 relé amit shift regiszter hajt és 3-at az AVR. Van 18 bemenetem. Így most 25 láb kell ez már bíztató. Visszont melyik bemenetet hova érdemes kötni az IC-n? Nem tudom eldönteni. A másik az időzítő: Potméterrel szereném állítani az idejét, de nem találtam rá megoldást. Gondolom a működés szoftveresen teljesen megoldható? Így menne: Ha bármelyik 'aktív' bemenet (tehát a termosztátok) bekapcsol és még egy kimenet sincs bekapcsolva akkor elindul az időzítő. Ha letelt a beállított idő csak akkor kapcsol be az utolsó 3 relé. Természetesen a bemenethez tartozó kimeneti relé egyből kell, hogy kapcsoljon arra nincs hatással az időzítés.
Mindent oda kötsz, ahova könnyű lesz beroutolni. Szoftverben majd megoldod.
Ami az időzítőt illeti. A potmétert az egyik ADC lábra kösd. Szoftverből aztán időzítesz.
Sziasztok!
Van 2db ilyen panelom. Egy atmega128 van rajtuk. Annyi a különbség a kettő között, hogy az egyikben 16MHz-es kvarc van, a másikban pedig 8MHz-es, valamint a 8MHz-es példányon az ft232 IC-hez nincs kvarc belerakva. UART-on szeretnék kommunikálni velük egy ft232 segítségével egy PC-vel. A 16MHz-es példánnyal működik, de a 8MHz-essel nem, pedig az UBRR értékének kivételével ugyan azt a programot írom beléjük. Ehhez szeretnék egy kis segítséget kérni. (Ubuntu rendszer alatt programozom Code-Blocks fejlesztői környezetben és avrdude-vel töltöm át a programot.)
Ohh perpill mar egy telo vegszervizben dolgozom tehat megtanultam BGA-t is feltenni de kb fel eve amikor a panelt legyartottam mert ugye azt kellett az elsok kozt teszt utan akkor meg ezt nem tudtam h itt fogok melozni... ellenben ha ugy lesz idom melo melltt es a leadasi hatarido elott lehet legyartom SMDben is
Cikket meg nem tudom hogy lesz idom energian irni... meloban is rengeteg aa melom melle meg ez plussz allamvizsga... de utana lehet inkabb pepecselos melo nem olyan nehez annak akinek van egy kis tapasztalata gepeszetbol minimal elektronika beagy meg minimal perl. najo igy elmondva kicsit sok, de egyebkent nem az .
Kezdetnek torold a programot a uC-bol es zard rovidre az FT232 RX es TX labat. Ha nem kapod vissza a terminalban amit kuldtel, akkor vagy rossz COM porton probalkozol, vagy hibas az IC.
A bazisellenallast sorosan gondoltad vagy hogy? Ez egy kozos emitteres kapcsolashoz meg mindig keves info.
inkább kb. ilyet...
De a 700ps késleltetésű komparátor is nagyon tetszik, mert egy 1/100 osztóval is elmegy.
Ha összekötöm az ft232 rx és tx lábát, akkor a terminálban visszakapom, amit küldtem.
Akkor csak a programoddal lehet gond. Biztos jol szamoltad ki az UBRR erteket? A CKDIV8 nem maradt veletlenul engedelyezve?
|
Bejelentkezés
Hirdetés |