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   472 / 840
(#) sgt válasza thomas3 hozzászólására (») Aug 26, 2012 /
 
De igen. Ez lett volna a következő hiba a mostani után . Ha lehúzom az átalakítót, akkor szépen +- van a TX vonal, de amikor rádugom az átalakítót, akkor mint ha összeesne, vagy leterhelné. Az átalakító tuti jó, mert az előbb próbáltam ki, ugyanazzal az uC programmal. Ha leterhelem, akkor is a V- lábon ~ -8 V van.
(#) zombee válasza sgt hozzászólására (») Aug 26, 2012 /
 
1: a V+ -ra menő kondi másik felét a VCC-re szokás kötni. A kondik min. 100nF, max. 2.2µF lehet.
2: a tápfesz minimum 4V, ne is próbálkozz 3.3V-os cuccal!
3: a DB9 5-ös kimenete GND! A 6-4, 7-8 összekötése nem kötelező ha PC-re kötöd.
4: A V+ és GND között kb. +9V, a V- és GND között kb. -7V körüli értéket kell hogy mérj.
5: Nem kell szkóp! Ezeket multiméterrel is kimérheted:
T1IN=GND --> T1OUT=V+
T1IN=VCC --> T1OUT=V-
R1IN=V+ --> R1OUT=GND
R1IN=V- --> R1OUT=VCC
V+ >+6V
V- < -6V
(#) mzozo95 válasza zombee hozzászólására (») Aug 26, 2012 /
 
Képes help itt--> Link
(#) sikolymester hozzászólása Aug 27, 2012 /
 
Csak jó ötlet volt, hogy csatolja a kolléga kapcsolási rajzot.
Javaslom a jövőben ezzel kezdeni.
(#) wolf84 hozzászólása Aug 27, 2012 /
 
sziasztok

bin állományból hogy kell csinálni hex fájlt?
(#) sikolymester válasza wolf84 hozzászólására (») Aug 27, 2012 /
 
Parancsolj
De ez tényleg magas labda volt.
(#) zombee válasza wolf84 hozzászólására (») Aug 27, 2012 /
 
Legegyszerűbb erre a PonyProg! Pont úgy kell mint Paint-ben, csak nem képekkel dolgozik...
(#) blackdog hozzászólása Aug 27, 2012 /
 
Sziasztok!

RS232 monitorként eddig ezt használtam: Bővebben: Link

Az egyszerűsége hamar kényelmetlenné vált.
Tudtok ajánlani egy jó rs232 monitort ami free és kicsit okosabb. Találtam párat. Kettőt telepítettem is, de vagy nem inul el vagy fagy a windows. Windows7 64bit.
(#) zombee válasza blackdog hozzászólására (») Aug 27, 2012 /
 
TeraTerm
(#) blackdog válasza zombee hozzászólására (») Aug 27, 2012 /
 
Köszi!
Első nekifutásra ez elég kényelmetlen program jelen században. Ez a full console mode nem ál kézre.
(#) Doszpot válasza blackdog hozzászólására (») Aug 27, 2012 /
 
RealTerm. Bővebben: Link
Okos, kezes jószág.
(#) mzozo95 válasza Doszpot hozzászólására (») Aug 27, 2012 /
 
Ha már teminál, én akkor a "TERMINAL" programot ajánlom a soros port monitorozására, nekem ez jött be...:
Bővebben: Link
--letöltés--
(#) sgt válasza zombee hozzászólására (») Aug 27, 2012 /
 
A TI adatlap szerint lehet GND-re és VCC-re is kötni. Most VCC-n van, de ez sem segített. 5 V-ról megy minden. Minden ki van mérve, és ha nincs rajta a csatlakozó, akkor oké, különben pedig nem megy rendesen a TX vonal .

Minden jónak, de együtt nem megy. Próbáltam most egy kézbe akadó 470nF-ossal hidegíteni, hát ha az, de ez sem nyert.
(#) sgt válasza blackdog hozzászólására (») Aug 27, 2012 /
 
Hidd el inkább cmd-ben ügyködöm mint sem, hogy egy hyper terminal nevezetű idegroncsoló programot használjak, amihez hogy használni tudjam kb 20 ablakon kell végig verekednem magam.
(#) kajozs válasza blackdog hozzászólására (») Aug 28, 2012 /
 
Hali!

Én ezt szoktam használni (win7/64): 232 Analyzer
A free verzió nem időkorlátos.
(#) trudnai válasza kajozs hozzászólására (») Aug 28, 2012 /
 
Azert nem kellene kozvetlen a file linkjet betenni - csak meg akartam nezni mi ez es egybol leszedett egy MSI file-t, viszont, meg mindig nem tudom mi ez...
(#) sgt válasza sgt hozzászólására (») Aug 28, 2012 / 1
 
Ohh, hogy... (youtube -> magyar nyelv szépségei). Ilyen átkozott hibát. A dsub9 csatlakozónak a tükörképe szerint kell bekötni. Mert a neten található képeken nem a céleszköz csatlakozó bekötése van, hanem a PC felőli csatlakozóé, amit ahhoz hogy helyesen tudjunk bekötni, tükrözni kell.
(#) sgt hozzászólása Aug 28, 2012 /
 
Remélhetőleg utoljára kell nyaggatnom a fórumot.

Bootloadert feltölti, AVR prog az ebn fájlt felprogramozza és a verify-on is átmegy. Csatlakoztatom, fel is ismeri, lehet is vele programozni, de amint debuggolni szeretnék elveszti a kapcsolatot a JTAG-gel. Valakinek volt már ilyennel dolga?
(#) zombee válasza sgt hozzászólására (») Aug 29, 2012 /
 
Gondolom lefagy.
Nálam ez akkor fordul elő ha az USB-illesztőn(MCP2200) kifelejtem a 3.3V-os oldal kondiját, ez 470nF.
(#) sgt válasza zombee hozzászólására (») Aug 29, 2012 /
 
Most próbálkozom 100nF-ossal. Tettem egyet az uC másik oldalára is, de semmi. Rátettem a reset lábra is, de semmi. 5V-ról megy minden, és a céláramkörről kapja. De az a legdühítőbb, hogy minden működik, csak ez nem... már mint az online debug.

sch.png
    
(#) zombee válasza sgt hozzászólására (») Aug 29, 2012 /
 
jaaa, hogy max232-d van! így már más, de ettől még működnie kellene. azért álljunk csak meg!
1: leválasztó ellenállások nélkül bátor dolog debuggolni(én 1k-t használok a 4 vonalra).
2: a PA2-re nem kötöm közvetlen a tápot, mert nagyfeszt érzékelne(>6.3V), ezért leosztom.
3: 7-8, 6-4 be se kötöm az RS-232-ben, de ami súlyos: az 5-ös még mindig lóg, holott földre KELL(!!!) kötni.
Talán ez az utolsó ami mindent magyaráz. A kóboráramokkal még elkommunikálgat,
de amint beindul a forgalom(debuggolás) azonnal meghülyül a cucc!
(#) sgt válasza zombee hozzászólására (») Aug 30, 2012 /
 
Valóban kellett volna ellenállások. Csak munka után nem úgy fog már az agy. Ezt még meg próbálom, hogy a PA2-re teszek egy feszültség osztót. Az RS232 5-ös lába be van kötve csak a kapcsolási rajzon nincs jelölve. Amíg ki nem alakul a végleges verzió, addig nem akartam változtatni a kapcsolási rajzon.

Köszi az észrevételeket!
(#) Proci_85 hozzászólása Aug 30, 2012 /
 
Sziasztok

Gyors kérdés amire remélem ti csipőből tudtok válaszolni, mert én napok óta ezzel szívok és nem megy.
Van egy DS18B20 érzékelőkkel felépített webes rendszer Arduinoban megírva.
Az érdekessége az, hogy automatikusan felderíti az I2C buszon lévő érzékelőket és mindnek a mért értékét kiírja webre. A belső azonosítóját is ki szeretném iratni webre.
Karakter tömböt ki tudok iratni.

A max 5db érzékelő azonosítói viszont bájt alapon vannak tárolva a következő tömbben:
  1. byte allAddress [5][8];

Ha ezt HEX formában sorosra kiprintelem, a következő formát kapom: 28C97E4330054

A kérdés tehát: hogyan tudok byte tömböt char tömbre alakítani?
A teljes kódot ide töltöttem fel.
Van néhány változó és függvény ami a folyamatos tesztelések, próbálgatások miatt nincs használatban.
Több netes projekt alapján vágtam össze és bővítettem ki, mert ebben a formában sehol nem találtam kész megoldás (auto discover -> print web század pontosan, tehát nem elég inttel elintézni, char tömbb kell).

A cél egyébként az, hogy egy kész rendszer bármikor bővíthető legyen kód újraforgatása nélkül. Ha egy új érzékelőt rákötök a buszra, max egy reset kelljen és újra felderíti a buszon lévő eszközöket és az új azonosítókat is használva, kiprinteli azok értékeit.
A cucc egyébként már működik, csak azonosítók nélkül.

Természetesen a kód bármely részéhez szivesen veszek építő jellegű kritikát. Kb 3-4 napja másztam bele ebbe a témába, évek óta nem foglalkoztam még a C-vel sem.

Előre is köszönöm.
(#) Proci_85 válasza Proci_85 hozzászólására (») Aug 30, 2012 /
 
Elnézést, apró pontosítás, bár a kód átolvasása után talán egyértelmű:
"Ha ezt HEX formában sorosra kiprintelem,...."
Az 5x8 elemes tömb egyik sorát (8 elemét) printelem ki, akkor kapom a fenti DS18B20 azonosítót.
Ezen az 5x8-as tömbön sorban mennék majd végig, 5db hasonló számsort kapva amiből nekem char [8] kellene.
(#) mzozo95 hozzászólása Aug 30, 2012 /
 
HI!
A nyomógombos reszetelést hogyan is kell csinálni? A reset lábra kell egy 10k lehúzó ellenállás(gnd), és a gombbal kapcsolom rá a +5V ot?
(#) Proci_85 válasza Proci_85 hozzászólására (») Aug 30, 2012 /
 
Mivel nem hagy nyugodni a probléma (napok óta ezen a projekten rugózok ) úgy oldom meg egyelőre, hogy körbescannelem a buszt, berakom egy tömbbe az indexeket (ez eddig is így volt, ezekkel dolgoztam), de most ezen indexelt címeket sorosra kiprintelem majd ugyanaezek indexek számát (0, 1, 2...) webre is kiprintelem.
Ha új eszköz kerül a hálózatra szinte biztos, hogy borul a kiírt érzékelők sorrendje, de soros portról le tudom olvasni az új megfeleltetéseket.

A gyakorlatban:
Soros porton reset után:

Locating devices...Found 3 devices.
Device 0: 0x28, 0xF2, 0xBE, 0x43, 0x03, 0x00, 0x00, 0x63
Device 1: 0x28, 0xC9, 0x7E, 0x43, 0x03, 0x00, 0x00, 0x54
Device 2: 0x28, 0xE9, 0x9E, 0x43, 0x03, 0x00, 0x00, 0x38

Resolution: 12
Resolution: 12
Resolution: 12
Parasite power is: OFF

Weben:

Sensor0: 26.75 °C
Sensor1: 26.81 °C
Sensor2: 26.81 °C

Mezitlábas megoldás, de használható.

Az a néhány módosítás 1, 4-8. sorig:
  1. char sorszam;
  2.  
  3. for (byte k=0; k < totalDevices; k++) {
  4.    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Sensor") );
  5.   sorszam=48+k; //int k értéke 0, 1, 2 stb. +48-at hozzáadva char-ként értelmezhető, ASCII-ban 0, 1, 2 stb. 0-9-ig megállja a helyét.
  6.    buf[TCP_CHECKSUM_L_P+3+plen]=sorszam;
  7.                 plen++;
  8.     plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(": ") );
  9.    celsius=printTemperature(allAddress[k]);
  10.    dtostrf(celsius, 3, 2, garageTempc);
  11.    Serial.print("Sensor");
  12.    Serial.print(k, DEC);
  13.    Serial.print(": ");
  14.    Serial.println(celsius);
  15.    
  16.     int i=0;      
  17.    while (garageTempc[i]) {
  18.                 buf[TCP_CHECKSUM_L_P+3+plen]=garageTempc[i++];
  19.                 plen++;
  20.         }
  21.    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("  °C") );
  22.    }
(#) sgt válasza mzozo95 hozzászólására (») Aug 30, 2012 /
 
10k-nál legyen azért kisebb pl. 1k vagy 2,2k. A logikádat pont fordítsd meg. Az ellenállás legyen felhúzó, és a gombbal adj testet.
(#) mzozo95 válasza sgt hozzászólására (») Aug 30, 2012 /
 
Rendben, köszönöm!
Jól tudom, hogy a programban alapból semmit sem kell állítani, hogy legyen restet ha lehúzom a reset lábat?
(#) Reggie válasza mzozo95 hozzászólására (») Aug 30, 2012 /
 
Jol tudod, ez a lenyege.
(#) zombee válasza sgt hozzászólására (») Aug 30, 2012 /
 
Én meg pont nem ajánlanék 10k-nál kisebbet, egyes programozók nem tudják lehúzni.
Ha pl. 1k van a programozó kimenetén(ritka, de van ilyen) és 2.2k a felhúzó, az már határeset...
A 10k nagyon is jó lesz oda.
Következő: »»   472 / 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