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   512 / 839
(#) Reggie válasza Ladoz hozzászólására (») Jan 26, 2013 /
 
Szerintem tulvarialod. Nem kell itt a relativ cimekkel vacakoldnod. Ird igy:
  1. .section .bootintvect, "ax", @progbits
  2. .balign 0x21F00
  3.   .org 0x00
  4.   jmp cim1
  5.   .org 0x04
  6.   jmp cim2
  7. ...


Ha igy csinalod, akkor a .bootintvect a .text utan fog kovetkezni es a .balign utan megadott cimtol. Kivetel akkor, ha tul nagy a progi, mert akkor a 0x21F00 duplajahoz igazitja (ugyanis a .balign-nak megadott ertekkel lesz oszthato az utana kovetkezo szakasz kezdocime.

Az .org pedig nem memoria abszolut cimre igazit, hanem az aktualis section elejehez kepest, igy nem csoda, hogy nem sikerult es ezert kell a kodban a .section-nel ujat definialni. Viszont a linkerscriptbe nem szabad ezt a sectiont letrehozni es akkor igy automatikusan a .text-hez fog tartozni, mivel meg lett neki adva, hogy futtathato("ax").
A hozzászólás módosítva: Jan 26, 2013
(#) Ladoz válasza Reggie hozzászólására (») Jan 26, 2013 /
 
A teljes text szekció 0x20000-re van illesztve (-Wl,--section-start=.text=0x20000).
Így ehhez képest az ugrótábla helyes címe: 0x1F00. Ha ezt adom meg az balign-nak, akkor hibát dob, hogy az érték nem 2 hatványa. Ha kiveszem balignot és az első jmp elé .org 0x1F00-át írok, akkor nem fordítja bele a kódba a táblát, gondolom azért, mert nincs rá hivatkozás, így kioptimalizálja. Ha beállítom, hogy a használatlan szekciókat a gc ne dobja ki, akkor: "region text overflowed by 4780 bytes" hibát dob.
(#) Ricsi89 hozzászólása Jan 26, 2013 /
 
Sziasztok!
Nokia 5110 lcd-t akarok használni. Ez ugyanolyan módon működik, mint a 3310-es. Össze is raktam, viszont nem megy. Halványan látok valami villogást, de semmi más. Ez alapján csináltam, egyenlőre csak pár betű kiírással próbálkoznék. Bővebben: Link
Valaki találkozott már ilyen problémával?
(#) Reggie válasza Ladoz hozzászólására (») Jan 27, 2013 /
 
Valoban, elfelejtettem, hogy balign csak 2 hatvanya lehet...

Holnap(ma) meg gondolkodok rajta. En hivatkozok ra, igy ezert nem optimalizalja ki nekem, de nalad tudom, hogy enelkul kene.
(#) Ricsi89 válasza Ricsi89 hozzászólására (») Jan 27, 2013 /
 
3310-es kijelzőt is kipróbáltam, semmi eredmény. Ugyanúgy egy pixelt sem sikerült életre kelteni.
(#) zombee válasza Ricsi89 hozzászólására (») Jan 27, 2013 /
 
Hardver SPI-t használsz? /SS láb kimenetre van állítva?
(#) Ricsi89 válasza zombee hozzászólására (») Jan 27, 2013 /
 
Igen hardverest használok és a komplett B port kimenetre van állítva.
(#) viktorio333 hozzászólása Jan 28, 2013 /
 
akkor nincs senkinek otlete az ermes idozitore valami program szeruseg kene
(#) csabeszq hozzászólása Jan 28, 2013 /
 
Egy elektronikai kérdésem lenne: vagy 30 output portot szeretnék vezérelni a lehető legolcsóbban. Itt egy 3 Ft-os ellenállásra és 8 Ft-os NPN tranzisztorra gondolok.

A probléma az, hogy ha véletlen az NPN tranzisztorok valamelyikét rövidrezárom, akkor a tranzisztornak lőttek, kiég, páka, forrasztás,... Nem az ára a drága, hanem a macera a javítással.

A megoldás igazából a kimeneti 12V-os feszültség korlátozása lenne 800mA-ra, mert annyit a tranzisztor is elbír hivatalosan. Nézegettem kapcsolásokat, de az áramkorláttal az a bajom, hogy rövidzár esetén folyamatosan 800mA-t eszik, ami nem kifejezetten kívánatos (hősugárzó, a rövidzár energiáját a kapcsoló tranzisztornak egymagának kell elégetnie, ami barátok között is 10W). Jobb lenne lekapcsolni mindent, hogy ha rövidzár van, akkor game over.

Hogyan szoktátok megoldani?
A hozzászólás módosítva: Jan 28, 2013
(#) tej válasza viktorio333 hozzászólására (») Jan 28, 2013 /
 
Programot szerintem egyszerű megírni, még nekem is sikerülne.

Bascom-ra egy példa, a teljesség igénye nélkül.

  1. Dim Kredit As Long
  2. Jatek Alias Pinb.2
  3.  
  4. On Int1 Erme
  5. Config Int1 = Rising
  6. Enable Interrupts
  7. Enable Int1
  8.  
  9. Do
  10.    If Kredit > 0 Then
  11.       Set Jatek
  12.       Do
  13.          Decr Kredit
  14.          Wait 1
  15.       Loop Until Kredit = 0
  16.    End If
  17.    Reset Jatek
  18.    Wait 1
  19. Loop
  20. End
  21.  
  22. Erme:
  23. Kredit = Kredit + 60
  24. Return
(#) sikolymester válasza viktorio333 hozzászólására (») Jan 28, 2013 /
 
Nem egészen értettük a problémát. Csináld meg egy nyomógombbal, ha jól megy a program, akkor cseréld le a gombot érmeérzékelőre.
(#) TavIR-AVR válasza csabeszq hozzászólására (») Jan 29, 2013 /
 
Multifuse vagy polifuse a kulccszó.
kb. regenerálódó biztosíték. Én is ezt használom pl. az arduino UNO / Diecimila USB betáp védelmére.
(#) csabeszq válasza TavIR-AVR hozzászólására (») Jan 29, 2013 /
 
Köszi,

van egy trafóm, ami rövidzárlat esetén 3A-t ad le, többet nem. A multifuse-ból 750 mA-est vennék.
A kérdés az, hogy ha van egy BC-338-as (0.8A), azt valóban megvédi-e a multifuse.

Nincs ebben az eszközben tapasztalatom, mármint, hogy a multifuse előbb fog-e lekapcsolni, mint ahogy a tranzisztor kiég.
(#) zamatőr válasza csabeszq hozzászólására (») Jan 29, 2013 /
 
Az ilyen típusú biztosíték rövid-zár elleni védelemre ebben az esetben véleményem szerint nem jó.Működése hőmérséklet emelkedésre (terhelésre )lép életbe,így rövid-zár esetén mire lecsökkenne az áram (mert az ellenállás növekedése miatt meg nem szűnik)addigra a félvezető rég halott főleg ha nagy kapacitású puffert használsz.Egyébként a 750mA-nek 1.3-1.5A a lekapcsolási határa.
(#) TavIR-AVR válasza csabeszq hozzászólására (») Jan 29, 2013 /
 
Szerintem nem.
Én ennyire nem centiznám ki a dolgokat. 800 mA kimenőáramra 2A-es tranzisztor és így a multifuse...
(#) zamatőr válasza csabeszq hozzászólására (») Jan 29, 2013 /
 
Elektronikus biztosíték jó megoldás lehet itt:Bővebben: Link
(#) csabeszq válasza zamatőr hozzászólására (») Jan 29, 2013 /
 
Mindenképpen átnézem a kapcsolást és megpróbálom megérteni.

Egy 4A-s BD679-es darlington NPN tranzisztor 56 Ft, miközben a 0,8A-es 8 Ft. Ha 30 tranzisztorral számolunk, akkor már több, mint 1500 Ft a különbség (+80Ft multifuse), amiből lehet, hogy kijönne egy rendesen átgondolt rövidzárvédelem.
(#) zamatőr válasza csabeszq hozzászólására (») Jan 29, 2013 /
 
Jól értem? Minden tranzisztort külön akarsz védeni(kimenetet).Ha mutatnál egy kapcsolási rajzot az elképzelésről úgy érthetőbb lenne a gondod .
A hozzászólás módosítva: Jan 29, 2013
(#) csabeszq válasza zamatőr hozzászólására (») Jan 29, 2013 /
 
Nem érted jól. Ha a +12V-ot védem, azzal minden mást is védek.

A rajz, amit küldtél jónak látszik, csak átalakítom 750mA-ra.
A hozzászólás módosítva: Jan 29, 2013
(#) FMSound válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
Kedves avr programozásban rutinos fórumozok.
Lenne egy kérdésem: az lehetséges hogy ha avr studioban a órajel sebességet túl nagyra állítom, az avr meghibásodik?

(Túl nagy alatt azt értem hogy ami listában van, a legalsóra kattintottam: Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms)

Mióta ez történt nem ismeri fel a device és singular byte -okat..
Köszi előre is!
(#) zombee válasza FMSound hozzászólására (») Jan 30, 2013 /
 
Hehe. Tudod egyáltalán, mit jelent?
(#) TavIR-AVR válasza FMSound hozzászólására (») Jan 30, 2013 /
 
Kvarc van az AVR-eden? Kondi 2*12...33pF?
(#) csabeszq hozzászólása Jan 30, 2013 /
 
RS232-eset szeretnék és van egy 7 éves T43 laptopom, aminek a dockolóján soros port is van.

Szerintetek elég a 2 ellenállás és 2 z dióda az illesztéshez, vagy MAX232 is kell hozzá?

Ahogy a sorosporti programozókat nézem, a MAX232-t ki szokták belőlük hagyni, ezért gondolom, hogy nem kell bele.
(#) sikolymester válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
Negatív feszt hogyan fogsz csinálni zénerekkel?
(#) csabeszq válasza sikolymester hozzászólására (») Jan 30, 2013 /
 
Némelyik RS232-es port megeszi a TTL jelszintet. Az érdekelt, hogy ez mennyire általános.
(#) Reggie válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
Ne szamits ra, csak a hibalehetosegek tarhazat bovited a sporolassal.
(#) TavIR-AVR válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
Felejtős.
Ilyen megoldáson bukott el a AVR-Butterfly rendszer.
Az EIA232 szerint (ami a szabvány): -15...-3V illetve +3...+15V a jelszint és -3...+3V a tiltott tartaomány.
Az RS232: szabványajánlás, azaz kb. nagyjából szabvány megfelelőség. A nagyjából az a necces: feszültségszint? sebesség? lábkiosztás? Mi az ami eltér? Én fapofával meg szoktam kérdezni, hogy a berendezés RS232 jelölése hol sérti az EIA232 szabványt? erre vállvonogatás legtöbbször a válasz. Így én nem viszek bele újabb hibát, így maradok a MAX-nál. Viszont ha a túloldali RS232, akkor azzal 70%, hogy nem működik együtt... Tranzisztoros megoldással meg 90% a hibavalószínűség...

Az AVR oldalon a névleges sebességhez képest 0% eltérés (illetve toleranciával 0,1% alatti hiba), jelszinteket rendbe tartva (MAX232/MAX3232). Így ér a legkisebb meglepetés.
A MAX232 chip esetén van ami 100nF-t kíván a feszbeállító részre, van ami 1 µF-t!
Én nem hagynám ki....

A régebbi PC alaplapok esetén találkoztam a -15V...+0,7V illetve 2,5V...+15V tartaományokkal. Nem is írták le, hogy EIA232 hanem csak azt, hogy RS232 a csatlakozó!
(#) csabeszq válasza TavIR-AVR hozzászólására (») Jan 30, 2013 /
 
Igen, már én is arra jutottam, hogy MAX232, UTP kábelen (kb. 6m kellene).

Az Arduino bootloader programját használnám, bár nem vagyok egyelőre biztos, hogy 115200 baud mellett (ez a bootloader frekvenciája) a 6m kábel miként fog viselkedni.

Bízok benne...
A hozzászólás módosítva: Jan 30, 2013
(#) csabeszq válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
A speckót olvasva garantált, hogy át kell gányolnom a bootloadert 19200-ra. Arra írnak 7 métert.
(#) ThompsoN hozzászólása Jan 30, 2013 /
 
Sziasztok.

Felmerült egy olyan, kicsi méretű PWM áramkör elkészítésének igénye, amely a következőket tudja:
-5 fokozattal rendelkezik (20, ,40, 60, 80, 100%-os kitöltési tényezők)
-az öt fokozat között manuálisan lehessen egy forgókapcsolóval váltani
-lehetőleg ne legyen nagyon komplikált maga az áramkör (főleg helyhiány miatt)

Az oldalon keresgélve, és Topi 'Nyolc lábbal AVR' cikksorozatát végigböngészve arra gondoltam, hogy talán nekem is jó lenne egy ilyen kis 8 lábas AVR erre a célra.

A kérdésem az, hogy jól gondoltam-e, és valóban megvalósítható-e ezzel a dolog? (Ha nem, akkor legyetek szívesek valami mást javasolni ehhez a problémához.) Ha megvalósítható, akkor arra szeretnék ötleteket kérni, hogy hogyan is lehetne rábírni a mikrokontrollert, hogy váltani tudjon a kitöltési tényezők között. (Nem konkrét program érdekel, inkább a fizikai megvalósítása.) Kimenetből mindössze egyre van szükségem, amely egy FET-hez kapcsolódna.

Ezen kívül még az érdekel, hogy milyen frekvenciájú PWM-et tud előállítani?

(Tudom, ez 555-el is megvalósítható lenne, de szeretnék kipróbálni valamit, ami kicsit magasabb szinten van, és később esetleg továbbfejleszthető. Korábban még nem foglalkoztam mikrokontrollerekkel, viszont az érdeklődésemet eléggé felkeltették.)

Előre is köszönöm a segítséget.

Szép estét, T.
Következő: »»   512 / 839
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