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   45 / 840
(#) Prinner válasza TavIR-AVR hozzászólására (») Dec 29, 2007 /
 
Köszi a tippeket, adtam órajelet a bemenetére, és ezután újra lehetett égetni.
(#) Hurka hozzászólása Dec 30, 2007 /
 
Hellosztok!

Találtam itthon egy régi Orion TXT panelt. Ezt szeretném avrrel TVre kötni és karaktert megjeleníteni. A panelon tokban van egy SAA5052-es, adatlap szerint karakter generáló. ezen kívül van egy:
-SAA5030
-SAA5020
-SAA5041
-és néhány TTL IC.

Namost, az egész panelből sztem csak az 5052 kell. csak nem esett le a vezélése. Várom az ötleteket ennek az alkalmazásához, mert sokkal látványosabb és olcsóbb mint egy karakteres LCD!

Segítségeteket előre is köszönöm: Hurka
(#) huba hozzászólása Jan 5, 2008 /
 
Na a programot sikeresen ujrairtam be lett szerelve minden, csak 3LED-et ki kell majd cserélni mert nem birták ki a lábhajlitgatást. Mikor minden meglessz akkor teszek fel képeket.

Azt szeretném kérdezni hogy ma nekifogtam C-be usart-al foglalkozni. Ahogy nézem egyszerre 8bitet lehet kiküldeni azaz 1 Bytot. Amit kiküldök meg is kérkezik a Virtual Terminal-ra karakter formájában. Probálgattam az unsinged int-et átküldeni az adatlapba levö példaprogrammal de szintén csak karaktereket kapok. Arra gondoltam hogy kiszedni az int elsö felét egy bytba, kiküldeni, kisiftelni 8-al a számot, kiküldeni a másikfelét is. Vagy karakterláncá alakitani és kiküldeni karakterenként.

A másik kérdés hogy vezetéknélkül meg kéne oldani soros adatátvitelt. Gondoltam teszek egy 555-öst a Tx-re és modulálom 36Khz-be az infrát, a másikoldalon meg egy Tsop-al venni a jeleket. Vajon mekkora sebességet érnék el kb 25cm-re kéne.

Ui: és féreértések elkerülése érdekébe AvrGcc c-be avr studioba.
(#) digimann válasza huba hozzászólására (») Jan 6, 2008 /
 
Hello!

Szerintem a karaktereket az őket megjelenítő program kreálja úgy, hogy a számokat ASCII karakterkódként értelmezi.

A char 8 bites az int pedig 16, tehát USART-on egyszerre csak egy char, vagy egy "fél" int fér be a shift regiszterbe.

A Vezeték nélküli átvitel maximális sebességét a TSOP adja meg, ez szerepel az adatlapján.

Idézet:
„Suitable burst length ≥ 10 cycles/burst”


Ez azt jeleni, hogy legalább 10-et kell "villantanod" bitenként, azaz 36kHz-en 3,6kBaud lehet a max sebesség.

Üdv: Zsolt
(#) fecus hozzászólása Jan 6, 2008 /
 
Tiszteletem!

Én is kezdőként kérdezek:
Egy gong hangját szeretném előállítani ATTiny85-tel. Az első feladat egy 8kHz-es interrupt. Az istennek sem indul el a timer1. A timer0 fut de azzal meg nem tudtam pontosan beállítani az osztót. Miért nem indul el a timer1? AVRStudio 4.13 SP2-ben szimulálnám.
A kód:
init:
cli
ldi r16, 0x00
out PLLCSR, r16 ; timer1 rendszer órajelről jár, nincs pll
ldi r16, 0x7D
out OCR1C, r16 ; ennyit kellene számolnia (előosztóval 500-at oszt)
ldi r16, 0b10000011
out TCCR1, r16 ; OCR1C-t elérve nulláz, előosztó:rendszerórajel/4
Mit rontok el?
(#) huba válasza digimann hozzászólására (») Jan 7, 2008 /
 
Köszönönöm a választ. 3600Baud max- szerintem nekem kevés lessz

Most belefogtam a Masterfoxx csengőjébe használt AT45DBxxx memóriák bizgetésébe. SPI-n keresztül kommunikálnak. Kell keressek egy példaprogit hardveres SPI használatára, mert ahogy elnézem Masterfoxx softveres SPI-t használt hogy szabad legyen a teljes B port.
(#) digimann válasza huba hozzászólására (») Jan 7, 2008 /
 
Hello!

Nekem már sikerült beüzemelni a hardveres spi-t... de a szoftveres se épp nagy kunszt.

keress msn-en ha kell segítség.

Üdv!
(#) digimann válasza fecus hozzászólására (») Jan 7, 2008 /
 
Hello!

cli-vel kikapcsolod az interruptokat... nem kéne visszakapcsolni? (sei)

Hi!
(#) fecus válasza digimann hozzászólására (») Jan 8, 2008 /
 
Azt már nem másoltam be. A baj, hogy egyáltalán nem pörög a számláló. Egyet sem lép. Így az int sem jön meg soha. Annyira egyértelmű a beállítás, hogy szimulátor hibára gyanakodtam. Nem találtam ilyen bug-ot a Net-en.
(#) digimann válasza fecus hozzászólására (») Jan 9, 2008 /
 
Hello!

OCR1A, OCR1B, és OCR1C is a timer1-hez tartozik.

Szerintem ha ebből 1-et használsz, és a másik 2 0x00, akkor nem "megy", vagyis már ez első periódusban, avagy rögtön utána nulláz, tehát mikor 1-re billent, akkor nulláz, tehát nem megy sehova. A hozzá tartozó flag folyamatosan 1.

Amelyiket nem használod, azt állítsd 0xFF-re...

Üdv!

U.I.: Remélem segít...
(#) dpeti válasza Dudus hozzászólására (») Jan 10, 2008 /
 
nem tudja valaki, hogy mi a jelszó a BZ: Mikrok. alk. új jegyzetének pdfjéhez?
(#) davidov válasza dpeti hozzászólására (») Jan 10, 2008 /
 
A jelszót nem tudom, viszont nekem megvan az egy évvel ez előtti. Nem tudom, hogy mennyit változtatott rajta, de ha az megteszi emailben el tudom küldeni.
(#) dpeti válasza davidov hozzászólására (») Jan 10, 2008 /
 
köszi, de az nekem is megvolt
(#) vicsys hozzászólása Jan 10, 2008 /
 
Sziasztok!
Letöltöttem a winavr-t mert szerettem volna lefordítani egy .c forrást attiny-hez. Annyira :lama: vagyok, hogy nem jövök rá, hogy hogyan lehet .hex-et készíteni. Ha nem nagy fáradság, leírni vki-amolyan szájbarágósan?
Köszi előre is!
(#) vicsys válasza vicsys hozzászólására (») Jan 11, 2008 /
 
Esetleg más program javaslat? Olyasmit szeretnék aminek van grafikus felülete és nem parancssori...
Légyszi!
(#) matrix64 válasza vicsys hozzászólására (») Jan 11, 2008 /
 
Megtalálod a Programmers Notepad-ot(make all),meg a AVRstudio4-et is feltelepítheted,de a lényeg nem ezen van hanem a makefile használatának ismeretén.Szerintem jobban jársz ha megadod a forrást és valaki lefordítja neked.
(#) vicsys válasza matrix64 hozzászólására (») Jan 11, 2008 /
 
Köszönöm a segítséget!...de, többször is módosítani kell majd a forrást (kísérletezgetek). Jajj, Istenem! Miért nincs vmi egyszerű megoldás mint PIC-nél az MPASM??
(#) digimann válasza vicsys hozzászólására (») Jan 11, 2008 /
 
Hello!

El ne keseredj, van megoldás!!!

Feldobod az AVRStudio-t (ingyenesen elérhető) aztán utána a WinAVR-t... ezzel kész is.

A WinAVR könyvtárában az avr\include\ könyvtárban találsz hasznos headereket is, az AVRStudio nem biztos, hogy látni fogja, ha a project beállításaiban nem adod meg neki, hogy itt is keresse. (ne másold ki őket, mert össze-vissza hivatkoznak egymásra)

Üdv: Zsolt
(#) vicsys válasza digimann hozzászólására (») Jan 11, 2008 /
 
Okés, köszi! Még nem látok tisztán, sajna, hogy mit is kell majd csinálnom...
(#) digimann válasza vicsys hozzászólására (») Jan 12, 2008 /
 
Üdv!

Tényleg kicsit felhősen fogalmaztaqm, sajnos siettem mikor írtam... Remélem addig tiszta, hogy mit kell feltelepíteni. (AVRStudio, WinAVR)

A project-ben pedig meg kell adni, hogy hol keressen importálható headereket, mert másképp nem találja meg őket. A csatolmány remélem kitisztítja a képet...

libary.jpg
    
(#) fecus válasza digimann hozzászólására (») Jan 13, 2008 /
 
Mindegyikbe ugyanazt írtam. Nem lép a számláló.
(#) fecus hozzászólása Jan 14, 2008 /
 
Használ valaki .sti fájlt. Nekem nem jelenik meg a portB-n az érték amit beírtam. Az in utasítás után szeretném látni de nem jelenik meg.
A DDRB 0b00110011
a PORTB 0b00110011
Ettől a bit2 és bit3 bemenet, a többi kimenet.
A sti fájl:
000000001:0C
000000256:0C
999999999:0C

Mégsem jön be az 1-es a 2 és 3 bitre.
(#) Lucifer hozzászólása Jan 18, 2008 /
 
Üdvözletem minden kedves AVR-el foglalkozó fórumtársnak!

Egy ideje Topival elkezdtünk írni egy cikket az AVR-ekről. C nyelvre kihegyezve hasonló felépítésben mint a PIC-es cikksorozat. No de a többi legyen meglepetés.

Most került szóba a programozó kérdése. Mindkettőnknek USB-s programozója van csak. Viszont a cikkben valami igazán olcsó, népnekvaló programozót kellene bemutatni. A neten tengerszám van 74*244-es IC-vel felépített ISP letöltő. Ez pont megfelelne a célra. Holnap igencsak csinálok én is egyet, de az kipróbálás NEM helyettesíti a rendszeres használatot. Szeretnénk egy jó bevált, megbízható kapcsolást közzétenni. Sajnos tesztelni nincs vele időm mivel nincs LPT portom. Tehát tanácsokat, illetve tapasztalatokat várnánk azoktól akiknek van ilyen letöltőjük.
(#) digimann válasza Lucifer hozzászólására (») Jan 18, 2008 /
 
Hello!

Tényleg repkednek a neten a 74*244-es IC-s LPT-s progizók, ezek STK 200/300 kompatibilisek.

Nekem is ilyenem van. A dolog lényege valójában, hogy nem terheli meg az LPT portot. Egyébként elméletben, illetve ha a céláramkörben csak az AVR kapja a tápot, akkor nem kel semmilyen ketyere, csak bekötni megfelelően az LPT-re (próbáltam, sikerült) persze ez alaplap/kártya függő.

De! Mégis megbízhatóbb a csatolmányom, amely a céláramkörből táplálkozik, viszont nekem volt vele egy problémám:
- Amikor bele építettem a jelző LED-et is, akkor a védődiódán akkora feszültség esett, hogy nem ment megbízhatóan a programozás... cirka minden harmadikra sikerült. A problémát a dióda rövidre zárásával, és fokozott figyelemmel oldottam meg. Ekkor felfigyeltem egy fura jelenségre:
TÁP NÉLKÜL IS MŰKÖDIK
Ez azért van, mert a RESET lábat programozás után H szintre emelve indul az AVR. Ez a H szint szolgáltat annyi energiát, hogy elindul az AVR, illetve a programozására is van lehetőség. Utóbbihoz köze van az 1µF-os tápszűrő kondinak is

Programozásra én a BASCOM-ot használom, mert eddig csak ezzel sikerült beállítanom a fuse biteket.

Fejlesztőkörnyezetnek az AVRStudio-ra voksolok, és mellé a Win-AVR a C nyelv miatt.

Remélem jó kis cikk lesz!

Üdv: Zsolt

AVR ISP.gif
    
(#) TavIR-AVR válasza digimann hozzászólására (») Jan 19, 2008 /
 
A LPT portos STK200/300 kapcsolásokból van egy pár. Nálam a STK200 készült el, ebből már >50 darab felett.

A 74244-es ICből érdemes a CMOS változatot begyűjteni, mert ekkor a 3.3V-os áramkörök is programozhatóak. A bufferelt "hátránya" hogy a céláramkörből veszi a tápfeszültséhget, ezt jópáran elfelejtik a használatnál. Így meg a parazita tápja lesz meg az ICnek, a bemenő védődiódákon át az LPT portról illetve a céláramkörből. Általában ez is működik, de nem építenék rá.
A Bufferelt azért javasolt, mert az újabb LPT portok - fügyülve a szabványra - nem 5V TTL jeleket adnak ki, hanem 3.3V-os jelekkel dolgoznak!

A buffernélküli működése igen erősen LPT port függő.
A 244-es IC kimenetén az AVR panel felé ne legyen a szalagkáben hosszabb mint 40-70 cm. Ennél hosszabb esetben a programozási sebességet lejjebb kell venni, és néha mindenféle áthallásra is számolni kell. ezért jó a 10 eres szabványbekötés, mert ott felváltva megy a GND és a jelvezeték. A 6 tüskés esetén a jelvezetékek közvetlenül egymás mellett mennek!

A programozási sebesség fontos: Max a chip órajele 1/4-e legyen (max 40% lehet elvileg - Nquist-szabály (remélem nem írtam el) alapján).
Az ICnek _önálló_ órajelének kell lennie, órajel nélkül nem működik a programozás sem! (legalábbis a SPI alapú)

A PC-n Win alatt került kipróbálásra a programozó. Ponyprog (hülyén vannak a beállításai), TwinAVR, Bascom, AVRDUDE biztosan megy.

Programozási módokban a SPI aleggyakoribb (5 szál drót/bufferelt), illetve a HighVoltage serial/paralell még elterjedt. Egyesek a nagyobb chipek esetén a debuggal kombinált JTAG alapúra szavaznakl.

STK200 szemében tetszhalott ICk általában a hibás órajel miatt nem élednek fel, ekkor a XTAL1/2 lábra külső 1MHz...16MHz órajelet kell adni. De ha a kisebb ICk resetlábát sikeresen letiltottuk, akkot a STK200 alapú programozás nem megy (RESET láb jelzi, hogy PRG alatt vagyok). Ekkor csak a HighVoltage mód segít. Viszont a HV módokban az elállított órajelek is beállíthatók, mert ekkor a programozó biztosítja az órajelet is, nem az AVRre van bízva.


A LPT-s programozó USB-LPT átalakítóval nem megy, mert _direkt_ lábcímzéses I/O módok nem állnak implementálva a USB alatt.
Laptopon vagy USB-s programozó, vagy PCMCIA alapú LPT port jöhet szóba (vagy van a laptopon LPT port)

Órajelekről pár szó:
Órajelekről pár szó
Külső órajel:
Külső órajel (lapvége)

Talán segítettem...


Egyéb SPI-s programozók a soros/USBportra (USB-soros átalakítóval):
STK500 illetve AVRisp alapúak.
(#) Lucifer válasza TavIR-AVR hozzászólására (») Jan 19, 2008 /
 
Sziasztok!

Köszönöm szépen a választ mindkettőtöknek. Pontosan ilyen tanácsokat vártam. A cikkben szereplő próbapanel külső tápos lesz, és majd külön felhívjuk a figyelmet a programozós dologra. Köszönöm mégegyszer a segítségeteket.
(#) TavIR-AVR válasza Lucifer hozzászólására (») Jan 19, 2008 /
 
A panel - ha nem csatlakozik másra csak PCre (pl. LCD bemutatás, sorosport, LED), akkor az USBről is kaphat tápot (csak a +5V levétele elég, de itt figyelni kell az LCDháttérvilágításra, mert az szép nagy áram is bír lenni!).

Az USB-nél én ~250-300 mA-l számolnél, mégha a szabvány 500mAt is ír (laptopok esetén ~300mA a limit....).

Én az oldalaom amikor az AVR+Bascomot "tanítom" akkor a LED, sorosport és a LCD az az ami az indulás. Onnan lehet továbbmenni bármerre .... (Én pl. most RS485 ipari busz és a WEBszerver felé )

(#) Lucifer válasza TavIR-AVR hozzászólására (») Jan 19, 2008 /
 
Szia Róbert!
A cikk két részre lesz bontva. Első részben a belső felépítést, a főbb beépített perifériák kezelését fogjuk bemutatni. Csak némi LED, gombok, piezzo, max232 semmi több. Nem akarok USB-s tápot mert abból csak levél hamok, meg elfüstölt alaplapok lesznek. Fogjon mindenki egy 7805-öt vagy egy zsebtelepet, és csókolom.

Majd a további részekben tervezem a külső eszközök bemutatását.

Az első hardveres szívás már elkezdődött....
Van egy eposz féle AVRstamp itthon. Hát miért is kellene szabványosra csinálni azt az ISP csatlakozót...
Táp nincs kint rajta,
Legalábbis a digimann féle csatihoz nem jó. Gyanítom hogy amit a rajzon adott az a szabványos, mert ezt látom mindenhol. Na mindegy csak a szokásos hétköznapi egyéni szociális problémák jönnek megint.
(#) huba hozzászólása Jan 19, 2008 /
 
Lenne egy kérdésem SPI-vel kapcsolatban. Valahogy nem boldogulok vele idáig eljutottam
  1. void SPI_bizg()
  2. {
  3. USIDR=13;
  4.  
  5.      USART_Transmit(USIDR);
  6. USICR|=(1<<USITC);
  7. USICR |=(1<<USIWM1); //TREE WIRE MODE BEKAPCS
  8.  
  9. USICR |=(1<<USICLK); //BELSO ORA
  10.      USART_Transmit(USIDR);
  11.  
  12. USICR |=(1<<USICLK);
  13.    USART_Transmit(USIDR);
  14. USICR |=(1<<USICLK);
  15.    USART_Transmit(USIDR);
  16. USICR |=(1<<USICLK);
  17.    USART_Transmit(USIDR);
  18. USICR |=(1<<USICLK);
  19.    USART_Transmit(USIDR);
  20. USICR |=(1<<USICLK);
  21. }

Az USICLK az strobebit. Ha 1-re állitom a kimeneti regisztert egyel eltólja. Elértem hogy a kimeneten megjelet az órajel,de adat semmi.
(#) TavIR-AVR válasza Lucifer hozzászólására (») Jan 19, 2008 /
 
A belinkelt rajzon ami a #1350-es hozzászólásban van Digiman billentyűzetéből, az a _szabvány_ atmeles kiosztást tartalmazza. Kultúrpanelek és csatlakozók ez alapján vannak megcsinálva.
Az eposz honlapján (most naná hogy nem érhető el) elvileg kapcsolási rajz is volt kinn egyes paneljeikről - de mintha ott is ez lenne... Nem a Portkimeneti csatlakozót sikerült megtalálni?

A szabványtalan bekötések, egyéni megoldásoktól én is a falon szaladgálok néha.... Ezért van ott annyi lábnyom.

Az USB-vel meggyőztél. 7805+12V fali tápdugasz. Onnan meg aki megsüti, vesen magára.

A mai alaplapokon az a régi védelem, hogy 700-750 mA áramfelvétel esetén lekapcsol - a múltté. Nálam a régi PII-COMPAQ alaplap még tudja. Ezért van is használva ezen az USB ezen _szabványban is rögzített_ funkciója...

Az AVR chipek esetén a normál jelűek 3.0....5.5V közt működnek, az L illetve a kisfeszültségűek 1.4...5.5V közötti fesztartományból.
Következő: »»   45 / 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