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   332 / 840
(#) sikolymester válasza Massawa hozzászólására (») Jún 13, 2011 /
 
Így hirtelen arra tudok gondolni, hogy a használt pinek nincsenek kimenetre konfigurálva, ezért csak kis áramot tudna leadni, ami nem hajtja ki a ULN2803A lábait rendesen.

De második olvasásra látom, hogy más hibák is vannak, illetve lehet, hogy félre is értettem. Szóval így nehéz mit mondani.

Egy kapcsolási rajz, ami alapján a nyák készítve lett, illetve a forráskód segítene tisztán látni.
(#) sikolymester válasza yoman917 hozzászólására (») Jún 13, 2011 /
 
Ha be van konfigolva minden, akkor elindítod a konverziót, miszerint az adcstart bitet egyre írod (adatlapban ott van, hogy mi a pontos neve). Miután kész az adc művelet (ezt onnan látod, hogy 1re állít egy flaget, amivel jelzi hogy kész), akkor az ADCH és ADCL regiszterekben ott van az érték amit az ADC -re hivatkozva kiolvas neked 16 biten.

Röviden ennyi. Túrd át az adatlap ADC részét, illetve keress ADC AVR tutorialokat, hogyha semmi nem megy.
(#) yoman917 hozzászólása Jún 13, 2011 /
 
Sziasztok.
Sikerült kiviteleznem az ADC-t, már csak annyi kérdésem lenne, hogy ezt hogyan tudnám lerövidíteni, mert 10K méretű lett a hex fájl:

  1. unsigned char I1,I2;
  2.                 I1=(I);
  3.                 I2=((I-(float)(I1))*10);
  4.                
  5.                 PORTA|=0x80;
  6.                 PORTB|=I1;
  7.                 _delay_us(1300);
  8.  
  9.                 PORTA^=0x80;
  10.                 PORTB=I2;
  11.                 PORTA|=0x40;
  12.                 delay_us(1300);
  13.                 PORTA^=0x40;

A program lényege, hogy ha a PORTA|=0x80, akkor a PORTB-re ezt a számot irja ki, ha a PORTA|=0x40, akkor A PORTB-n az I2 szám jelenik meg.
(#) p_istvan válasza yoman917 hozzászólására (») Jún 13, 2011 /
 
Szervusz!

Muszáj neked lebegőpontos számokkal dolgozni, mikor 16 bites értékeit vannak?
(#) yoman917 válasza p_istvan hozzászólására (») Jún 13, 2011 /
 
Nem nem, sikerült kijavítanom.
Üdv,
yoman
(#) Massawa válasza sikolymester hozzászólására (») Jún 13, 2011 /
 
Kösz!


Közben már rájöttem, valoban a DDR parancsok voltak rosszak. Már minden megy.
(#) boldivi válasza sikolymester hozzászólására (») Jún 13, 2011 /
 
Rájöttem a hibára. Nem a Linker-hez adtam hozzá!

Elnézést!

Nagyon dolgozom ezen a matek részen.

Sikolymester köszi a választ! Átírom csak írásra, ha már csak írni szeretnék. Legyen precíz.
(#) zsozsoX hozzászólása Jún 14, 2011 /
 
Sziasztok
Kérdésem a következő lenne. Macintosh-ra fel lehet telepíteni a avr studiot és a Topi féle programozót? Valakinek ebben esetleg van tapasztalata?
(#) trudnai válasza zsozsoX hozzászólására (») Jún 14, 2011 /
 
En VirtualBox-ra felinstallaltam Windows-t es minden onnan megy. Elmeletileg Mono kornyezettel lehetne .NET programokat futtatni, de ugy meg nem probaltam.
(#) vagnerjazon hozzászólása Jún 16, 2011 /
 
Ha az AVR SPI-jén van valami, és programozni kéne az AVR-t, akkor hogy lehet megoldani, hogy a rajta lévő eszköz ne kavarjon be programozásnál? Esetleg egy felhúzóellenállás az eszköz CS lábára, működne? (Így reményeim szerint nem lenne gond ha az AVR GND-t kapcsol rá, csak akkor elég nagy ellenállás kéne(100k jó lenne?).)
(#) zolee1209 válasza vagnerjazon hozzászólására (») Jún 16, 2011 /
 
Szintillesztés nélküli SPI kapcsolatról nem tudok nyilatkozni, mert olyannal nem volt még dolgom. De AVR- microSD kártya páros, vagy SPI felületű LCD esetén semmi gond nem volt, ami az AVR felprogramozását jelenti...
(#) vagnerjazon válasza zolee1209 hozzászólására (») Jún 16, 2011 /
 
Köszönöm, hát én egyenlőre csak az SPI-s cikkben lévő 74HC595-öt fogom használni, és azért kérdezem, mert nem biztos hogy jó lenne ha programozás közben összevissza kapcsolgatná a kimeneteit. Mondjuk nem tudom, hogy ez bekövetkezhet-e, még nincs tapasztalatom SPI-vel, csak készülök, mert nemsokára használni fogom.
(#) zolee1209 válasza vagnerjazon hozzászólására (») Jún 16, 2011 /
 
Értelek most már... Én úgy értettem, hogy az SPI buszra csatlakoztatott eszköz bekavar-e a programozásban.
Amennyiben fontos, hogy az SPI eszköz ne rakoncátlankodjon, amíg felprogramozod az AVR-t, akkor ahogyan Te is mondtad, az eszköz /CS lábát egy ellenálláson keresztül tápra kötöd. Pl 10k, nem kellenek 100k nagyságrendű ellenállások. Továbbá egy másik észrevétel, de nem tudom 100%-ra garantálni, hogy ez okozza, mérni nem mértem. Az SD kártya az AVR /SS lábán volt, míg az LCD /CS lába egy másik pinen. Az SD kártya rendszeresen megkukult programozás alatt, az LCD nem. Szóval előfordulhat, hogy az /SS láb alacsonyra vált programozáskor, de ezt nem tudom biztosra mondani.
(#) vagnerjazon válasza zolee1209 hozzászólására (») Jún 16, 2011 /
 
Értem, és köszönöm a választ, akkor ellenállással csinálom. Köszönöm szépen!
(#) Fizikus válasza vagnerjazon hozzászólására (») Jún 16, 2011 /
 
Az is egy megoldas lehet ha a Slave SPI eszkoz CS labat nem az AVR SS pin-jere kotod, hanem egy masik pinre, amit nem zavar a programozas, es azt huzod fel tapra.
(#) vagnerjazon válasza Fizikus hozzászólására (») Jún 16, 2011 /
 
De programozás alatt az AVR lábai nem GND-n vannak? Mert akkor mindegy hova kötöm, mert be fog kapcsolódni, nem? Vagy ez így nem jó?
(#) zolee1209 válasza vagnerjazon hozzászólására (») Jún 16, 2011 /
 
Az régen rossz lenne, ha GND-re kerülnének a lábak programozáskor. Ha egy bemenetet letesz GND-re, amin éppen 5V van, akkor ott lesz egy szép rövidzár. Ha pedig így lenne, akkor nem valósulhatna meg az áramkörben való programozás lehetősége. Így nagy eséllyel mondható, hogy programozáskor a lábak nagyimpedanciás állapotba kerülnek. De ez biztosan az adatlapban is benne van valahol...
szerk.: Vagy bemenetnek konfigurálódnak...
(#) vagnerjazon válasza zolee1209 hozzászólására (») Jún 16, 2011 /
 
Eszerint ezt rosszul gondoltam, köszönöm a helyesbítést. Akkor azt hiszem, hogy majd ha meglesz minden a kipróbáláshoz, akkor majd kiderítem, hogy mikor mi van programozáskor.
(#) bedoweb hozzászólása Jún 17, 2011 /
 
Sziasztok!

Még 1 hónapja volt, hogy valamiért egyszercsak bemondta az unalmast a programozóm (amit programmers notepad alatt használtam) kaptam egy olyan tippet, hogy rakjam fel az avr studio-t és állítsam át, a programozás frekvenciáját.

Most volt is rá időm, így leszedtem (avr studio 5) de jött az újabb akadály, rámegyek a programozásra, de nem látja a programozómat. Mi lehet a baj? vagy mit csinálok rosszul? Ha esetleg valaki tudja a választ és ír is, annak előre is köszönöm.
(#) Massawa válasza bedoweb hozzászólására (») Jún 18, 2011 /
 
Feljátszottad a megfelelö USB meghajtokat? (szintén benne van a csomagban vagy fennt a honlapon).
(#) bedoweb válasza Massawa hozzászólására (») Jún 18, 2011 /
 
az avr Jungo USB felment
(#) yoman917 hozzászólása Jún 20, 2011 /
 
Sziasztok
Meg tudnátok mondani, hogy ez a sor pontosan mit jelent?

(ADMUX & 0b11110000)
(#) nolex hozzászólása Jún 21, 2011 /
 
  1. int main(void)
  2. {
  3. DDRD = (1<<PIND0) | (1<<PIND1) ;
  4. DDRC= (0<< PINC5) | (0<<PINC4);
  5. //uint8_t szamlalo=0;
  6.     while(1)
  7.     {
  8.         delay_10ms(10);
  9.                 lamp1on;lamp2on;
  10.                 if((PINC & (1<<PINC5)))lamp1off;
  11.                 if((PINC & (1<<PINC4)))lamp2off;
  12.     }
  13.         return 0;
  14. }

Ennek a kódnak elvileg azt kéne tennie, hogy nyomógomb lenyomása esetén kikapcsoljon/felvillanjon a LED. De pl most az egyik led ki-be kapcsolgat...azért tettem be a delay-t, mert csak így működik. Így ha lenyomom tényleg kikapcsol. Ha a delay nincs benne, akkor csak a LED elhalványul, de nem kapcsolódik ki. Miért? olyan mintha megbolondulna, mert ha felengedem a gombot teljesen random ki-be kapcsolódnak, míg az egyik led kikapcsol, a másik nem...Nem mértem a lábon 0,35V-nál többet sose.
(#) nolex válasza nolex hozzászólására (») Jún 21, 2011 /
 
Már meg van, nem lehet cmos lábat a levegőbe hagyni Vagyis van testre legyen húzva, vagy tápra, és akkor úgy kell beállítani a kapcsolót.
(#) Proci_85 válasza nolex hozzászólására (») Jún 21, 2011 /
 
Szerintem 1x pereg a kapcsolód, másszor pedig az if előtt bekapcsolod majd rögtön kikapcsolod.
Azaz hihetetlen gyorsan ki-bekapcsolod. A mikrovezérlő gyorsabb, mint ahogyan azt a led követni tudná, ezért látod halványabban. Nincs ideje bekapcsolni, mert már kapcsolja is ki a vezérlő
(#) nolex válasza Proci_85 hozzászólására (») Jún 21, 2011 /
 
Rendben van, de tényleg az volt a hiba, mint amit fenntebb írtam: ha nem kötöm alapértelmezetten egy fix pontra a lábat, akkor összevissza ugrál, ki-be kapcsol. Most egy 680 ohmossal a földre húztam, így faszán működik

Olvastam h kandós vagy, készülök már előre Prog2-re Nehogy valkait kikapjam osztán világvége lesz
(#) Ricsi89 válasza nolex hozzászólására (») Jún 21, 2011 /
 
Egyébként meg érdemes bekapcsolni a felhúzó ellenállást és akkor lóghat a levegőben a láb. Ekkor testre kapcsolás lesz a gombnyomás.
Egyébként én sem értem miért jó az, hogy a while-on belül előbb bekapcsolod, majd ki is kapcsolod a ledet, hiszem utána egy szempillantás alatt vissza is kapcsolódik. Szemléletesebb lenne, ha a program elején bekapcsolnád, majd a while-ban kikapcsolnád. Esetleg gombnyomásra vissza is tudnád kapcsolni.
(#) nolex válasza Ricsi89 hozzászólására (») Jún 21, 2011 /
 
belső felhúzó ellenállást hogy lehet bekapcsolni?
(#) Massawa válasza nolex hozzászólására (») Jún 21, 2011 /
 
Például ugy, hogy kiküldes a bemeneti portra egy magas szintet:

sbi PORTB,PB4 ; ez a B port 4. bitjére kapcsolja a pull-up ellenállást
(#) Ricsi89 válasza nolex hozzászólására (») Jún 21, 2011 /
 
Vezérlő adatlap, portok résznél ott van leírva.
Következő: »»   332 / 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