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   107 / 840
(#) wg_kezdo hozzászólása Feb 28, 2009 /
 
Sziasztok!

Egy tesco-s led-es lámpát szeretnék átalakítani úgy, hogy AVR vezérelje.
3 AAA elem van benne ezt rákötném az AVR VCC GND lábaira közvetlenül és az egyik lábára pedig a ledeket.
A szoftvert megírom, gyakorlatilag csak időkapcsoló kell bele (amit az egyik megszakításon keresztül egy mikrokapcsoló kapcsol be). Az NE555-ös megoldás nem jó, mert az AVR is éppen csak belefér a dobozába. (ezért sem tudok ellenállást stb... rákötni).
A kérdésem az lenne, hogy amikor lejár az időkorlát ki tudom-e annyira kapcsolni az AVR-t, hogy szinte alig vegyen fel áramot? (vagyis, hogy több héten akár hónapokon át menjen "készenléti" üzemmódban).
Előre is köszönöm.
(#) wg_kezdo válasza wg_kezdo hozzászólására (») Feb 28, 2009 /
 
Már megint előbb írtam utána gondolkodtam:
Szóval találtam egy powerdown módot. Ha jól értem ekkor nagyon-nagyon kicsit áramot vesze fel és a külső megszakításokkal fel tudom éleszteni.
Na ez kell nekem.
Kérdésem, hogy a fenti "kapcsolással" vagyis, ha közvetlen az elemre kötöm az AVR-t akkor a minimális áramot veszi fel?
(#) vzoole válasza wg_kezdo hozzászólására (») Feb 28, 2009 /
 
kb. 0,4 uA

Nézd meg a dallamcsengő cikket, abba ilyen megoldás van.
Dallamcsengő
(#) diablo666 válasza killbill hozzászólására (») Feb 28, 2009 /
 
Igen az volta baj hogy rossz helyen volt a F_CPU, felvittem 2 sorral és már nem is irt ki hibát
(#) GTI hozzászólása Feb 28, 2009 /
 
Sziasztok

Elég kezdő vagyok még az AVR programozásban, abban szeretném a segítségeteket kérni hogy WinAVR-ben hol kell az avr belső oszcillátor sebességét emelni. Egy Atmega8 programoztam fel de csak az alap 1mhz-en fut. Hol tudnám beállítani a 8mhz?

Makefile-ben az F_CPU alapból 8Mhz-van de mégse annyin megy a CPU.
(#) proba válasza ATtiny hozzászólására (») Feb 28, 2009 /
 
Hát erre az életben nem jöttem volna rá.
Köszönöm.
(#) wg_kezdo hozzászólása Feb 28, 2009 /
 
Nos közben tájöttem, hogy megint ágyúval lőttem verébre.
Végül is a megoldás a következő:
  1. Config Portb.3 = Output
  2.  
  3. Set Portb.3
  4. Wait 180
  5. Reset Portb.3
  6. Powerdown
  7.  
  8. End


És így a megszakítás lábra kötöttem egy kapcsolót, aztán jónapot.
Mérésem szerint, ha világít a led akkor 50mA-t vesz fel (1db nagy fényerejű led), ha nem akkor pedig 0-1uA ami gondolom csak a gagyi multim miatt van így.
Szóval probléma megoldva, ha beépítettem felrakom a ki mit építettek közé
(#) Sir-Nyeteg hozzászólása Márc 1, 2009 /
 
Régebben keresgéltem, hátha érdekel még valakit:
AVR összehasonlító táblázat

Ill egy kérdés: miben különbözik a 8051-es család az AVR-től? HEStore-ban külön csoport. Most kaptam egy nagy procit, és 8051-es csoportban találtam meg.
(#) proba válasza Sir-Nyeteg hozzászólására (») Márc 1, 2009 /
 
A programozásban biztos, a 8051-et az AVR programozók nem programozzák (szerintem az eprom íráshoz közelebb áll) Az utasítás készlete viszont egyszerűbb az AVR nél.Én hanyagolnám.
(#) Sir-Nyeteg válasza proba hozzászólására (») Márc 1, 2009 /
 
Köszi!
40 lábú és van neki kemény 4kb memóriája. Szinte semmire sem jó
Hanyagoljuk.
(#) NightCrew hozzászólása Márc 1, 2009 /
 
Most láttam neki az AVR-ezésnek és akadt egy kis problémám. Nem tudom hogy lehet a PORTx port felső illetve a alsó négy bitjét külön külön forgatni.

ui .: winavr-t használok
(#) wg_kezdo hozzászólása Márc 1, 2009 /
 
Tud valaki egy példa kapcsolást valahol arra, hogy egy mezei kapcsolóval hogyan lehet feléleszteni powerdown módból pl egy ATTiny45-öst?
Találtam egyet a Tavir-en, de mivel nincs hozzá rajz (csak program) ezért nem jött össze. (megtaláltam ugyanannak angol változatát, de ott sem volt hozzá rajz).
A programot értem, de a kapcsolót nem tudtam bekötni. Megtaláltam az int0-t kipróbáltam pár módon, de sehogyan sem akart feléledni
(#) pici hozzászólása Márc 1, 2009 /
 
Sziasztok
Sajnos gyászos hetet zártam. Megdöglött két darab PIC kontroller és az AVR-es demopanelemen elszállt az egyik láb (nem szerette az LCD -12Voltját)
Gondoltam lecserélem ha már bibis ezt a TQFP ATMEGA32-t a talonban lévő ATMEGA324P-re (mivel ez már 20Mhz).
Szét kellett bontani panelt, hogy hozzáférjek és ki ill. beforrasszam...
Ekkor jött a meglepi, az AVRStudióból a JTAG ICE nem ismeri fel az M324P-s chipet
ISP-ről nem szívessen programoznám, szimpi a JTAG.
Gondoltam egyet, a JTAG ICE ATMEGA16-osából kiolvasom a progit, és ha kell akkor lemásolom az M32 adatait, hogy felismerje...
Lehet azóta a JTAG ICE-m se megy
A JTAG MKII kicsit húzós áron megy... van valakinek okos megoldása... esetleg megszabadulna egy programozótol, ami ismeri az M324P-t?
(#) Sir-Nyeteg válasza wg_kezdo hozzászólására (») Márc 2, 2009 /
 
Pár hozzászólással lentebb/fentebb be van linkelve a dallamcsengő, abban nyomógombbal élesztjük fel "Picurt"!
(#) TavIR-AVR válasza wg_kezdo hozzászólására (») Márc 2, 2009 /
 
A mintaprogi az INT0 lábon át éleszt.
Nem lehet hogy a fel/lehúzó ellenállást lehagytad és csak egy kapcsoló lógott a lábon?
(#) wg_kezdo válasza TavIR-AVR hozzászólására (») Márc 2, 2009 /
 
De!
Ahogy írtam mivel nincs rajz és én nagyon kezdő vagyok fogalmam sincs az int0-ás lábat hova kéne kötni. (Vagyis gondoltam valahova, meg utána máshova......, de egyik sem működött).
Nekifutok még egyszer, ha nem megy csinálok egy rajzot, hogy lássátok mit bénáztam .
(#) gtk válasza GTI hozzászólására (») Márc 2, 2009 /
 
Idézet:
„Makefile-ben az F_CPU alapból 8Mhz-van de mégse annyin megy a CPU.”


Low Fuse biteket at kell allitani :
Makefile
  1. lfuse:w:0xE4:m

(Adatlap / Fuse Low Byte / Internal Calibrated RC Oscillator Operating Modes)
(#) vzoole válasza wg_kezdo hozzászólására (») Márc 2, 2009 /
 
Ez nem INT0 megszakítás, hanem PCINT, de azért nézd meg.

  1. // PCINT megszakítás példa
  2.  
  3. #include <avr/io.h>
  4. #include <util/delay.h>
  5. #include <avr/interrupt.h>
  6. #include <avr/sleep.h>
  7.  
  8. #define LED_ON()                PORTB = PORTB | (1<<PINB0);
  9. #define LED_OFF()               PORTB = PORTB & ~(1<<PINB0);
  10.  
  11. //-------------------------------------
  12. void beallitasok(void) {
  13. //-------------------------------------
  14.        
  15.     // PORT B beállítása
  16.     // Bemenet: PB4: +5 voltra felhúzva ellenállással, nyomógombbal testre kötve
  17.     // Kimenet: PB0: LED
  18.     // Kimenet: PB1, PB2, PB3, PB5
  19.     // bin   543210
  20.     //       ||||||
  21.     DDRB = 0b101111;
  22.    
  23.     set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  24.  
  25.     // Pin4 beállítása megszkítás érzékelésére
  26.     PCMSK |= (1<<PCINT4);
  27.  
  28.     // turn on interrupts! = megszakítás bekapcsolása!
  29.     GIMSK  |= (1<<PCIE);
  30.  
  31.     // Interrupt engedélyezése
  32.     sei();
  33. }// beallitasok
  34.  
  35. // Ez fut le megszakításkor. Gomb lenyomásakor és felengedésekor is lefut!
  36. // Ezt egy belső IF függvénnel lehet szűrni pl.:
  37. // if(!(PINB & (1<<PINB4))) { kód; } így lenyomásra fut le,
  38. //mert akkor lesz igaz, ha a gombbal testre húzod a lábat
  39. ISR(PCINT0_vect) {
  40.     if(!(PINB & (1<<PINB4))) {
  41.         LED_ON();               //LED bekapcsolás
  42.         _delay_ms(500);             //Kicsit világítson is
  43.         LED_OFF();               //LED kikapcsolás
  44.         }
  45. }// ISR
  46.  
  47. //-------------------------------------
  48. int main(void) {
  49. //-------------------------------------
  50.     beallitasok();
  51.     for(;;) {
  52.         sleep_mode();
  53.     }// for
  54. }// main
(#) wg_kezdo hozzászólása Márc 2, 2009 /
 
Köszi közben megoldottam.
Bascom-ban készítettem és az volt a baja, hogy a megszakításba csinált mindent.
Azt viszont valami miatt nem hajtja végre.

  1. do
  2.   set led
  3.   wait 180
  4.   reset led
  5.   powerdown
  6. loop
  7.  
  8. gomb:
  9.  rem ezt nem hajtja végre powerdown mód után.
  10. return


Azért kíváncsi lennék, hogy ez miért van.
Ha jól gondolom akkor a powerdown után az int0 megszakítás folytatja a programot, de nem váltja ki a megszakítási eseményt.
(#) trudnai válasza Sir-Nyeteg hozzászólására (») Márc 3, 2009 /
 
Idézet:
„40 lábú és van neki kemény 4kb memóriája. Szinte semmire sem jó”


1. Mennyi memoriara van szukseged egy mikrocontrollerben?
2. Mi koze van a labszamnak a memoriahoz es vica versa?
(#) gtk válasza Sir-Nyeteg hozzászólására (») Márc 3, 2009 /
 
Idézet:
„Szinte semmire sem jó”
Miert ne lenne jo?
(#) Sir-Nyeteg válasza trudnai hozzászólására (») Márc 3, 2009 /
 
gt2/nak is:
Nemrég csináltam egy többfunkciós, időzítőt, ami áll egy atmega8-ból (8kb) egy 16 szegmenses kijelzőböl, és egy egész darab nyomógombból. Ennek a programja az atmega8-at 99.7%-ban tölti ki.
Ehhez mértem azt, hogy ha még A/D-t is használnék, meg távirányítót is le akarnék kezelni(logika) akkor kevés lenne a 4kb. Intelligens otthont szeretnék a szobámba.
Pl: automata roló, napelememet ez kezelné, stb stb, belépésérzékelő, villanykapcsolás, lekapcsolás, ilyenek. Kinézete alapján számítottam legalább 16kb flash-ra, emiatt mondtam, h semmire se nem jó.
Elnézést kérek!
(#) proba válasza Sir-Nyeteg hozzászólására (») Márc 4, 2009 /
 
Portnak jó .A programozó építése egy proc kedvéért nem biztos hogy kifizetődő , meg a fejlesztőkörnyezet szegényesebb hozzá szerintem.
Én építettem annó vele (igaz külső eprommal) egy infrás órát szerintem a belső memóriájába is belefért volna de nem volt kedvem égetőt építeni hozzá.
Az újabb at89c... sorozat programozása már egyszerűbb.
(#) lyukasora12 hozzászólása Márc 5, 2009 /
 
Sziasztok!

Keresek mikroprocik programozasaban jartas egyeneket, akik tudnanak nekem segiteni, hogy kell felprogramozni egy Atmell Atmega8-at, hogy soros porton keresztul vezerelni tudjam. A lenyeg, hogy szamitogeprol szeretnek vezerelni egy tapegyseget.
Igen, errol mar nyitottam temat, de itt most csak es kizarolag a forraskodra varok valaszt!
A lenyeg: soros port (- optocsatolo -) - mikrokontroller - DAC - erosito (mivel az altalam valaszott DAC csak 4 V-ot enged ki, nekem pedig 10 kell) - feszultsegoszto - tap
Van esetleg valakinek kesz forraskodja, amivel tudna segiteni? Jo lesz valami hasonlo is, amivel tesztelni tudnam a MC-t, mielott elkezdem a valosagban is osszeallitani, Tinaba szeretnem betenni a forraskodot, hogy megnezzem, mukodik-e. Programozni meg eddig csak Pascalban programoztam
Elore is koszonom a segitseget
(#) gtk válasza lyukasora12 hozzászólására (») Márc 5, 2009 /
 
Forraskod rengeteg van a neten. C, asm, basic nyelven irva. Azt hiszem pascal fordito is van AVR-re, keress ra ebben a topikban: fent K .
Az osszetett munkadhoz vegig kell jarni neked is az utat, hogy a vegen egy mukodekepes projekted legyen.

Udv.


(#) lyukasora12 válasza gtk hozzászólására (») Márc 5, 2009 /
 
Megprobalok keresni, de egyelore csak ilyen LED villogtatos, meg hasonlokat talaltam. Azert koszonom
(#) gtk válasza lyukasora12 hozzászólására (») Márc 5, 2009 /
 
Ott vannak Topi cikkei is ! Ott nem csak LED villogtatos kod van. Nezd meg.

"Nyolc labbal"

Bővebben: Link

Udv.
(#) lyukasora12 válasza gtk hozzászólására (») Márc 5, 2009 /
 
Mar olvasom is, halas koszonetem !
(#) ATtiny válasza lyukasora12 hozzászólására (») Márc 5, 2009 /
 
Én nem bonyolítanám ezt így el. Ha mindenképpen DAC kell, akkor alapbol olyan mikrokontrollert kell választani, amiben van DAC. Javaslom tanulmányozd az ATmega PWM3 -as családot.
(#) icserny válasza lyukasora12 hozzászólására (») Márc 6, 2009 /
 
Most ez milyen igényű tápegység lesz? Ha valami precíziós tápegység, ahol követelmény a kis zaj, akkor inkább a vezérlő és a DAC közé tedd az optocsatolót! Ehhez célszerű soros (pl. SPI ) vezérlésű DAC-ot használni.
Következő: »»   107 / 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