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
1000 Bocs!
Nálam az optimize(-O1) kiszedte a: x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); Sort belőle! Ezt Ki érti??? A hozzászólás módosítva: Nov 4, 2014
Helo,
Köszönöm a választ, mindazonáltal, mivel a hardver már megvan nem szeretném feladni a dolgot. Amit szeretnék elérni az a következő, van négy bemenet és négy kimenet, ezeket szeretném vezérelni ill. lekérdezni soros port-on keresztül és mindezt attiny2313-al. A net-en sok hasonló programot találtam, de egyik sem akar működni. Az Arduino-t egyenlőre félretettem, letöltöttem egy CodeVisionAVR programot és van egy stk500 klónóm is hozzá. Tegnap találtam egy programot ami nagyon hasonló, azonban ha megpróbálom lefordítani több hibát is kapok. Az első az #include "avr/io.h", ha ezt átírom #include "io.h"-ra akkor már csak 3 hiba marad. Kettő a soros kommunikációval kapcsolataos, viszont a harmadik az 'int main()' függvénnyel. A hiba: the 'main' function must return 'void' type. Ezzel sajnos nemtudok mit ketdeni...
int main() helyett irjal void main()-t. Es ha van return utasitas a main fuggvenyben, akkor annak nem lehet erteke, azaz return; kell legyen.
A hozzászólás módosítva: Nov 4, 2014
Szia killbill,
Köszi a tippet ez úgytűnik bevált, már csak két hibám van: - a eredeti program AT90S2313-ra íródott én viszont tiny2313-at használok, az első hiba, void UART_Init(uint32_t Baud) declaration syntax error, néztem az adatlapot és ami feltűnő, hogy a tiny-ben USART van, nem UART. Erre van valami ötleted, hogy hogyan lehet korrigálni?
Hat, oszinten szolva en egyik tipust sem ismerem (pontosabban, valamikor 10..15 eve foglalkoztam AT90S2313-mal). A declaration syntax error programozasi dolog, nem sok koze magahoz a chip-hez. Talan hianyzik a
Az adatlap alapjan a UART es USART kozott a ket chip-ben eleg sok kulonbseg van. El kell olvasni, meg kell erteni. Aztan meg kell erteni az eredeti programot es atirni az ATTiny-re. A hozzászólás módosítva: Nov 4, 2014
Nem voltak... Köszi!
Mostmár jobb a helyzet. A gond annyi, hogy csak a Chip1-en látom kiírva és mintha ismételné, tehár kiírom hogy "Paratartalom:" és ennyit látok: "Alom: rt", olyan mintha azt hinné hogy csak a chip 1 működik. Illetve a betűk közötti távolság majdnem 1 betűnyi. (Nem ekkora volt rendes bekötés mellett.) lcd.h
lcd.c
Különbözik a két avr uart regiszter használata,elnevezése.Először is az AT-nál baud-ra UBRR regiszter van, a tiny-nél UBRRL (ez felel meg cím szerint az AT regiszternek)és UBRRH,valamint a control,status regiszterek is más néven futnak,de átírható,ha végignézed.
A hozzászólás módosítva: Nov 4, 2014
Sziasztok!
Vettem ezt a programozót mi kell hozzá, hol találok egy kapcsolást rajzot amire fel tudom a atmel chippeket rakni és beprogramozni. esetleg ez tud vissza felé is, ki tudom olvasni a chip programját Kezdésnek mit ajánlanátok
Üdv!
Elhoztam vidékre az AVR és ENC28J60-as tesztpanelem, de itt valahogy nem akar működni. Először a tápegységre gyanakodtam, de ott úgy néz ki minden rendben van. Megvan a 12V 340mA terhelés mellett (izzóval teszteltem). A 3,3V-ot a LM1084 adja a fali 12Vos tápról. Igaz csak 3V-ot ad le. Az AVR-nek saját kristálya van ami 16MHz-es, a div8 aktív. A VCC és GND lábainál közvetlen van egy 47µF tantál kondi. Amit nem értek: Ha nem kötöm be az ENC-t a panelbe akkor az AVR elindul. Alap esetben 2Mhz-en kezd, majd az első sor kóddal 16Mhz-re állítom (kikapcsolom a div8-at). Ha bekötöm az ENC-t akkor nem hogy nem indul el a program, de a 2Mhz helyett is csak 1,7Mhz-et kapok, ami ráadásul nem stabil. 1,73-1,78 között ingadozik. Otthon ugyanezt a táp felállást használtam. Ami eltérés van: - Nem kötöttem be a saját gyártású USBasp programozót. (innen semmi sem kap USBről áramot) - Nem kötöttem be az USB-RS232 átalakítót. (csak az átalakító kap USBről áramot) Mitől lehet az AVR órajele instabil?
Tárgytalan... Mégis a táplálással van a baj. Elemről megy.
Kezdésnek? Dobd ki.
A fórumban is sokszor le lett írva: AVRASP egy nagy kalap kaki (árával arányosan használható). Amivel _esetleg_ kezelhető: AVRDuDe keretrendszer, illetve amit a gyártója adott hozzá/leírásában szerepel.
Tipp: Fordítsd le a 90S2313-ra, és a kapott HEX-t égesd be a T2313 chipbe.
Csereszabatosak ![]()
Hello
Valaki segitene mert az AVR-okba meg egy kicsit kezdö vagyok! Na az lenne a kérdésem, hogy ebben a cikkben azt irja, hogy kell a propeller kijelzö program de Jaedong azt irta, hogy az nélkül is meg lehet irni ezt a programot! Na majd csak eljutok a kérdésig! C-be vagy c++-ba kell programozni vele vagy másik nyelvbe? És, hogy nekem LPT porton kellene valahogy Programoznom! evvel kapcsolatban is gondba vagyok! És még,hogy valaki tudna-e evvel a programozásal kapcsolatos videot? vagy Luxus lenne nekem ha vallaki megirna nekem jo lenne! ![]() ![]() A hozzászólás módosítva: Nov 6, 2014
A jópofin kívül:
- tulajdonképpen mi a kérdésed? - mit is szeretnél megtudni? Szóval egy jópofi-magyar nyelvről egy műszaki-magyar nyelvre fordítást, ha lehetne.... Idézet: „C-be vagy c++-ba kell programozni vele vagy másik nyelvbe? És, hogy nekem LPT porton kellene valahogy Programoznom! evvel kapcsolatban is gondba vagyok! És még,hogy valaki tudna-e evvel a programozásal kapcsolatos videot? vagy Luxus lenne nekem ha vallaki megirna nekem jo lenne!” Ez a kérdés! De ez hozá tartozik! Idézet: „ebben a cikkben azt irja, hogy kell a propeller kijelzö program de Jaedong azt irta, hogy az nélkül is meg lehet irni ezt a programot!” ![]()
Ok, én vagyok a helikopter. Nem értem....
A linkelt program C nyelven van. "És, hogy nekem LPT porton kellene valahogy Programoznom! evvel kapcsolatban is gondba vagyok! " Igen informatív a kérdés.... ![]() "És még,hogy valaki tudna-e evvel a programozásal kapcsolatos videot? vagy Luxus lenne nekem ha vallaki megirna nekem jo lenne!”" Ebben hol a kérdés/kérdőjel?
Akkor ujbol fogalmazok!
LPT porton kellene programozni azt a programot ami a cikkben van és a propeller kijelző program nélkül! Remélem érthetö voltam!
Nem.
A mondataid felkiáltójellel végződnek, mely felkiáltást vagy parancsoló mondatot jelent. Tehát kérdésed nincs... Az lpt port jelentése Linear Print Terminal. A linkelt tartalom kicsit kevés, hogy pontosan tudjuk mi nem világos számodra. Szerintem ez még nem a neked való projekt. Kezd egy sima nyomógombal és egy led-el, ha azt már tudod villogtatni egy általad választott avr-el, akkor fuss neki mégegyszer. Idézet: Szerintem a Line PrinTer roviditese. Sornyomtato, magyarul. Legalabbis 30 eve meg ezt jelentette. „Az lpt port jelentése Linear Print Terminal.”
Egy kérdés.
6 nyomogombot kezelek egy IRQ rutinban. Ezek közül 1 gombnak egy bonyolultabb funkciot tervezek ( illetve megcsináltam, de nem müködik megbizhatoan). Szoval ennek a gombnak ( nevezzük F - nek). 2 funkcioja van. Az egyik - azonnali - feladat, hogy leállitja a futo programot ( motorokat). A másik funkcioja meg az lenne, hogy 3 üzemmod között váltson, nos ez utobbi egy kicsit bizonytalan, néha vált néha nem. Ezért gondoltam, hogy az üzemmodváltást fel kéne javitani pl. ugy, hogy akkor váltana csak, ha az F gomb legalább 3 másodpercig nyomva van. Nos ezt kéne kezelni. Két ötletem van, az egyik hogy elinditok egy timert, s ha 3 sec alatt állandoan az F van beolvasva, akkor vált, vagy ugy, hogy elinditok egy számlálot, ami mondjuk 50-röl leszámolna és ha 50x egymás után az IRQ az F-t olvasná be, akkor történne az üzemmodváltás. Ha közben nem az F lenne beolvasva, akkor visszaállna a számlálo 50-re és várná ujra az F gombot. Mi lenne egyszerübb, könnyebben kivitelezhetö? A hozzászólás módosítva: Nov 7, 2014
Idézet: „Szerintem a Line PrinTer roviditese. Sornyomtato, magyarul. Legalabbis 30 eve meg ezt jelentette.” Igen én nyomtato portra gondoltam! Akkor a kérdés: Hogy lehet LPT porton programozni azt a programot ami a cikkben van és a propeller kijelző program nélkül? És, hogy tudna-e valaki ajánlani egy videot vagy segitene megirni a programot? ![]() A hozzászólás módosítva: Nov 7, 2014
Halvany fogalmam sincs rola, hogy hogyan lehet programozni. En csak arra reagaltam, hogy az LPT rovidites mit takar.
Programozás
Google: AVR+STK200 Bővebben: Link Ezek közül valamelyiket megépíted. ATMEL Studioval lefordítod a programodat, ez már tudtommal nem kezeli az STK200-ast. Ezért a kapott *.hex állományt feltölteni pl.: régebbi Bascom IDE-vel tudod.
Egy gomb lenyomva tartásának idejét, csak akkor fogod megtudni, ha már felengedted. Ezért a gomb felengedését kell figyelni (ehhez el kell tárolnod a gomb előző állapotát is). Célszerű ezt timer interruptban megtenni. Mondjuk ha másodpercenként 30-szor olvasod be a gombokat, akkor azt kell számolni, hogy 90 beolvasásig le volt-e nyomva. Ehhez kell egy számláló amit mindig megnövelsz eggyel ha az F gombod le van nyomva (a túlcsordulását nem szabad megengedni). Ha a felengedéskor nagyobb ez a számláló mint 90 (3 másodperc), akkor hosszan nyomtad, ha nem akkor röviden. A felengedéskor ne felejtsd el a számlálót is lenullázni.
Kösz, de ez nem fog menni, mert a meglevö IRQ rutin csak azzal foglalkozik, hogy ciklusonként megmondja melyik gomb van megnyomva a 6 közül. Szoval ez a kiindulási alap. Ez a rutin már teljesen be van dolgozva a program minden részébe és minden müködik.
Ezen nem szeretnék változtatni. Azaz az emlitett F gomb is müködik és minden üzemmodban van egy alapfunkcioja. Ezt meg szeretném tartani, már honapok ota irom a progit. Az egyik üzemmodban az alapfunkcio mellett elvben üzemmodot is váltania kellene, de nyilvánvaloan hogy itt konfliktusba kerül önmagával, mert elvégzi elsödleges feladatát és közben "maga alá vált", hiszen üzemmodot is vált. Ezt szeretném valahogy megoldani, hogy a másodlagos feladat ne keveredjen a fö feladattal. Ezért gondoltam, hogy az üzemmodváltásra csak akkor kerülne sor, ha a gomb hosszabb ideig van lenyomva. Azt sajnos ki kell zárnom, hogy közben felengedem. Esetleg még az jöhetne számitásba, hogy az emlegetett 3 sec alatt 2x kellene ugyanazt az F gombot lenyomni. Ez nem okozna konfliktust a fö feladatokban, mégis elkülönitené az üzemmodváltást. ( a progi ASM-ben van).
Szia!
Szerintem nem kell megvárni a gomb elengedését, ha az INT rutinban a számláló eléri a 90-et, bebillent egy "hosszannyomtak" bitet, ezt a főprogram figyeli és elmegy, ahova kell.
Én is valami ilyesmire gondolok, az INT/IRQ rutin kimenete a gomb értéke (1-6). Ha ide beraknák egy számlálot, ami minden ciklusban , ha nem változik a gomb (F=6) értéke 1-l növekedne, különben nullázodna - akkor a számlálo értéke + gomb értéke egyöntetüen adhatná az üzemmodválto parancsot. Na még alszok rá egyet s aztán nekifogok megirni a rutint.
Most nézem ( már el is felejtettem) hogy az IRQ rutinban van egy prellmentesités is, ami a gombok prelljét szüri ( hasonlo elven, azaz egymásután 5x kell beolvasnia ugyanazt a gombot mielött továbbadja.). Ha ide beirnék egy másikat - csakis egy gombra hangolva és az 5 helyet mondjuk 50-t kéne számolnia, akkor lehet, hogy használhato is lenne.
Megjegyzem: ha timer megszakításban kérdezed le a gombokat 20-30 lekérdezés/másodperc sebességgel, nem kell foglalkoznod a prellmentesítéssel.
wbt: igazad van, ha a számláló eléri a 90-et az tényleg elég, nem kell megvárni azt hogy utána még fél óráig nyomjuk a gombot. A hozzászólás módosítva: Nov 7, 2014
|
Bejelentkezés
Hirdetés |