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   816 / 837
(#) Sipy válasza zolee1209 hozzászólására (») Júl 7, 2020 /
 
Így elsőre igen. De ha hazaérek munkából akkor összevetem a programmal meg átolvasom amit linkeltél. Igazából az első mérést megcsinálja csak a többit nem. Jó lenne tudni hogy az áramfelvétele mennyi. Max ki-be kapcsolgattatnám.
(#) rolandgw válasza Sick-Bastard hozzászólására (») Júl 7, 2020 / 1
 
Szerintem a 35. sorba sima data kell, eleve címmel hívod meg a függvényt.
(#) Zsombi13 válasza Massawa hozzászólására (») Júl 9, 2020 /
 
Átrajzoltam a rajzot, hozzáadtam egy feszültség-stabilizáló részt, hogyha kéne, a forrszemek pedig kapcsolóknak kivezetések. A tranzisztormezők lábai így jók?
(#) pipi válasza Zsombi13 hozzászólására (») Júl 9, 2020 /
 
Hali! Mi értelme a 4db 7805-nek? semmi nem biztosítja az egyenlő terhelés megosztást köztük,
lehet az egyik már majd füstöl, az áramkorlátja határán, a másik meg akkor kezd dolgozni...
Ha nagyobb áramot kell biztosítani, tegyél valami kapcsolóüzemű step down modulkát, szerintem még olcsóbb is lehet, nem fűt, és energiatakarékosabb
pl itt is vannak
A hozzászólás módosítva: Júl 9, 2020
(#) Zsombi13 válasza pipi hozzászólására (») Júl 9, 2020 /
 
A fő ok, amiért ezt tettem, hogy legyen ilyen utáémpótlás jellegű, de inkább olyan kéne, mint amit te linkeltél. Vagy USB-ről lenne tápolva vagy konnektorból saját trafós táppal, meg gondolkoztam az elemen/akkumlátoron, csak azt egy másik projetktemhez is gondoltam, és arra már mondták, hogy sokat fogyasztana. Lehet, hogy valami kapcsoló kéne, hogy a ledeket csak akkor működtesse, amíg le van nyomva egy gopmb, és akkor az időt számolja, de a ledek nem fogyasztanak, legalábbis nekem ez az elméletem. Ez megvalósítható lennne?
(#) Massawa válasza pipi hozzászólására (») Júl 9, 2020 /
 
Igy van, és még az ULN 9.-s lábát sem kell CD+ bekötni, mert a terhelés nem megy a plusz tápra, hanem a kapcsolo tranyokra. Ezért azt üresen kell hagyni.
(#) Zsombi13 válasza Massawa hozzászólására (») Júl 9, 2020 /
 
Mind a kettőről elhagyható? Akkor az a kettő kondenzátor sem kell, és csak a földre kössem?
(#) Massawa válasza Zsombi13 hozzászólására (») Júl 9, 2020 /
 
Ne kösd sehova. Oda nem kell ilyen plusz feszültség. Te csak az ULN tranyok kolelktorát huzod a földre. A terhelés ( LED) nem megy egyenesen a pluszra.
(#) Zsombi13 válasza Massawa hozzászólására (») Júl 9, 2020 /
 
Úgy értem, hogy csak a földet kell bekötni, mert a táp az nem kell?
(#) Zsombi13 válasza Massawa hozzászólására (») Júl 9, 2020 /
 
Így értetted? A táp része az nem lényeges, azon még csiszolni fogok, az nem a végleges verzió
(#) Massawa válasza Zsombi13 hozzászólására (») Júl 9, 2020 /
 
Igy jobb. A tápot alakitsd át.
(#) Sick-Bastard válasza rolandgw hozzászólására (») Júl 10, 2020 /
 
Köszönöm a választ!
A 35. sor mellett még a 46. sorban is kicseréltem a &data-t sima data-ra és megy.
(#) Sipy válasza zolee1209 hozzászólására (») Júl 10, 2020 /
 
Meglett a hiba. Az oszcilloszkóp lebuktatta az atmegát hogy nem küldi a trigger impulzust. Ugyanaz a program egy attiny2313-ban tökéletesen működik.
(#) Zsombi13 válasza Massawa hozzászólására (») Júl 11, 2020 /
 
Találtam itthon egy felesleges USB-s telefontöltőt, ami elég stabilan tartja az 5V-ot. Inkább ezt fogom használni, emiatt van a rajzon forrsztási szem, mert így ha később másfajta tápellátást (akkumlátor, vezeték nélküli) szeretnék, egyszerűbb lesz bővíteni. Így jó lenne? minden más változatlan.
(#) Massawa válasza Zsombi13 hozzászólására (») Júl 11, 2020 /
 
Az USB táp már jo lesz. A rajzolási stiluso hagy még némi kivetnivalot. Sokkal szebben meg lehetne rajzolni.
A rajz igy müködhet, legalábbis nem látok benne hibát.
Van még egy jo tanács. A bemeneteket (PB0,1,2) a profi világban forditva csinálják. Azok aktiv állapotban ( amikor változik valami) a GND-n vannak és nem a +5V. ( ez sajnos az Arduino mintaprogramok egyik alapvetö gondja). Persze müködik ugy is ahogy megrajzoltad, hogy ha magas szintet kap a bemenet, akkor történik valami, csak ez valamivel veszélyesebb, mert az esetleges nyomogombokra a tápot kell kivezetni. Szoval sokkal inkább a chip bemenetei nyugalmi állapotban a +5V huzandok az ellenállásokkal (1-10 k), és a bemenet ha a GND-re van kötve indit valamilyen folyamatot.
(#) Zsombi13 válasza Massawa hozzászólására (») Júl 11, 2020 /
 
A rajzolásomon tényleg lenne még mit csiszolni, igyekszem, és köszönöm a segítségedet. Csatolok egy képet, rajzolva így nézne ki amit mondtál? Illetve ehhez meg kéne változtani a kódot?
(#) Massawa válasza Zsombi13 hozzászólására (») Júl 12, 2020 /
 
Kb igen. Az ellenállásokat cseréld kisebbre (1-10k). A kodot annyiban kell változtatni, hogy most a LOW szint az aktiv és okozza a változást.
(#) szabi95 hozzászólása Júl 15, 2020 /
 
Üdv!
ATtiny13A kontrolleren próbálom használni az adc-t, de akárhogy próbálom nem lesz folyamatos a kódsorozat ahogy tekerem a potit. Most az a pontos hiba hogy nulláról elkezdem tekerni a potit, ekkor nullától 63-ig folyamatosan változik az érték, utána ugrik 192-re és innentől folyamatos 255-ig. Ez után ugrik nullára és újra az előző,és végül 255-nél megáll. Fogalmam sincs hogy mit néztem be. Van valakinek valami ötlete hogy mi lehet a hiba oka?
  1. #define F_CPU 9600000UL
  2. #include <avr/io.h>
  3. #include <avr/interrupt.h>
  4. #include <util/delay.h>
  5.  
  6. #define SCLK    SBIT( PORTB, 3 )        ////don't forget setting DDR
  7. #define SDO             SBIT( PORTB, 1 )        //
  8. struct bits
  9. {
  10.         unsigned char b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1;
  11. } __attribute__((__packed__));
  12. #define SBIT_(port,pin) ((*(volatile struct bits*)&port).b##pin)
  13. #define SBIT(x,y)       SBIT_(x,y)
  14.  
  15. void send_shitprot_data(uint8_t data);//shitprotocol, tulajdonképpen SPI, de nincs CS
  16. volatile uint8_t pwm=0;
  17.  
  18. int main(void)
  19. {      
  20.         //adc init
  21.         ADMUX = (1<<MUX1) | (1<<ADLAR);//adc2 pb4
  22.         ADCSRA = (1<<ADEN) | (1<<ADIE) | (1<<ADPS1)| (1<<ADPS0);
  23.        
  24.         DDRB = (1<<PORTB3) | (1<<PORTB1); //shitprotocol init
  25.        
  26.         //pwm init
  27.         /*DDRB = 0x01;
  28.         TCCR0B=(1<<CS00);//no presc
  29.         TCCR0A=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1);
  30.         TIMSK0=(1<<OCIE0A);
  31.         OCR0A=10;*/
  32.        
  33.         sei()
  34.         ADCSRA |= (1<<ADSC);//start conversion
  35.         while(1)
  36.         {
  37.                
  38.         }
  39. }
  40. /////////////////////////////////////////////////////////////////////////
  41. ISR(ADC_vect)
  42. {
  43.         pwm = ADCH;
  44.         send_shitprot_data(pwm);
  45.         ADCSRA |= (1<<ADSC);//start conversion
  46. }
  47.  
  48. void send_shitprot_data(uint8_t data)
  49. {
  50.         uint8_t bit=7//MSB first
  51.         SCLK=0;
  52.         for(bit=7; (bit<8) && (bit>=0); bit--)
  53.         {
  54.                 SCLK=0;
  55.                 if(((data>>bit)&0b1)==1)        {SDO=1;}
  56.                 else{SDO=0;}
  57.                 _delay_ms(1);
  58.                 SCLK=1;
  59.                 _delay_ms(1);
  60.         }
  61. }
(#) pipi válasza szabi95 hozzászólására (») Júl 15, 2020 /
 
Hali!
Multiméterrel ellenőrizted a bemenetet/potit, hogy az is ugrik?
(#) szabi95 válasza pipi hozzászólására (») Júl 15, 2020 /
 
Ellenőriztem, az jó volt, még ki is cseréltem, de másik potival is ugyanezt csinálja.
(#) szabi95 válasza szabi95 hozzászólására (») Júl 15, 2020 /
 
Éerdekes, az interruptban az adc indítása elé raktam egy delay-t és úgy már működik. A legkisebb amivel még jó az 250us. Az a/d átalakítás értékének elküldése helyett az OCR0A regiszerbe írva, és a pwm init kódot kommentből kiszedve is úgy látom hogy jól működik. A potit tekerve egyenletesen pörög fel a rápakolt vántillátor.
Viszont azt nem értem miért csak bizonyos idő után lehet újra elindítani az ADC-t.
(#) vargham válasza szabi95 hozzászólására (») Júl 15, 2020 /
 
Az ADC konverziónak időre van szüksége. Adatlap írja, hogy minimum mennyire.
(#) zaza99 hozzászólása Júl 20, 2020 /
 
Sziasztok!
Avrdudess 2.12 programmal szeretnék kiolvasni egy Atmega324A chipet de ERROR: Unknown signature 1e9515 hibát ír.

Tudnátok segíteni?
A hozzászólás módosítva: Júl 20, 2020
(#) lazsi válasza zaza99 hozzászólására (») Júl 21, 2020 /
 
A hiba ez lehet (ez alapján):

ATmega324A 0x1E 0x95 0x15
ATmega324PA 0x1E 0x95 0x11

Próbáld meg 324PA, helyett a 324A -t.
(#) zaza99 válasza lazsi hozzászólására (») Júl 21, 2020 /
 
324P meg 324PA van csak.
A hozzászólás módosítva: Júl 21, 2020
(#) rolandgw válasza zaza99 hozzászólására (») Júl 21, 2020 /
 
Nyisd meg az avrdude.conf fájlt egy szövegszerkesztővel és tedd be ezt a részt az ATmega324PA blokk után, mentés, avrdudess újraindítás.

  1. #------------------------------------------------------------
  2. #------------------------------------------------------------
  3.  
  4. # similar to ATmega324P
  5.  
  6. part parent "m324p"
  7.     id               = "m324a";
  8.     desc             = "ATmega324A";
  9.     signature        = 0x1e 0x95 0x15;
  10.  
  11.     ocdrev              = 3;
  12.   ;
(#) zaza99 válasza rolandgw hozzászólására (») Júl 21, 2020 /
 
Hiba nélkül megy a kiolvasás, a fuse és lock biteket is olvassa csak a flash tartalom 0 bájt lesz. Ez miért van? Biztos van benne tartalom mert van kijelzője és állogatni lehet.
(#) vagnerjazon válasza zaza99 hozzászólására (») Júl 22, 2020 /
 
Gondolom, a lock bitek miatt nem megy.

LB2_LB1.PNG
    
(#) zaza99 válasza vagnerjazon hozzászólására (») Júl 22, 2020 /
 
Az átállítható, hogy tudjam olvasni a tartalmat?
(#) Kovidivi válasza zaza99 hozzászólására (») Júl 22, 2020 /
 
Ha tényleg le van zárva, akkor csak egy féleképpen lehet a lock biteket alapra állítani: az AVR teljes törlésével. Ki van ez találva
Következő: »»   816 / 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