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   599 / 837
(#) TavIR-AVR válasza mzozo95 hozzászólására (») Ápr 13, 2014 /
 
A 6-os ISP ott van mellette.
(#) kameleon2 hozzászólása Ápr 13, 2014 /
 
Sziasztok! Kínai STC89C52RC IC-hez keresek konfig és programozó fájlokat, programokat. Kínai változat van, de a kanji nem az erősségem. Tudna valaki segíteni? Megküzdött ezzel már valaki? Nagyon olcsó mikrokontroller és sok egyszerű feladatra tökéletesen megtenné. Csak olyan írjon, aki kifejezetten ezzel a típussal találkozott, a google keresések javán túl vagyok, konkrét megoldást keresek.
(#) mzozo95 válasza TavIR-AVR hozzászólására (») Ápr 13, 2014 /
 
Mármint? Nekem csak "homemade" programozóm és eszközeim vannak, lehet azért nem teljesen világos. Mármint terveztek egy normál is csatlakozási lehetőséget az smd-s nyákra, és nem a beépítés előtt programoztok?
A hozzászólás módosítva: Ápr 13, 2014
(#) Droot válasza TavIR-AVR hozzászólására (») Ápr 13, 2014 /
 
Paritás bit 1, Adatbit 8, autobauding van tehát magától szinkronizál.
Annyira eljutottam most hogy a modul bekapcsol rendesen. Az Rx Tx lábat keresztbekötöttem az USB-s átalakítóval és a képen látható adatokat küldi bekapcsoláskor.

Mi a probléma?

untitled.PNG
    
(#) TavIR-AVR válasza mzozo95 hozzászólására (») Ápr 13, 2014 / 1
 
Igen, szabványos isp6.
SMD-t a céláramkörben programozom.
A hozzászólás módosítva: Ápr 13, 2014
(#) Topi válasza mzozo95 hozzászólására (») Ápr 14, 2014 /
 
Még széria gyártásban is utólag beültetés után van programozva az SMD proci. Nálunk a beméréskor a teszt-tűágyra helyezve kapják meg az áramkörök a programot. Vannak olyanok amik a tűágyas teszt idejére tesztprogramot kapnak, majd a teszt ciklus végén az eredeti programot.
A hozzászólás módosítva: Ápr 14, 2014
(#) kokike28 hozzászólása Ápr 14, 2014 /
 
Sziasztok, van egy LC mérö rajzom ami 1uH-0.5mH tartományba mér, az lenne a kérdésem hogy lehet-e ezt a tartományt növelni valamilyen módon, vagy ahoz teljesen más rajz és más programozás kell ?

A válaszokat elöre is köszönöm.

lcavr.jpg
    
(#) Droot válasza Droot hozzászólására (») Ápr 14, 2014 /
 
Valakinek valami ötlet?
(#) erdgab válasza kokike28 hozzászólására (») Ápr 14, 2014 /
 
Építsd meg az LCM3 készüléketItt találod. Vagy egy másik,hogy az atmegánál maradjunk,itt találod.
(#) kokike28 válasza erdgab hozzászólására (») Ápr 15, 2014 /
 
Köszi a segitséget
(#) kokike28 válasza erdgab hozzászólására (») Ápr 16, 2014 /
 
Szia, megépitettem szimulátorba (Proteus 8) ezt a kapcsolást amit ajánlottál, de a kijelzön nem látszik semmi, ez gondolom azért van mert a külsö 20Mhz-es oszcilátort kellene használni, nem pedig ami az atmega8-ba van.
Hogy tudnám használni a külsö oszcilátort a szimulátorba ? az atmega8-ba a beálitásokba van lehetöség külsö oszcilátor használatára, de ha beálitok egyet, rögtön hibát ir ki (CKSEL fuse bits specify external oscillator but no CLOCK frequency is specified).
Hogy lehetne beálitani az atmega8-at hogy használja a külsö oszcilátort ?
A hozzászólás módosítva: Ápr 16, 2014
(#) fecus hozzászólása Ápr 16, 2014 /
 
Szeretnék egy olyan fényerőszabályzót építeni attiny45-ből vagy efféle kis eszközből, ami egy fényérzékelő és egy ledsor segítségével állandó megvilágítást tart egy területen. (monitor háttérvilágítása) A kínaiaktól vettem egy kis fénymérő panelt azt szólítaná meg a uC.
Tudtok valami linket, hogy miképpen kell egy ilyen szabályzó algoritmust C-ben megírni ami belefér egy ilyen kis eszközbe?
(#) kapu48 válasza fecus hozzászólására (») Ápr 17, 2014 /
 
Ilyen kis eszközben inkább ASM-ban irnám.
Pl. itt van valami hasonló:
Ledline Intensity control for LEDs with ATtiny13

Bővebben: Link
(#) pluto válasza kapu48 hozzászólására (») Ápr 17, 2014 /
 
Tudom hogy reggel van, de sikerült a saját E:\ meghajtódat belinkelni.
(#) kapu48 válasza pluto hozzászólására (») Ápr 17, 2014 /
 
Jé, Tényleg! Valaki törölhetné!

Akkor innen szedtem le, azt hiszem az alsó link:
Bővebben: Link
(#) Sick-Bastard hozzászólása Ápr 17, 2014 /
 
Üdv!

A mai nap egy ATmega1284P-vel történő SD kártya kezelésével szerettem volna megismerkedni.

Hogy lássam mit is csinálok, hol akadok el, a parancsokat HyperTerinalban kiíratom magamnak.
A gond nem váratott sokat magára. Egy tesztelő ciklust szerettem volna létrehozni az R1 (Response 1) adat tesztelésére.

Elsőre egy if loop-ot hoztam létre:

  1. if(R1 != 0x01)                                                                 
  2.         {
  3.                 R1 = SPIWRD(0xFF);                                     
  4.                 USART0_TX_String("Response 1: ");
  5.                 itoa(R1, StringA, 10);
  6.                 USART0_TX_String(StringA);
  7.                
  8.                 USART0_TXD(10);                                
  9.                 USART0_TXD(13);
  10.                 _delay_ms(250);
  11.         }


A gond, hogy ekkor csak azokat a válaszokat írja ki, amik nem egyenlőek 0x01-el.

Ekkor while-ra gondoltam, de hamar rájöttem, hogy ez sem lesz jó. Majd beugrott a do{}while(); ciklus:
  1. do
  2.         {
  3.                 R1 = SPIWRD(0xFF);                                     
  4.                 USART0_TX_String("Response 1: ");
  5.                 itoa(R1, StringA, 10);
  6.                 USART0_TX_String(StringA);
  7.                
  8.                 USART0_TXD(10);                                        
  9.                 USART0_TXD(13);
  10.                 _delay_ms(250);
  11.         }while(R1 != 0x01);


Ez azonban valamiért nem áll le nekem, még ha R1 == 0x01.

HyperTreminalban ezt kapom:
  1. CMD1 Send
  2. Response 1: 255
  3. Response 1: 1
  4. Response 1: 255
  5. Response 1: 255
  6. Response 1: 255


Még nem használtam ezt a hátultesztelős(jól tudom, hogy így hívják?) ciklust, szóval valamit elírtam?

SB
(#) Sick-Bastard válasza Sick-Bastard hozzászólására (») Ápr 17, 2014 /
 
Ok ez a probléma megoldva.
(#) Droot hozzászólása Ápr 17, 2014 /
 
Sziasztok!

Soros porton szeretnék egy szót küldeni a pc (pl2302 usb - rs232 konverter) felé.
Az alábbi függvényt írtam meg és nem jelenik meg a pc-n amit küldök az avr-el:
  1. void UARTAdatKuld(unsigned char data[10]) // Ez a fuggveny a kuldendo adatot beirja az UDR regiszter kimeno pufferjebe
  2. {
  3.  
  4. for(int i=0;i<=strlen(data);i++)
  5. {
  6.     while(!(UCSRA & (1<<UDRE)))  // Varakozas amig az Ado kesz nem lesz az adatkuldesre
  7.    {
  8.       //  Varakozas
  9.    }
  10.    // Az Ado mar kesz az adatkuldesre, a kuldendo adatot a kimeno pufferjebe irjuk
  11.    UDR=data[i];
  12.   }
  13. }
  14.  
  15. UARTAdatKuld("teszt");


Viszont az
  1. UARTAdatKuld(UARTAdtFogad());

kombóval visszaküldi amit elküldök neki.

Mi a gond a függvényemmel?
(#) vzoole válasza Droot hozzászólására (») Ápr 17, 2014 /
 
Nem tudom mi a baja, de talán egy tömböt nem kéne áttolni a stack-en.

Ez megy:
  1. void UARTsendDATA(char data)
  2. {
  3.       while(!(UCSRA & (1<<UDRE))) {}
  4.       UDR=data;
  5. }
  6.  
  7. void UARTsendTEXT(char *p)
  8. {
  9.       while(*p) {UARTsendDATA( *p++);}
  10. }
(#) Droot válasza vzoole hozzászólására (») Ápr 17, 2014 /
 
Köszi! Megy. Fogadásnál hogy fogadsz egész szót?
(#) 06smici hozzászólása Ápr 19, 2014 /
 
Sziasztok
Van egy mega644 AVR-em 4MHz-es kvarccal és most jelentkezett egy olyan probléma, hogy valamiért nem érzékeli a kvarcot. F_CPU-nak hiába definiálom a 4MHzet az időzítéseket 1MHz-ből számolja. De ami még ennél is nagyobb gondom, hogy elmászik emiatt az UART baud rate-je. kvarcnál megvan a két 22pF, F_CPU delay.h előtt van definiálva, de minden hiába. Ja és eddig más programoknál ez így működött.

Van valami ötletetek hol lehet a hiba? Talán fuse biteknél kéne valamit állítani neki? Atmel studio6-ban írom a programokat, eddig még egyszer nem volt szükségem fuse bitek állítására.
(#) zombee válasza 06smici hozzászólására (») Ápr 19, 2014 /
 
Pedig most szükséged lesz, másképp nem fog menni.
(#) 06smici válasza zombee hozzászólására (») Ápr 19, 2014 /
 
Ettől féltem én is. Mint az előbb írtam eddig még nem volt rá szükségem úgyhogy nem igazán értek hozzá.
Jól sejtem hogy a SUT_CKSEL-t kéne beállítani valamelyik 3-8MHz-re? Csak start-up time-nak menniyt válasszak? annak idején olvastam róla egy cikket hogy melyik mihez való de már nem emlékszem rá.
(#) kapu48 válasza 06smici hozzászólására (») Ápr 19, 2014 /
 
Ő segít Neked!

Engbedded Atmel AVR® Fuse Calculator
Bővebben: Link
(#) 06smici válasza kapu48 hozzászólására (») Ápr 19, 2014 /
 
Köszönöm.
Közben fellapoztam az AVR adatlapját, egész jól le van írva abban is. De még egy valami nem tiszta előttem: Ezeket a biteket lehet állítani kódból is és akkor a fordító automatikusan generálja a programozónak vagy csak a letöltésnél lehet beállítani?
(#) kapu48 válasza 06smici hozzászólására (») Ápr 19, 2014 /
 
Igen állítható kódból is!

De kezdőként nem ajánlom!
Mert ha letiltod a programozódat?

(Valamelyik biztos kel: JTAGEN vagy SPIEN)

Mehetsz segítségért a szomszédba!
A hozzászólás módosítva: Ápr 19, 2014
(#) 06smici válasza kapu48 hozzászólására (») Ápr 19, 2014 /
 
Most van itthon mindkét féle programozó, valamelyik bitet csak eltalálom

De egyelőre nem akarok ilyeneket állítgatni rajta, amíg nem értek hozzá. Jelenleg a kristály beállításával sem értem el sikert, az 500ms-es időzítés ugyan úgy 2s maradt. Tehát az időzítést 4MHz-ből (amit F_CPUnak megadtam) számolja, de közben az órajele meg csak 1MHz.

Még egy valamire gyanakodok. A programozómat nem támogatja az AtmelStudio ezért a lefordított HEX fáljt AVRstudio4-el töltöm rá. A fuse biteket is az AVRstudioban állítom. nem lehet hogy az AtmelStudioban kéne azt is, hogy a hex fálj már tartalmazza?
Remélem nem kérdezek túl nagy hülyeségeket, van még jó pár homályos folt AVR-ekkel kapcsolatban
(#) kapu48 válasza 06smici hozzászólására (») Ápr 19, 2014 /
 
Nem.
Inkább ellenőrizd, hogy a CLKDIV8 előtt ne legyen pipa!
(#) TavIR-AVR válasza 06smici hozzászólására (») Ápr 20, 2014 /
 
AVR-Studioban lenyíló menüből beállítod, hogy external quartz/resonator.
És divclk8 : disable, azaz ne ossza le az órajelet.
(#) zombee válasza kapu48 hozzászólására (») Ápr 20, 2014 /
 
Emlékeim szerint kódból nem lehet állítani, csak kiolvasni de az sem valami egyszerű. Nem is
kellene FUSE bitekkel bajlódni ha lehetne. Egyedül a CKDIV8 meg a WDTON ami ilyen, mert
ezekre létezik olyan utasítássor ami felülbírálja a FUSE bitek beállításait.
A hozzászólás módosítva: Ápr 20, 2014
Következő: »»   599 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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