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   6 / 837
(#) MaSTeRFoXX válasza gtk hozzászólására (») Okt 9, 2006 /
 
Akkor jön a következő kérdésem:
Hogy lehet egy regiszterben, vagy változóban egy bitet ki/be kapcsolni. pl PORTD.5 legyen H ?

Esetleg van valakinek mikrovezérlőkre vonatkozó C-s leírása?
(#) deguss válasza gtk hozzászólására (») Okt 9, 2006 /
 
Idézet:
„Az uint8 mint tipus = unsigned char-al. 8 bites elojel nelkuli.”
Bocsi, lehet hogy félreértelek, de nem "előjel nélküli"-t írtam én is? Vagy mi a baj? :nemtudom:
(#) szal válasza gtk hozzászólására (») Okt 9, 2006 /
 
Nekem a PONYPROG ami van és mükszik!
:no: Ehhez, nem tudok érdemben hozzászólni.
Sorry!
(#) MaSTeRFoXX válasza MaSTeRFoXX hozzászólására (») Okt 9, 2006 /
 

:help::lookaround:
valaki?
(#) Pavel válasza MaSTeRFoXX hozzászólására (») Okt 9, 2006 /
 
MaSTeRFoXX:
pl: PORTD |= ( 1 << PD5 );
de előtte ahhoz hogy kimenet legyen ugyebár DDRD |= (1 << PD5)! ( ezután PORTD 5 - ös lába = 1 )

PORTD &= ~(1 << PD5); nos ezzel pedig kioltod a bitet


egy tipp: az ATmega adatlapokban van egy pár C - s mintapélda , érdemes nézegetni

szal: avrdude
gtk: no problem

Üdv mindenkinek >>>>>>
(#) Gory válasza Pavel hozzászólására (») Okt 9, 2006 /
 
Igen Masterfoxx, Pavelé tökéletes megoldás, én is így szoktam.
(#) gtk válasza MaSTeRFoXX hozzászólására (») Okt 10, 2006 /
 
Idézet:
„Esetleg van valakinek mikrovezérlőkre vonatkozó C-s leírása?”

Logikai es bitmuveleteket tanuld meg C-ben ,ez a legfontosabb elsore.
Tovabba avr libc online users manual


deguss:
Idézet:
„AVR-éknél az uint8 = 8 bites unsigned integer”

itt unsigned integert irtal,en unsigned int -re gondoltam..
lehet hogy felreertettem.Nincs semmi baj
(#) MaSTeRFoXX válasza gtk hozzászólására (») Okt 10, 2006 /
 
Köszi mindenkinek!
Én tegnap végül is így oldottam meg (az avrfreaks-en találtam segédletet)

bekapcs: PORTD |=0x01 (portd.0)
kikapcs: PORTD &=~0x01
(#) gtk válasza MaSTeRFoXX hozzászólására (») Okt 11, 2006 /
 
En nem dijazom ezt a megoldast.
Hasznald azt amit Pavel irt,mert ott megadhatod a Px labat .
Azt a megoldast minden esetben hasznalhatod.
(#) MaSTeRFoXX válasza gtk hozzászólására (») Okt 11, 2006 /
 
Ok, köszi.

Utolsó kérédés: (Most már tényleg abbahagyom )
Hogy nézem meg hogy pl a Porta.7 az 1-e? (bementként van már konfigurálva)
egy IF eljárásba kellene...
(#) Gory válasza MaSTeRFoXX hozzászólására (») Okt 11, 2006 /
 
Lekérdezed a PINA regisztert

If (((PINA & 0x80) >> 7)==1) ....
(#) MaSTeRFoXX válasza Gory hozzászólására (») Okt 11, 2006 /
 
Köszi! (Ez nézné meg hogy kész van-e a méréssel a szkóp )
(#) gtk válasza MaSTeRFoXX hozzászólására (») Okt 12, 2006 /
 
Szerintem ne hagyd abba
Ha a portx.n -dik labat akarod ellenorizni,akkor csinald hasonloan:
  1. uint8_t portx = PINA; /*ez a 'A' portod olvashato regisztere,ha tobbszor kell hasznalni akkor erdemes eloszor kimasolni egy valtozoba az erteket,mert ha nem akkor a volatile volta miatt minden esetben ujra es ujra kiolvassa..*/
  2. /*keszitesz egy maszkot es & (AND) muvelettel ellenorzod a bitet hogy 1-ben van-e.*/
  3. if(portx & 0x80){ /*80h = 7. bit High*/
  4. /*PORTA 7. bit High*/
  5. }
  6.  
  7. vagy erthetobben:
  8.  
  9. uint8_t portx = PINA;//port A reg. kiolvasva
  10. uint8_t mask = (1 << PA7);//port a 7.bitje
  11. if(portx&mask)
  12. {
  13.  //PORTA 7. bit egyben van.
  14. }


Ha tobb labat/bitet kell egyszerre figyelned, akkor vizsgald igy if(portx == mask){ },a maskban meg allitsd be a megfelelo biteket es VAGYold ossze oket:
  1. uint8_t mask = (1 << PA7) | (1 << PA2) | (1 << PA0);
(#) MaSTeRFoXX válasza gtk hozzászólására (») Okt 12, 2006 /
 
Köszi!

Végül így lett megoldva:
.
while(1)
{
if(PINA & (1 << PINA7 ) )

{
kiolvas();
}
}>>
(#) gtk válasza MaSTeRFoXX hozzászólására (») Okt 12, 2006 /
 
Ok.
Ez a while(1) a main() -ben van?Vagy mashol?Mert ez vegtelen ciklus es igy megakasztod a procit,csak megszakitasra ugrik ki ebbol blokkbol..
(#) gtk válasza gtk hozzászólására (») Okt 12, 2006 /
 
bocsi! nem a procit akasztod meg hanem a programot

Kivancsisag:
Mennyivel lesz a hex kodod C-ben irva/forgatva kissebb mint basicben?
(#) MaSTeRFoXX válasza gtk hozzászólására (») Okt 12, 2006 /
 
A mani-ban van persze.
Hogy mekkora a basic és C közti különbség, azt most nem tudom megmondani, mivel nincs két ugyanolyan célú, és ugyanannyira befejezett programom .
Talán a C-s a kisebb
(#) gtk válasza MaSTeRFoXX hozzászólására (») Okt 12, 2006 /
 
Ok,mani
Majd jelezz ha lesz 2 egyforma progid.

avresek,valaki nem nezi meg nekem az IC azonositok topikban a kerdesemet?please...
(#) andrewforest válasza gtk hozzászólására (») Okt 13, 2006 /
 
AVR Studion kivül valaki tud ajánlani valmi más szimuláló progit? ATMega8 esetében TCNT1-nél a WGM13 és 12-es bitet nem veszi figyelmbe a szimulátor csak a WGM11 és 10-es bitek szerint működik... mondanom se kell mennyi fejtörést okozott... nem szeretnék megint ilyen problémákba ütközni... Más is tapasztalt már hasonló jellegű hibát ettől a szimulátortól, vagy csak nekem volt most ilyen pechem?!
Valami más szimulátor??

András
(#) Gory válasza andrewforest hozzászólására (») Okt 13, 2006 /
 
Neked is csak azt tudom javasolni hogy építs egy JTAG debuggert. Azt tudod használni az AVR studioval és nem kell a szimulátorral sz...oznod, hanem a tényleges regiszter értékeket tudod nézegetni. Az atmega8-on ha jól tudom van jtag port.

Kérem a vulgáris szavakat mellőzni! Moderator
(#) davidov válasza Gory hozzászólására (») Okt 13, 2006 /
 
Bizony! Ahogy Gory is mondja nagyon megéri építeni egy JTAG programozót, mert sokkal könnyebb vele fejleszteni, nekem is van egy, bár nem én építettem.
Egy apró kiegészítést engedj meg: az ATmega8-on nincs JTAG, ha jól tudom az ATmega16 (én ezt használom ) a legkisebb, ami támogatja.
(#) gtk válasza Gory hozzászólására (») Okt 13, 2006 /
 
Ha mar a JTAG -nal 'tartunk' amit egyszer asszem ebbe a topicba bemasoltal,az ICE -kent mukodik teljes mertekben?
Ezalatt azt ertem,hogy szimulalja az adott procit a megfelelo progival?,tehat be lehet kotni a celhardwerbe proci helyett?
Olvastam az ICEkrol hasonlokat,de ott ramokat is emlit en meg a ezen nem lattam ilyesmit.
(#) andrewforest válasza Gory hozzászólására (») Okt 13, 2006 /
 
Igen már én is gondolkoztam h építenem kéne egyet... Tudnátok küldeni egy kapcsolást, esetleg nyáktervel? Mennyiből jönne ez ki? A debuggerben is egy AVR van?
köszi
András
(#) Gory válasza gtk hozzászólására (») Okt 13, 2006 /
 
Igen egy teljes értékű JTAG ICE debugger. Úgy néz ki az egész, hogy egy mikrokontroller van benne és soros porton a gépre kötöd. A célhardvernek pedig a Jtag lábaira ráakasztod. A tápot a célhardverből veszi, ezért érdemes a soros porti szintillesztőt meg a mikrokontrollert olyat belerakni ami 3,3V-ról is működik. Így ilyen eszközöket is tudsz debuggolni.

Amit feltöltöttem ide azt a kapcsolást én ATMEGA 16L timpussal építettem meg. Kicsit hekkelni kell, de megoldható. Ha érdekelt titeket komolyabban, akkor adok tanácsokat az építéshez.

andrew: a kapcsolást én töltöttem fel ebbe a topicba valahova.
(#) andrewforest válasza Gory hozzászólására (») Okt 13, 2006 /
 
Köszi, megvan a kapcsolás!
Csak az a gondom hogy egyenlőre még csak assemblyben tudok programot írni, és nem tudom hogy mit hogy kéne meghekkelni, szoval szivesen fogadnám azokat a tanácsokat
(#) Higgins válasza andrewforest hozzászólására (») Okt 14, 2006 /
 
Hali!
Lehet én vagyok a vak, de én sehol nem találom a kapcsolást!
Valaki megadná nekem a linket amin el tudom érni!
Előre is köszönöm, és elnézést ha béna voltam!

Üdv:Higgins
(#) Higgins válasza Higgins hozzászólására (») Okt 14, 2006 /
 
Bocsika!Megtaláltam! Csak elkerülte a figyelmemet! Kár , hogy nem Bascomban van írva a forráskód! Én csak azt favorizálom. :yes:

Üdv: Higgins
(#) gtk válasza Gory hozzászólására (») Okt 14, 2006 /
 
Hekkelni ..mar mint a soft, vagy -hw oldalon?
Engem mindenkepp erdekelne...figyelem a topicot
(#) Higgins válasza gtk hozzászólására (») Okt 14, 2006 /
 
Mindkét oldalon kell kicsit hekkelni! Mivel ha jól láttam ATmega163-al van az eredeti JTAG megvalósítva. A szoftverben meg pár módosítást kell csinálni, hogy ATmega16-al is menjen, ahogy Gory írta!

Gondolkozom én is rajta, hogy megépítsem, bár eddig nem volt soha szükségem ilyen eszközre.
Most írom a szakdogám Atmega32+ wiznet modul felhasználásával mikrovezérlőbe ágyazott webszervert csináltam, de mégsem volt szükségem JTAG debugerre.

Szoftveres Debugot használok , ami a konzolra írja ki soros porton ha valami gáz van.

Aki megcsinálja, sok sikert és türelmet neki.

Üdv:Higgins
(#) andrewforest válasza Higgins hozzászólására (») Okt 14, 2006 /
 
És miért nem jó a mega163?? Már nem lehet kapni? Akkor végülis csak annyit kéne csinálni, hogy a kapcsolásban kicserélni mega16-ra, és a programban átírni az egyes regisztereket, hogy működjön azzal a procival is??
Következő: »»   6 / 837
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