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   519 / 840
(#) Benji1992 válasza zombee hozzászólására (») Feb 17, 2013 /
 
Félre értést elkerülve véletlenül sem gondoltam hogy ugyan az az avr figyeli a változást amit táplálni kell. Csupán a legegyszerűbb kapcsolás érdekel amivel 5V ot állítok elő majd ha elmegy a hálózati feszültség átáll aksira.
Köszi a segítséget!
Üdv. benji
(#) ThompsoN hozzászólása Feb 17, 2013 /
 
Sziasztok.

Még jó múltkor kérdezősködtem a mikrokontrollerekről, és a PWM-ről. A választás végül az ATTiny24-esre esett.
Jelenleg a kérdésem az, hogy nézzétek meg, hogy a program így megfelelő-e. Próbapanelon kipróbáltam egy LED-el, és szépen üzemel, de nem szeretném se a mikrokontrollert, sem az utána következő alkatrészeket hazavágni élesben.

  1. #ifndef F_CPU
  2. #define F_CPU 8000000
  3. #endif
  4.  
  5. #include <avr/io.h>
  6. #include <util/delay.h>
  7.  
  8. /*Definiáljuk az egyes állapotokat (kitöltési tényező)*/
  9. #define P0 0 //100%
  10. #define P1 51 //80%
  11. #define P2 102 //60%
  12. #define P3 153 //40%
  13. #define P4 204 //20%
  14.  
  15. void m_delay_ms(int del) {
  16.         for(int i=0;i<del;i++) {
  17.                 _delay_ms(10);
  18.         }
  19. }
  20.  
  21. int main() {
  22.         uint8_t duty; //Kitöltési tényező változója
  23.  
  24.         /*Lábak beállítása*/
  25.         DDRB   = (1<<PINB2);
  26.         PORTB  = (1<<PINB2);
  27.         PORTA  = (1<<PINA0)|(1<<PINA1)|(1<<PINA2)|(1<<PINA3)|(1<<PINA4); //Ez bekacsolja a belső felhúzó ellenállásokat is? Külsőt nem szeretnék használni
  28.  
  29.         /*PWM*/
  30.         GTCCR  = 0x00;
  31.         TCCR0A = (1<<COM0A1)|(1<<COM0A0)|(0<<WGM02)|(1<<WGM01)|(1<<WGM00);
  32.         TCCR0B = (0<<CS02)|(1<<CS01)|(1<<CS00);
  33.  
  34.         TCNT0  = 0;
  35.         OCR0A  = 0;
  36.  
  37.         while(1) {
  38.                 if(!(PINA & (1<<PINA0))) { //0. láb -> P0 érték
  39.                         duty = P0;
  40.                 } else if(!(PINA & (1<<PINA1))) { //1. láb -> P1 érték
  41.                         duty = P1;
  42.                 } else if(!(PINA & (1<<PINA2))) { //így tovább
  43.                         duty = P2;
  44.                 } else if(!(PINA & (1<<PINA3))) {
  45.                         duty = P3;
  46.                 } else if(!(PINA & (1<<PINA4))) {
  47.                         duty = P4;
  48.                 } else {
  49.                         duty = 0;
  50.                 }
  51.  
  52.  
  53.                 OCR0A = duty; //Végül a komparátor állítása
  54.                
  55.                 _delay_ms(60);
  56.         }
  57. }


Ha az A0,...,A4 lábakat közvetlenül a GND-re kötöm kapcsolók közbeiktatásával (pontosabban egy fokozatkapcsolóval), az megfelelő? Ezzel kapcsolatban az is a kérdésem, hogy a lábak beállítása így a felhúzó ellenállásokat bekapcsolja? Külsőt nem szeretnék használni, mert feleslegesen bonyolítaná a NYÁK-ot a későbbiekben.
Ez a rész menne 5V-ról, míg a PB2 lábra kerülne egy BUZ 11 MOSFET egy 1kOhmos ellenállással, és a FET már 12V-ról menne. Ha mindent rendben találtok, akkor már csak a NYÁK következik.

Előre is köszi!
A hozzászólás módosítva: Feb 17, 2013
(#) FMSound válasza Seton hozzászólására (») Feb 17, 2013 /
 
Kedves Seton és zombee!
Akkor részletessen írok!
De először megmutatom mit vezérlek vele: Videó
Nem egy egyszerű programocska ami nem is az én művem!
Erről a helyről származnak: Léptető motor vezérlő
LED vezérlő
Ezért muszáj használom ezt a tipust! (Nincs felhúzó a reseten, én sem tettem lehet ez hiba volt?)
Viszont itt ugye külön ic a lednek külön a motoroknak ezért már épül egy másik áramkör, kicsit más, mivel itt bipoláris bekötéssel kell használni a léptetőmotorokat, illetve az IC ATMEGA8535( ez is régi típus?) Kapcsolás.
De még mielőtt felvetődik hogy miért nem írok saját progit, hang és fénytechnikával foglalkozó vállalkozásunk van, ezért nem nagyon van időm.. hétvégente rendezvényeink vannak... ( A youtobe-os profilomnál megnézhetiktek a többi fénytechnikai készülékem is)

Egy 5w-os szofita fűtéssel működik az áramkör
Remélem sikerült kicsit bővebb információkat leírnom most
Köszi a segítséget !
A hozzászólás módosítva: Feb 17, 2013
(#) csabeszq válasza FMSound hozzászólására (») Feb 18, 2013 /
 
Ahogy én emlékszem, a RESET-re nem kötelező felhúzó ellenállást rakni.

Ha nem raksz oda semmit, akkor együtt fog emelkedni a RESET a VCC-vel. De javítsatok ki, ha tévedek. Breadboard alatt sosem rakok reset logikát és nem is volt ezzel bajom idáig.

Érdekességként én a fel/lehúzó ellenállások tömegét a kimenetekre szoktam rakni, azokra, amelyek egy tranzisztor bázisára/gate-jére csatlakoznak. Amikor indul az AVR, az összes port bemeneten van, ez pedig azt jelenti, hogy a bázis/gate lebeg, ami akár be is kapcsolhatja a tranzisztort reset alatt.

A hozzászólás módosítva: Feb 18, 2013
(#) sikolymester válasza csabeszq hozzászólására (») Feb 18, 2013 /
 
Már sokszor tárgyaltuk, és bizony érdemes.
(#) csabeszq válasza sikolymester hozzászólására (») Feb 18, 2013 /
 
Kifejtenéd bővebben?

Az ATmega48-as doksijában az Rrst pull-upról azt írja, hogy 30k és 60k között van.

Mennyiben jobb egy külső 4.7k-s ellenállás a belső 60k-snál?
Mennyiben jobb egy külső kapacitás a RESET-re, mint beállítani, hogy RESET után az AVR mondjuk 64ms után induljon?
(#) sikolymester válasza csabeszq hozzászólására (») Feb 18, 2013 /
 
(#) zombee válasza csabeszq hozzászólására (») Feb 18, 2013 /
 
Nézd, breadboard-on és egy kész áramkörben teljesen más. Én pl. breadboard-on az AGND/AVCC lábakat sem mindig kötöm be. Egy késztermék, ami ráadásul bugos(hardveresen) ott lehet élni a gyanúperrel, hogy valami áthúz és ezért RESET-el le. És hidd el, a gyanta, a flux, az nagyon is tud vezetni!
A hozzászólás módosítva: Feb 18, 2013
(#) csabeszq válasza zombee hozzászólására (») Feb 18, 2013 /
 
Oké, most csinálok éppen egy áramkört, abban be fogom kötni.

Tisztán csak érdekelt a magyarázat, mert a speckóból számomra nem volt világos.
(#) H2opok válasza sikolymester hozzászólására (») Feb 18, 2013 /
 
Üdv
Egy kis segitség kelleni egy projektünkhöz. Egy Atmega644p be kellene lefordítani a hexet. Arduino 1.0.3 al sajnos hibákkal fordul. Gyakorlatilag az összes verziójú program hibás volt, még a közzé tett HEX állománnyal is behalt az elektronika . Igaz volt amit tudtunk javítani, és most működik is. Erről lenne szó, ez a az utolsó és legújabb program:
http://code.google.com/p/wiseclock2/downloads/detail?name=WiseClock...n=2&q=

És ez a projekt:
http://timewitharduino.blogspot.hu/2012/04/guest-post-wise-clock-34...2.html


Előre is köszi.
(#) every hozzászólása Feb 18, 2013 /
 
Azt miért van szerintetek, hogy az avr studio állandóan isp errort ír, és a read signature -ra warning -ol és nullálat ír. az atmega8pa-pu -t kétszer megsikerült írnom, de azóta akárhova állítom a frekit állanóan isp errrorozik. köszi
(#) sikolymester válasza H2opok hozzászólására (») Feb 18, 2013 /
 
Valami konkrét hiba van, vagy hol induljunk el?
Már azon kívül, hogy magunk nekiugrunk a projektnek, hogy meglássuk működik-e az összeállított hardver?

Mert ha az összes előre fordított hex is rossz volt, akkor van egy gyanúm, hogy itt mély gondok vannak.
(#) sikolymester válasza every hozzászólására (») Feb 18, 2013 /
 
Ha saját magad csináltad a programozót, akkor nézz forrasztási hibák után. Ha ebay klón, akkor is.
(#) FMSound válasza zombee hozzászólására (») Feb 18, 2013 /
 
Kedves Zombee leírtam mindent részletesen, de te nem reagáltál rá.....
(#) H2opok válasza sikolymester hozzászólására (») Feb 19, 2013 /
 
Több verziója van, kb. 4 "program frissítés" van hozzá. Mindegyiket kipróbáltuk, hibásak voltak. Amelyikhez hex is tartozott, azzal meg el sem indult a cucc. Én azt gyanítom hogy szándékosan lett "belerontva", mivel az már gyanús hogy mind rossz. Mindegyikben máshol volt a hiba. Egy barátom kísérletezett vele, aki végül is egyet helyrehozott. Jelenleg működik rendesen az óra egy régebbi verzióval, viszont ez az új, ami már kezeli az excelben szerkeszthető animációkat, nem megy.
Mi megcsináltuk a a nyákterv alapján a nyákot, beültettük, beégetés után pedig semmi.(nem is gondoltuk- ha már valaki részletesen közzé teszi a terveit,hogy tele van hibával, vagy direkt hibásan teszi fel) Nem ment egyik HEX sem.
Persze az is lehet hogy mi nem csinálunk valamit jól. Ezért kérdeztem itt akik jóval tapasztaltabbak mint mi.
(#) sikolymester válasza H2opok hozzászólására (») Feb 19, 2013 /
 
Így már kerek a történet, valakinek hátha lesz ötlete.
(#) H2opok válasza sikolymester hozzászólására (») Feb 19, 2013 /
 
Esetleg tudsz olyan másik programot amivel meg lehetne próbálni lefordítani az állományokat? Hátha....
(#) sikolymester válasza H2opok hozzászólására (») Feb 19, 2013 /
 
Idézet:
„Arduino 1.0.3 al sajnos hibákkal fordul.”


Nem Arduino 1.0 -val kellene inkább fordítani?
(#) meone válasza blackdog hozzászólására (») Feb 19, 2013 /
 
Tutorial segítségével sikerült megoldani azt, hogy amit terminálon be írok azt LCD-n megjelenítse. Bővebben: Link
Most a kliens oldalon lévő program megírásával bíbelődöm PHP alapon.
Ehhez is van segít script. Bővebben: Link
Összeállítottam egy minta példát
  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', '1');
  4.  
  5. include "php_serial.class.php";
  6.  
  7. $serial = new phpSerial;
  8. $serial->deviceSet("/dev/ttyUSB0");
  9. $serial->confBaudRate(9600);
  10. $serial->confParity("none");
  11. $serial->confCharacterLength(8);
  12. $serial->confStopBits(1);
  13. $serial->deviceOpen();
  14. sleep(1);
  15. $serial->sendMessage("Hello from my PHP script, say hi back!");
  16.  
  17. $serial->deviceClose();
  18.  
  19. echo "I've sended a message! \n\r";
  20. ?>
Lefuttatáskor viszont ezt a hibát kapom:
Idézet:
„Fatal error: Class 'phpSerial' not found in /var/www/test/test.php on line 7”
Hiányolja a phpSerial osztályt. Tudom ez a rész már nem ide tartozik nem ebbe a topicba.

Esetleg nem találkozott valaki hasonlóhibával?

Köszönöm az eddigi útbaigazítást blackdog legalább adtál egy támpontot merre keressek.
(#) sikolymester válasza meone hozzászólására (») Feb 19, 2013 /
 
Megeszem a kalapom, hogyha a PHP alapból kezel soros portot.
Ez megvan egyáltalán: php_serial.class.php ?
(#) meone válasza sikolymester hozzászólására (») Feb 19, 2013 /
 
Lehet én nem csinálok valamit jól de a php_serial.class.php tartalmát teljesen be kellet a fent említett test példa elé illeszteni, és úgy meg működöt szépen.
Valamit még be kell állítanom mert az "include" parancs valamiért nem működik.

Viszont ez a részleg már tényleg nem ide tartozik.

Köszönöm a segítséget mindenkinek.
(#) blackdog válasza meone hozzászólására (») Feb 19, 2013 /
 
[off]
Miért nem használod inkább ezt: Bővebben: Link

Amúgy meg, ha ragaszkodsz a php-hez (bár nem értem mert a php alapvetően nem erre való) a file jogosultságok rendben vannak? Azonos könyvtárban van minden file?
A többit max. privátban mert ez már tényleg nem ide tartozik.
(#) csabeszq válasza blackdog hozzászólására (») Feb 19, 2013 /
 
Hát, ebből nagyon gyorsan parázs vita alakulhat ki, ezért igyekszem finoman fogalmazni.

Az Arduino java-ban lett megírva, tegyük hozzá, hogy nem véletlenül, szóval amikor én AVR-es PC oldali programokat írok, akkor azt kizárólag java-ban teszem.

A C# linkelése érdekes választás. Maga a nyelv jobb lenne, mint a java, de sajnálatosan a Microsoft idióta jogászai és menedzserei is aktívan résztvesznek a fejlesztésében. Egyáltalán nem hordozható, normális GUI nincs hozzá (A WPF Windowson megy kizárólag, a WinForms amellett, hogy szar Mono-n jogi problémái is vannak, a Gtk# meg egy bughalmaz).

Új szoftver fejlesztésére C#-ot semmiképpen sem ajánlanám. A problémáim nem a nyelvvel vannak, hanem a Microsoft öltönyös majmaival, akik a mérnökök döntéseit a vállalati stratégiához igazítják.
A hozzászólás módosítva: Feb 19, 2013
(#) blackdog válasza csabeszq hozzászólására (») Feb 19, 2013 /
 
[off] Teljes mértékben igazad van. Nincs itt vita, de a kérdező kérdéseiből úgy ítélem, hogy ő most gyors eredmény szeretne elérni. Jobb, ha majd maga találja meg a neki tetsző környezetet. Én is nagyon jó elvagyok a C#-al igaz nem óriási szoftvereket irogatok, de a jelenlegi célnak megfelel. Mi van, ha neki tetszik a Mono? Tudom, hogy milyen a gtk#, de az a bughalmaz nem biztos, hogy a kezdő szintjén fog előjönni. Javasolhattam volna neki egyből Java-t vagy C-t. Lehet csak a kedve ment volna el. Bár még megnézheti az Eclipse-t vagy NetBeans-t.
(#) Ktulu hozzászólása Feb 19, 2013 /
 
Sziasztok.
Van egy áramköri lapom, amin egy AtMega128 van. Ezt szeretném majd újra felhasználni.
A gond ott van, hogy már 3 programozót építettem, pufferes párhúzamos, egyszerű 4 ellenállásos párhúzamos, és sorost. Ponyprog és avrdude-all is próbálkozom, de nem sikerül kommunikálni vele. (ISP header a nyákon van, gondolom sorosan volt felprogramozva)
A mcu lábaira ráhallgatózva biztos, hogy működik, kommunikál a mellette levő memóriával. (16MHz kvarc van mellette, táp 5V) A programozók szinte biztos hogy jók, egyenként teszteltem minden ki-bemenetet, és megfelelően reagálnak. (lábak is jól vannak bekötve MOSI-PE0, MISO-PE1 stb)
Ponyprog mindig unknown device -24 et ad vissza. (kalibráltam, próbáltam slow, ultraslow stb)
Avrdude not in sync resp 0x00 avrisp-vel, avr device not responding stk200 -al.
Az őrület szélén állok már.
LPT portot tettem mindenre BIOSban.
(másik lapon van még egy AtMega103-am, de abban nem vagyok biztos, hogy még működőképes)
Mi lehet a gond?

Köszönöm.
A hozzászólás módosítva: Feb 19, 2013
(#) csabeszq válasza blackdog hozzászólására (») Feb 19, 2013 /
 
A gtk#-pal sajnos komolyabb problémáim is voltak: az osztályok 40%-a volt egyáltalán ledokumentálva. Magának a GTK-nak a dokumentációja még ennél is rosszabb volt, ott jóformán semmi sem volt leírva.

Nekem a kedvem akkor ment el tőle, amikor az időm 90%-a a GTK C-s kódjában való guberálással ment el. Van egy metódus, paraméterekkel, azt találd ki, hogy mire való. Komplett agyrém volt.

Azóta évek teltek el, nem tudom, hogy valaki vette-e a fáradtságot, hogy megírja a dokumentációt. Ha igen, akkor jó választás lehet a Mono + GTK#.
(#) csabeszq válasza Ktulu hozzászólására (») Feb 19, 2013 /
 
Nézd meg, hogy a programozó lábak (MISO+MOSI+SCK) körül vannak-e jumperek, vagy ilyesmi.

Amikor kevés a láb, akkor időnként jumperrel teszik a programozást lehetővé (leválasztják a lábakat a teljes áramkörről, így programozhatóvá válik. Amint a programozást befejezted, visszateszed a jumpert, a láb meg utána akár inputként is üzemelhet).
(#) Ktulu válasza csabeszq hozzászólására (») Feb 19, 2013 /
 
Egyetlen jumper sincs a lapon. A 2 adat vonal egy max232-re megy. A SCK vonalat nem tudom követni, de valamiféle jel van rajta. (megszűnik, amíg a programozó lehúzza a Resetet)
A hozzászólás módosítva: Feb 19, 2013
(#) csabeszq válasza Ktulu hozzászólására (») Feb 19, 2013 /
 
Hát, ez elég rosszul hangzik.

Gondolom a MISO/MOSI az RTS és CTS vonalakra van kötve (a hardver RX/TX más pinen van). Ebből a CTS az input PIN, azaz vezérli a vonalat.

A MAX232-t nem lehet kikapcsolni valahogy?
(#) sikolymester válasza Ktulu hozzászólására (») Feb 19, 2013 /
 
Aztán az is lehet, hogy a serial programming le van tiltva benne.
Akkor marad a Jtag.
Következő: »»   519 / 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