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   527 / 840
(#) erdoszoli válasza icserny hozzászólására (») Márc 20, 2013 /
 
Szia!

Igen, tudom hogy a 485-ös vonal miért jobb, de ahova kell ott csak RS232 jön szóba sajnos. Ezt ne kérdezze senki hogy miért.

Most épp azzal játszottam, hogy az 1es panelen lévő kontrollerének a TX-ére ellenállást raktam, ésa 2es panelről jövő Rx->Tx vonal pedig direktbe. Eredmény kettős lett, ha az ellenállás nagy akkor a 2es panel adata jut el a PC-ig, ha pedig pár ohm ellenállást használok akkor meg az 1es panelé.
Egy AND kapu elég logikusnak tűnik, nem tudom miért nem jutott eddig eszembe, ki is próbálom ha találok egyet gyorsan.
(#) erdoszoli válasza icserny hozzászólására (») Márc 20, 2013 /
 
Szia!

Egy 74LS20-ast találtam, igaz ez NAND kapu, de okosan be lett huzalozva , és frankón működik! Persze ha egyszerre szeretnének beszélni akkor adatkavarodás van, de ez már szoftver kérdés, lényeg hogy megy.

Köszönöm az ötletet!

Zoli
(#) erdoszoli válasza miskatli hozzászólására (») Márc 20, 2013 /
 
Szia!

Ha a /CS lábat a kontroller /SS lábára raktad akkor azt is be kellene állítani, és ami még felmerült bennem hogy mekkora frekin megy a kontroller? Mert jelenlegi inicializálásnál ha a proci belső 8MHz-en megy , akkor az SPI freki 8/4=2MHz, ami pedig a memória maximális értéke lenne, ennyire nem szokás kihajtani.
Nem volt leírva ezért bocsi hogy megkérdezem, de a /WP és /HOLD lábak a memórián ugye fel vannak húzva tápra?

Zoli
(#) erdoszoli válasza erdoszoli hozzászólására (») Márc 20, 2013 /
 
Javítom magam, látom hogy nem az /SS lábon van a memória /CS lába
Ezt a részt vedd semmisnek.
(#) gtk válasza Szasza9668 hozzászólására (») Márc 20, 2013 /
 
Attol fugg mekkora aramra van szukseg a hattervilagitashoz. Ez csak 100mA-t tud jo esetben. Inkabb valami BD ha van keznel...
(#) Szasza9668 válasza gtk hozzászólására (») Márc 21, 2013 /
 
köszönöm szépen
(#) sikolymester válasza feri023 hozzászólására (») Márc 22, 2013 /
 
Tessék

tiny13.hex
    
(#) feri023 válasza sikolymester hozzászólására (») Márc 22, 2013 /
 
Szia!
Köszönöm a segítséget.
Üdv: Feri
(#) sikolymester válasza feri023 hozzászólására (») Márc 23, 2013 /
 
1 MHz re forditottam.
(#) feri023 válasza sikolymester hozzászólására (») Márc 23, 2013 /
 
Szia!
Rendben, köszönöm.
Feri
(#) TobJoz hozzászólása Márc 24, 2013 /
 
Valaki tudna segíteni, hogy miért van az, hogy egyszer kiírja, egyszer meg nem ezt a hibát.
Előre is köszönöm

hiba.jpg
    
(#) Hooligan01 válasza TobJoz hozzászólására (») Márc 24, 2013 /
 
Azért, mert egyszer rossz, egyszer meg nem

Számtalan oka lehet: Programozó hiba, órajel hiba, tápegység hiba,forrasztási hiba, tervezési hiba, kábel hiba, napkitörés...
Több info = több segítség
(#) TobJoz válasza Hooligan01 hozzászólására (») Márc 24, 2013 /
 
köszönöm szépen nekem már ez elég segítség volt hogy átnézzem és rájöjjek hogy én voltam balfék.
(#) Hooligan01 válasza TobJoz hozzászólására (») Márc 24, 2013 /
 
Nem semmi!
(#) zombee válasza TobJoz hozzászólására (») Márc 24, 2013 /
 
Hát azért mert egyszer van kapcsolat, egyszer meg nincs.

Komolyra fordítva: ellenőrizd a csatlakozásokat(főként: táp, föld), csökkentsd az ISP sebességet.
Az hogy "már minden csatlakozást ellenőriztem" sokszor elhangzott ugyanitt, aztán jött
a pofáraesés mert mégiscsak kicsúszott valami vagy nem volt kontakt, stb.
De az ISP sebesség is szokott meglepetéseket okozni...
(#) zombee válasza TobJoz hozzászólására (») Márc 24, 2013 /
 
Ehhez kell tökösnek lenni, nem a fröcsögéshez!
A hozzászólás módosítva: Márc 24, 2013
(#) TobJoz válasza zombee hozzászólására (») Márc 24, 2013 /
 
Köszönöm a segítségeket, de megoldódott már a probléma. Igen a csatlakozással volt probléma.
(#) kiborg hozzászólása Márc 24, 2013 /
 
Sziasztok!
Egy ATMega16-AU-nál (TQFP tokozás) több VCC és több GND pont van. Be kell kötni mindegyiket, vagy elég egyet-egyet? Tokon belül ezek a pontok össze vannak kötve?
Kiborg
(#) blackdog válasza kiborg hozzászólására (») Márc 24, 2013 /
 
Bővebben: Link

Nézd meg milyen válaszokat kaptam.
Én azóta mindet bekötöm és szűröm is. Ez a biztos. Nem spórolok semmit, ha elhagynám.

Szerk:
Azért ezt ide linkelem még: Bővebben: Link
A hozzászólás módosítva: Márc 24, 2013
(#) BMW-M3 hozzászólása Márc 24, 2013 /
 
Sziasztok!

Keresnék olyan Miskolc környéki embert aki tud AVR-t programozni és kisebb munkákat el is vállal. Természetesen pénzért.
Válaszokat előre is köszi!
(#) adam100492 hozzászólása Márc 24, 2013 /
 
Valaki segítsen AVR Studio 4 akarok lefordítani egy Assembler-be megírt programot de nem sikerül ,ezt az üzenetet kapom :
FATAL ERROR: Cannot open output file C:\Documents and Settings\Kovßcs +dßm\Dokumentumok\676\676.hex: No such file or directory
(#) pluto válasza adam100492 hozzászólására (») Márc 24, 2013 /
 
Ezt nem csodálom, ugyanis a STUDIO kifejezetten zokon veszi az ékezetes karaktereket az elérési útvonalban. Csak is kizárólag ASCII. Pont úgy mint 30 éve. Jó értem én, hogy az USA-n kívül minden lényegtelen, de akkor is bosszant. Nem kicsit, nagyon!
(#) zombee válasza adam100492 hozzászólására (») Márc 25, 2013 /
 
Nem csak az ékezet, hanem a szóköz is problémás...
(#) sikolymester válasza adam100492 hozzászólására (») Márc 25, 2013 /
 
Hehe, Kovács helyett Kovßcs lett és csodálkozol, hogy nem megy ?
(#) Sick-Bastard hozzászólása Márc 26, 2013 /
 
Üdv!

Megszeretném kérdezni, hogy az alábbi ATMega8535 + LM335 áramköröz való kóddal jó irányba haladok e?
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3. #include <MCP23S17.h>
  4.  
  5. #define Vref 5,3
  6.        
  7. int main(void)
  8. {
  9.  
  10. unsigned int temp, i;
  11. unsigned char temp1;
  12. unsigned char VCC = 5; // VCC 5V
  13. double sensor;
  14.  
  15. SPI_Init();
  16.  
  17. MCP23S17_Init();
  18.  
  19.  
  20. // Set ADMUX Channel for LM35DZ Input
  21. ADMUX |=  (1<<REFS0) | (0<<REFS1) | (1<<ADLAR);
  22. ADMUX &= ~((0<<ADLAR) | (1<<REFS1));
  23. // Initial the ADC Circuit
  24. ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);
  25.  
  26.         while(1)
  27.         {
  28.                 ADCSRA |= (1<<ADSC);
  29.                 // wait until convertion complete ADSC=0 -> Complete
  30.                 while (ADCSRA & (1<<ADSC));
  31.                 // Get ADC Result
  32.                
  33.                 sensor = ADCH;
  34.        
  35.                 temp = ((5.3*sensor/255)-0.038)*100-273.15;
  36.                 temp1 = temp;
  37.                
  38.                 MCPWR(GPIOA, temp1);
  39.                 _delay_ms(1000);
  40.         }
  41. }


Excel táblázatban számolgattam és ott jónak tűnik a dolog.
Szobahőn is kipróbáltam és 25 fokot kaptam, ami megegyezik a gyári hőmérőmmel.

SB
(#) Sick-Bastard válasza Sick-Bastard hozzászólására (») Márc 26, 2013 /
 
Kipróbáltam kint is az előtér/üvegházas részben. Ott 6fok van.
Kb ennyit is mutat egy meglehetősen nagy hibával.

6-7fokot mutat többnyire, de néha minta félreshiftelne (felfele) így 12 fokot kapok, másrészt, amikor ingadozik, akkor nem az első bit teszi, hanem a 2. vagy 3.

Ez mint a Vref = VCC beállításnak tudható?

SB
(#) zombee válasza Sick-Bastard hozzászólására (») Márc 27, 2013 /
 
Tedd rá a gyári hőmérőd a radiátorra/kályhára/konvektorra. Majd tedd ugyanezt a tiéddel.
Hidd el, 10-12 másodperc múlva rá fogsz jönni a turpisságra...
(#) Sanyi57 hozzászólása Márc 27, 2013 3 /
 
Sziasztok !
Kezdő AVR programozó vagyok.
Assembly-ben programoznék egy atmega8-at .
Segítséget kérnék. Hogyan tudnék analóg jeleket beolvasni valamelyik lábon és egy regiszterbe
8 bites számmá alakíttatni.
Egy kis programocska sokat segítene magyar nyelvű kommentekkel.
Előre is köszi !
Üdv : Sanyi
(#) Robi98 hozzászólása Márc 28, 2013 /
 
Sziasztok!
Nem régiben készítettem egy két darab hét szegmenes kijelzőből álló számlálót, atmega8-al.
A kijelzők egyszerre való megjelenítését multiplexerrel oldottam meg. A baj az, hogy amikor a kijelzőn két különböző számjegy jelenik megy, halványan azok a szegmensek is vibrálnak amiknek nem lenne szabad.Nem tudom, hogy szoftveresen vagy hardveresen van a hiba, de valószínű hogy szoftveresen, valahol a multiplexer résznél.
Itt a kód multiplexeres része:
  1. while(1)
  2.   {
  3. unsigned char tizes=masodperc/10;
  4. unsigned char egyes=masodperc%10;
  5. //_______________________________
  6.   PORTD|=(1<<PD6); // a tizesek digitet bekapcsoljuk
  7.   PORTD&=~(1<<PD7); // az egyesek digitet kikapcsoljuk
  8.   PORTB=szamok[tizes]; // kiirjuk a számot
  9.   _delay_ms(10); // 1/100 ad másodperc után váltunk
  10.  //______________________________
  11.  tizes=masodperc/10;
  12.  egyes=masodperc%10;
  13. //_______________________________
  14.   PORTD|=(1<<PD7); // az egyesek digitet bekapcsoljuk
  15.   PORTD&=~(1<<PD6); // a tizesek digitet kikapcsoljuk
  16.   PORTB=szamok[egyes]; // kiirjuk a számot
  17.   _delay_ms(10);// 1/100 ad másodperc után váltunk
  18.   }
(#) csabeszq válasza Sanyi57 hozzászólására (») Márc 28, 2013 /
 
Miért fontos számodra az assembly? Az ADCH kiolvasásával a C fordító is belátható időn belül elboldogul.

uint8_t adc = ADCH;

Ez úgy lesz lefordítva, hogy:

lds r27, 0x0079;

Ennél gyorsabb megoldást aligha tudsz elérni assemblyben.

  1. /* konfigurálás */
  2. /* a REFS0 montja meg, hogy AVCC a referencia */
  3. /* az ADLAR mondja meg, hogy ADC-ben balra legyen igazítva. ADCH olvasásával a felső 8 bitet kapod */
  4. ADMUX = _BV(REFS0) | _BV(ADLAR) | 0; /* a 0 az ADC0 tű, ADC5-höz értelemszerűen 5-öt írj */
  5. /* free running mode (állandóan fut, amikor épp kell az értéke kiolvasod ADCH-t) */
  6. ADCSRB = 0;
  7. /* ADEN: ADC engedélyezés */
  8. /* ADSC: ADC indítása */
  9. /* ADATE: ADC automatikus trigger */
  10. /* ADPS: ADC frekvencia: input clock / 128 */
  11. ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADATE) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0);
  12.  
  13. /* használat */
  14. uint8_t adc = ADCH;
A hozzászólás módosítva: Márc 28, 2013
Következő: »»   527 / 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