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   320 / 840
(#) BBenyó válasza Reggie hozzászólására (») Ápr 8, 2011 /
 
oks, köszi, majd jelzem, ha sikerült!!
(#) robotech hozzászólása Ápr 8, 2011 /
 
Sziasztok!
AVR-el még nem dolgoztam, csak PICcel, most is csak beégetni szeretnék egy kész programot. (mellékelem).
Ez a hex file teljesen úgy néz ki,mint egy PIC-es hex file, a sorok elején a memória címek is láthatóak (mármint a tartomány, soronként).
Készítette egy soros égetőt a lancOS oldal alapján,és PonyProg-ot töltöttem le az égetéshez.
A kontrollert írom-olvasom, teljesen jól működik, egy bajom van:
Ha betöltöm a HEX filet,akkor a program kódban megjelenik a hexfile sor elején lévő memóriacím is, így a 8K-ba beleférő kód, túllép jóval 8K-n, az eeprom területre is beleír, tiszta zöldség az egész....
Szóval a kérdésem az lenne, hogy hogyan tudom a programozó szoftver értésére adni,hogy ez a hexa file ez tartalmazza a címet is a sor elején,és azt ezért ne tegye bele a kódba?!
Köszönöm a segítséget előre is!
(#) robotech válasza robotech hozzászólására (») Ápr 8, 2011 /
 
Aha!
tudom mi a baj, csak nem tudom, hogyan lehet orvosolni:

ez a hex file html oldalba volt beimportálva,és én egyszerűen ctrl+c , ctrl+v -vel tettem be fileba.
Egy másik sample programot ha megnyitok, akkor a memóriacím nem kerül bele a kódba. Tehát valahogy a sorvégekkel, vagy ilyesmivel lehet baj.
Megnyitottam a filet HEXeditorral,és a másik példa programot is, de mindkettőnek a sorvége 0D, 0A-val végződik, a file vége viszont a helyes programnál 0D,0A, a hibás programnál viszont 0D,0A,0D,0A.


Akkor meg is mondom: Ez volt a hiba! Kitöröltem az utolsó szekvenciát, és most jól beolvasta a PonyProg!
Köszönöm a segítséget mindenkinek!

(ez az a helyzet,amikor előbb írok,mint gondolkodok :no: )
(#) L_Maqvus hozzászólása Ápr 8, 2011 /
 
Sziasztok!

A Topi féle AVR programozót használom, de sajnos nem igazán akar müködni! A soros porti kommunikáció nem müködik! Ha átrakom hid módba akkor win7 alatt semmi, Linux alatt pedig /dev/-ből eltünik az att. Így nemtudom használni. Nincs valakinek ötlete mitől lehet ez?

Mivel lehet usb-soros átalakítani? illetve a kristálynak mire vna szüksége? Tápfeszre? vagy csak az avr emgfelelő kimenetére kell kötni?

üdv: maq
(#) AxaGame hozzászólása Ápr 9, 2011 /
 
Sziasztok!
Kezdőhöz méltó kezdő kérdésem lenne.
Programozó: AVR dragon, ISP letöltéssel.
IC: Tiny45
Ha a FUSE biteknél letiltom a reset lehetőségét, akkor tudom még valaha a beforrasztott IC-t programozni? Vagy csak a program lezárása után szabad letiltani a reset lehetőségét?
(A probléma abból ered, hogy nagyon kellene az ADC0 láb, ami ugyebár együtt van a reset-tel.)
Köszi!
Z.
(#) puli122 válasza AxaGame hozzászólására (») Ápr 9, 2011 /
 
A resetet a helyedben csak a végleges program után zárnám le. Az Isp programozó megköveteli a resetet, így ezzel már nem fogod tudni átírni. Persze van lehetőség utána is nagyfesz programozóval, de az macerásabb talán.
(#) H2opok hozzászólása Ápr 10, 2011 /
 
Üdv
1 kérdésem lenne. Nem igazán vagyok "otthon" az AVR és pic programozásban, (annyit tudok, hogy ha van 1 Hex, azt beégetem és kész) de most kaptam 1 motor vezérlő elektronikát, amiben van egy Attiny2310-20su kontroller. Van 1 Pickit2-m, amivel- úgy tudom- be lehet égetni a meglévő HEX-et, nekem csak erre lenne szükség, ha változtatni kellene a programon.
http://pickit2.isgreat.org/
Mit kell átalakítani esetleg módosítani a Pickit2-n,hogy ezt meg tudjam csinálni? Vagy felejtős.
Köszi
(#) edison14 válasza H2opok hozzászólására (») Ápr 10, 2011 /
 
Helló. ITT megtalálod a szükséges információkat.
(#) raiman hozzászólása Ápr 10, 2011 /
 
Sziasztok
Segítségért fordulnék hozzátok.
Megépítettem életem első AVR-es kapcsolását, egy digitális labortápot, amit egy ATmega8 vezérel.
Annyi különbség van az eredetihez képest, hogy én ATmega8 helyett ATmega8A-t raktam bele.
Működik minden szépen és jól, kivéve azt, hogy nagyon lassú a működése, konkrétan van hogy két mp-ig is kell nyomni a gombot hogy valami történjen.
Mellékelem a kapcsolási rajzot és a hex-et.
Akinek van ötlete légyszíves segítsen. Elképzelhető, hogy az AVR programozásakor rontottam el valamit? Programozásnál nem állítottam át semmit, a fuse bitekkel sem variáltam. Előre is köszönöm a segítséget.
(#) huba válasza raiman hozzászólására (») Ápr 10, 2011 /
 
"Po przestawieniu na 8Mhz wszystko chodzi jak powinno." Azaz állítsd át a mega8 órajelforrását belső 8Mhz-re, mert a gyári beállítás 1Mhz. Internal 8mhz. Szabad kérdezni milyen programmal programoztad fel a processzort.?
(#) raiman válasza huba hozzászólására (») Ápr 10, 2011 /
 
Szia
AVR Studióval programoztam.
Azt még had kérdezzem meg , hogy lehet átállítani az órajelforrást? Gondolom valahol a fuse biteknél kéne keresnem, illetve azok közt a fülek közt.

Egyébként köszönöm szépen a segítséget!
(#) huba válasza raiman hozzászólására (») Ápr 10, 2011 /
 
Itt kell állítani.

fuse.JPG
    
(#) raiman válasza huba hozzászólására (») Ápr 10, 2011 /
 
Köszönöm szépen!
Jelen pillanatban nem vagyok otthon, de amint hazaérek és újra felprogramozom az AVR-t, jelentkezem hogy mi a helyzet
Mégegyszer köszönöm, nagyon sokat segítettél :worship:
(#) zoox hozzászólása Ápr 11, 2011 /
 
Sziasztok!

Ujból megkérdezném hogy van-e lehetőség feltámasztani a ATMEL 89C52-t.A programozó nem tudja törölni ERASE ERRORT-t ir ki (valószinü le van zárva ,de nem tudom hogy ezt az eszközt lehet -e ugy törölni valamilyen eljárással mint a PIC-et.) Az adatlapja szerint FLASH uc de nem értem hogy akkor miért nem tudom törölni?
(#) raiman válasza raiman hozzászólására (») Ápr 11, 2011 /
 
Köszönöm szépen Huba a segítséged, működik mostmár tökéletesen a cucc
(#) AxaGame válasza puli122 hozzászólására (») Ápr 11, 2011 /
 
Kedves Puli122!

Köszönöm a válaszod!
Igyekszem nem piszkálni azt a fránya beállítást.

Üdv!
(#) Axel hozzászólása Ápr 12, 2011 /
 
Sziasztok!

Elnézést ha a kérdésem kicsit offtopik lesz.
String-et szeretnék küldeni a HT terminálproginak UART-on keresztül úgy, hogy minden egyes küldött string új sorba kerüljön. Az álábbi kódrészlettel csinálnám:
  1. char string [] = "String \n";
  2. while(string[i]!='\0'){
  3. UARTAdatKuld(string[i]);
  4. i++;}
  5. i=0;

A gond az, hogy az újsor karakter elküldése esetén is egymás mellé íródnak a string-ek. Mit csinálok rosszul? DevC++ alatt nekem ez működött.
(#) L_Maqvus válasza Axel hozzászólására (») Ápr 12, 2011 /
 
terminál esetén nem \r\n kell? (soremelés ha jólemlékszem) Vagy a fordítotja \n\r

Meg a másik gyanus nekem: char string [] = "String \n";
Ez elvileg létrehoz egy char tömböt.
Ergo while(string[i]!='\0') elvileg mindig igaz. Kivéve ha a memoriaszemét nem lesz \0; Mivel a C nem ellenörzi az indexek érvényességét. Nemtudom egy elindexelés mennyire boritja meg az AVR-t, de nekem már sikerült vele windózt (sőt még linuxot is) a mélybe rántnai vele.
Amire te gondolsz szerintem az a string osztály. ami automatikusan elrendezi a \0-t.

Korrekten sztem így lehetne:
char string [] = "String \n\0";

De már nagyon este van ehhez, remélem tudtam segíteni.

+1: az i-nek miért a ciklus után van érték adva? Előtte megvan adva a kezdőérték?
(#) sgt válasza Axel hozzászólására (») Ápr 12, 2011 /
 
Van egy nem nyomtatható karakter az ascii tábla elején. Már hirtelen nem tudom melyik, de sortöréses, és annak a számát simán elküldöd.
(#) Axel válasza sgt hozzászólására (») Ápr 12, 2011 /
 
Köszi így már jó lesz! Annyi, hogy a "kocsi vissza" karaktert is hexában kellett elküldeni és akkor már működik a sortörés.
(#) Ricsi89 hozzászólása Ápr 14, 2011 /
 
Sziasztok!
Uart-ról stringet akarok beolvasni. Az úgy jó, hogy egy while ciklust írok, ami addig tölti felfelé a stringet, amíg nem jön a sor vége(\n) karakter? Leírom az általam elképzelt kódot hozzá.
  1. int i=0;
  2. while(!(buf[i]=='\n')){
  3.                 buf[i]=uart_getc();
  4.                 ++i;
  5.         }

Ez így működőképes?
A lényeg az lenne, hogy folyamatosan jön az adat uart-on és ezt kellene feldolgozni. Egy gps modul ontja magából a sok adatot és szűrni kellene a megfelelő infókat. Bár van egy olyan sejtésem, hogy nem fog működni.
(#) sgt válasza Ricsi89 hozzászólására (») Ápr 15, 2011 /
 
Algoritmus nem egészen jó. Amikor kapsz egy '\n'-t akkor inkrementálod a tömb indexet így while ciklus argumentumában már az "új" üres tömb elemet hasonlítod össze a '\n'-el, nem pedig azt amiben valójában is van.
(#) L_Maqvus hozzászólása Ápr 15, 2011 /
 
Sziasztok!
Ha külső kristályra állitottam az avr-t akkor utána hogy tudom a topi féle programozóval programozni utána? 7,3728 MHZ-es kristály.

Egyszerűen nem tudom programozni!
(#) Ricsi89 válasza L_Maqvus hozzászólására (») Ápr 15, 2011 /
 
Rakjál rá egy kristályt és menni fog.
(#) L_Maqvus válasza Ricsi89 hozzászólására (») Ápr 15, 2011 /
 
Rajtavan és nemmegy.
(#) Ricsi89 válasza sgt hozzászólására (») Ápr 15, 2011 /
 
Igen, tényleg. Ezt nem is vettem észre. Akkor a while-ban kivonok 1-et a tömb eleméből és jó is lesz. Azon gondolkozok, hogy az olvasást viszont úgy kellene kezdeni, hogy a sor elejétől, a sor vége karakterig kellene olvasni. Tehát a két sorvége karakter közötti szöveget kellene kiolvasnom. A szöveg meg a soros porton folyamatosan jön.
(#) Ricsi89 válasza L_Maqvus hozzászólására (») Ápr 15, 2011 /
 
Kondi is van rajta? Nem lehet, hogy külső RC oszcillátorra raktad?
(#) L_Maqvus válasza Ricsi89 hozzászólására (») Ápr 15, 2011 /
 
Külső oscillátoron van!
Kondik vannak rajta!
(#) L_Maqvus válasza L_Maqvus hozzászólására (») Ápr 15, 2011 /
 
Igazából már kezdek magamba is bizonytalan lenni, hogy kell bekötni a kristályt? Xtal1 és xtal 2 közzé
(#) Axel válasza L_Maqvus hozzászólására (») Ápr 15, 2011 /
 
Rajta volt már a kristály mikor átállítottad a fuse bitet külső oszcillátorra vagy először átállítottad és utána tetted rá a kristályt?
Következő: »»   320 / 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