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   531 / 840
(#) rolandgw hozzászólása Ápr 10, 2013 /
 
Sziasztok !
Segítséget kérnék.Asm-ben programoztam eddig,nemrég kezdtem a C-t.A következő problémám merült fel C-ben: bekérek SPI-n 3 byte adatot,amiknél a következő feltételeket kellene leellenőrizni:nem lehet az összes 0 a byte-okban és ha 1-es van,akkor csak egy lehet,valamint be kéne azonosítanom,hogy ez hányadik, 1-24-ig.(0-23)Természetesen nem az egész kódot kérném,csak valami frappáns ötletet,ha nem nagy kérés.Köszönöm !
(#) csabeszq válasza rolandgw hozzászólására (») Ápr 10, 2013 /
 
Hát, a megfogalmazás elég pontatlan. Az 1-es az most byte, vagy bit?
Gyanítom, hogy bit, mert ellenkező esetben nem 1-24-ig keresnél, hanem 1-3 ig.

Nem nulla ellenőrzése:

  1. if ( b0 || b1 || b2)
  2. {
  3.    /* OKÉ */
  4. }
  5. else
  6. {
  7.    /* HIBA */
  8. }


Hányadik helyen van az utolsó egyes bit?

  1. uint32_t temp = (b2 << 16) | (b1 << 8) | b0;
  2.  
  3. int8_t pos = -1;
  4. while( temp != 0 )
  5. {
  6.    pos++;
  7.    temp >>= 1;
  8. }


Ez a feladat egyszerű frappáns megoldása. A generált assembly kódot viszont eszedbe ne jusson megnézni, mert amit a gcc az uint32_t-vel alkot, azt jobb ha nem látod. Működni fog, az a lényeg.
A hozzászólás módosítva: Ápr 10, 2013
(#) rolandgw válasza csabeszq hozzászólására (») Ápr 10, 2013 /
 
Kösz a segítséget ! Valóban kuszán fogalmaztam,a lényeg: a három byte-ot együtt nézve csak 1 darab bit lehet 1-es,(és egynek annak kell lenni)a többinek pedig 0-nak ,különben hibás a bejött adat. Ha jól értelmezem az első feltételedet,ez még nem zárja ki,hogy esetleg két bit is 1-re áll.
(#) csabeszq válasza rolandgw hozzászólására (») Ápr 10, 2013 /
 
Nem zárja ki. A második eset pedig a legmagasabbat keresi meg.

  1. uint32_t temp = (b2 << 16) | (b1 << 8) | b0;
  2.      
  3. int8_t pos = -1;
  4. uint32_t mask;
  5.  
  6. for( mask = 1; mask < (1 << 24); mask <<= 1 )
  7. {
  8.    pos++;
  9.  
  10.    if( mask == temp )
  11.       break;
  12. }


A kód esetében 0-23, ha megtaláltuk, 24 ha nem a végeredmény.
Ez már gyakorlatilag kettes alapú logaritmus egész számokra. Ha nem lenne egész a végeredmény, akkor 24-es hibát ad vissza.
A hozzászólás módosítva: Ápr 10, 2013
(#) Sick-Bastard hozzászólása Ápr 14, 2013 /
 
Üdv!

SD kártyával szeretnék kommunikálni (adatokat írni/olvasni) egy AVR-rel.
Még nem tartok ott, hogy az SD-vel kommunikáljak, így a kommunikációt egy 74HC595-esre kötött LED sor segítségével tesztelem.

Így a kód lefut probléma nélkül:
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3. #include <avr/pgmspace.h>
  4.  
  5. // SPI settings
  6. #define SPI_PORT        PORTB
  7. #define SPI_DDR         DDRB
  8. #define CE                      PB4
  9. #define MOSI            PB5
  10. #define MISO            PB6
  11. #define SCK                     PB7
  12.  
  13. //SD_MMC Commands
  14. #define TEST_DATA                       0x01, 0x02, 0x04, 0x08, 0x10, 0x20
  15. #define GO_IDLE_STATE           0x40, 0x00, 0x00, 0x00, 0x00, 0x95
  16. #define SEND_OP_COND            0x41, 0x00, 0x00, 0x00, 0x00, 0xFF             
  17. #define SET_BLOCKLEN            0x50, 0x00, 0x02, 0x00, 0x00, 0xFF
  18. #define READ_SINGLE_BLOCK       0x51, 0x08, 0xFF, 0x08, 0xFF, 0xFF
  19.  
  20. #define CMD_SIZE 6
  21. #define BLOCK_SIZE 128
  22.  
  23. unsigned char i, CMD[CMD_SIZE], DATA[BLOCK_SIZE];
  24.  
  25.  
  26. void SPIWR(unsigned char data)
  27. {
  28.         SPDR = data;
  29.         while(!(SPSR & (1<<SPIF)));
  30.         _delay_us(1);
  31. }
  32.  
  33. void SPI_Init(void)
  34. {
  35.         SPI_DDR |= (1<<SCK)|(1<<MOSI)|(1<<CE);
  36.         SPCR |= (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
  37.         SPCR &= ~(1<<DORD);
  38. }
  39.  
  40. void SPI_WR(unsigned char* data, unsigned int length)
  41. {
  42.   for(unsigned int i = 0; i < length; i++)
  43.     {
  44.                 PORTD ^= (1<<PIND6);
  45.                 SPIWR(data[i]);
  46.                 SPI_PORT |= (1<<CE);
  47.                 _delay_us(1);
  48.                 SPI_PORT &= ~(1<<CE);
  49.                 _delay_ms(500);
  50.                 PORTD ^= (1<<PIND6);
  51.                 _delay_ms(500);
  52.         }
  53. }
  54.  
  55. int main(void)
  56. {
  57.  
  58. SPI_Init();
  59. DDRD |= (1<<PIND6);
  60. SPI_PORT &= ~(1<<CE);
  61.  
  62.         while(1)
  63.         {
  64.                 unsigned char CMD[CMD_SIZE] = {TEST_DATA};
  65.                 SPI_WR(CMD, CMD_SIZE);
  66.                 _delay_us(1);
  67.                
  68.                 /*unsigned char CMD[CMD_SIZE] = {GO_IDLE_STATE};
  69.                 SPI_WR(CMD, CMD_SIZE);
  70.                 _delay_us(1);*/
  71.                
  72.         }
  73. }


A gondom a
  1. unsigned char CMD[CMD_SIZE] = {};
kód új érték megadásával van.

Ha a 2.-at is kiveszem a kommentből akkor ezt a hibát írja:
Idézet:
„redefinition of 'CMD'”


Ha kiveszem előle az unsigned char-t:
Idézet:
„expected expression before '{' token”


Ha így írom be
  1. CMD[CMD_SIZE] = GO_IDLE_STATE;
  2. SPI_WR(CMD, CMD_SIZE);
  3. _delay_us(1);

akkor
Idézet:
„array subscript is above array bounds”


Kifogytam az ötletekből...
A hozzászólás módosítva: Ápr 14, 2013
(#) Stefan válasza Sick-Bastard hozzászólására (») Ápr 14, 2013 /
 
64. sorban újradefiniálod:
unsigned char CMD[CMD_SIZE] = {TEST_DATA};
C ben nem lehet így újra megadni a tömbelemeket, hogy tomb[] = {1,2,3,4,5...}; (Ha jól tudom)
Ennél pedig a tömb utolsó utáni elemére próbálsz valamit beírni, ami még szintaktikailag se lesz jó.
CMD[CMD_SIZE] = GO_IDLE_STATE;

Én így oldanám meg:
  1. #define CMD_SIZE 6
  2. typedef enum {
  3.         TEST_DATA,
  4.         GO_IDLE_STATE,
  5.         SEND_OP_COND,
  6.         SET_BLOCKLEN,
  7.         READ_SINGLE_BLOCK,
  8.  
  9.         CMD_COUNT
  10.  
  11. }CMDS;
  12.  
  13. const unsigned char CMD[CMD_COUNT][CMD_SIZE] =
  14.  {{ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20},
  15. { 0x40, 0x00, 0x00, 0x00, 0x00, 0x95},
  16. { 0x41, 0x00, 0x00, 0x00, 0x00, 0xFF  },
  17. { 0x50, 0x00, 0x02, 0x00, 0x00, 0xFF},
  18. {0x51, 0x08, 0xFF, 0x08, 0xFF, 0xFF }};
  19.  
  20.  
  21. SPI_WR(&CMD[GO_IDLE_STATE][0], CMD_SIZE);
  22. rövidebben:
  23. SPI_WR(CMD[GO_IDLE_STATE], CMD_SIZE);
A hozzászólás módosítva: Ápr 14, 2013
(#) Ladoz válasza Sick-Bastard hozzászólására (») Ápr 14, 2013 /
 
Csinálj inicializált (konstans) tömböket és azt add át az SPI_WR()-nek.

const unsigned char CMD_TEST_DATA[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20 };
const unsigned char CMD_IDLE_STATE[] = { 0x40, 0x00, 0x00, 0x00, 0x00, 0x95 };
.
SPI_WR(CMD_IDLE_STATE, CMD_SIZE);
(#) Shance hozzászólása Ápr 14, 2013 /
 
Sziasztok!

Szeretnék egy kis segítséget kérni.
Egy Tav-IR MKII-vel szeretnék egy Attiny2313-ast felprogramozni,de sehogy sem sikerül.
Avr Studio 4.19-el próbálkozok,de bárhogy állítom a fuse biteket (kivéve azokat amikre a program figyelmezett) mindenre OK-ét ír.
A felprogramozásnál sem ír ki hibát,de mégsem működik,a 2x16-os lcd felső sorába csak kockák jelenek meg.Egyszer sikerült elérnem,hogy egy pillanatra megjelent a kijelzőn aminek kellet,de utána csak vibrált.
Abban szeretném a segítségeteket kérni,hogy hogyan állítsam be a programot.
Mellékelek pár print screen-t arról amit csináltam,és a fuse bits táblázatot ami a hex-fájlhoz járt.
Az Attiny 5 voltról,és 20Mhz quartz-ról megy.

A segítséget előre is köszönöm.
(#) TavIR-AVR válasza Shance hozzászólására (») Ápr 14, 2013 /
 
A progranozó akkor OK.
Az LCD-d bekötésével van hiba:
- sebesség
- tápszűrés
- init kimarad

Programkód? A nélkül igen nehéz megoldást találni....
CKDIV8 be vabn kapcsolva, azaz 1/8-d órajelen jár a chip. Itt 20/8 MHz-n...
A hozzászólás módosítva: Ápr 14, 2013
(#) Shance válasza TavIR-AVR hozzászólására (») Ápr 14, 2013 /
 
Hello!
Köszi,hogy válaszoltál.
Az LCD bekötését többször ellenőriztem az biztos jó.
Milyen sebesség?Az ISP frekvenciára gondolsz?
a tápszűrés 7805,100nf ellőtte-utána+100uf utána,9v-os elemről megy.
Az init az nem tudom mi.
Programkód?Csak egy hex fájlom van,ha arra gondoltál.
Többféleképpen is próbáltam állítani a fuse biteket,mert nem tudom,hogy mi mire való.
Azért tettem fel a fuse bits táblázatot,mert ez alapján nem tudom,hogy mit kell kipipálni,és ebben szeretnék segítséget kérni.A táblázat ráadásul elégé eltér a Avr Studio-étol.
(#) TavIR-AVR válasza Shance hozzászólására (») Ápr 14, 2013 /
 
Innen ez eléggé katyvaszközeli dolog lesz....
Sebesség : - kvarc illetve a belső 8-as osztó (DivCKLK). Jó lenne látni, hogy honnan van a hex/leírás. Ott írhatnak valamit.
9V-s elem eléggé határeset. Az LCD háttere igaz nem megy?

Ha hex van, akkor abban is lehet baltázva valami. Bascom alatt tudok kódot küldeni, hogy T2313-ra legalább kizárd a hibát. Most ami lehet:
- kvarc nem jó
- Hibás az LCD
- hibás a LCD bekötés
- hibás hex
- hibás T2313
- stb.
Csak teszteléssel és szisztematikus kizárással lehetne hibát keresni.

Bascom alatt teszt:

  1. $crystal = 20000000                                         'orajel
  2. $regfile = "t2313def.dat"                                    'chip
  3.  
  4. Config Lcd = 16 * 2
  5. Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4'itt állítsd be a megfelelőket
  6.  
  7. Initlcd
  8. Cls
  9. Initlcd
  10. Cls
  11.  
  12.  
  13. Dim Count As Byte
  14. Count = 0
  15.  
  16. Do
  17.  Cls
  18.  Lcd "Hello! " ; Count
  19.  Count = Count + 1
  20.  Waitms 100
  21. Loop
  22. End
A hozzászólás módosítva: Ápr 14, 2013
(#) Shance válasza TavIR-AVR hozzászólására (») Ápr 14, 2013 /
 
A hex és a leírás innen van,a második az.
A geigercounter_v1 zip-be minden benne van.
Az LCD-t programozás közben nem dugom a panelre(lehet kéne nem mertem.)
Az Attinyt a "helyén"programozom.
Már a negyedik ATtinyt nyúzom,kizártam magam az írásuk,olvasásukból.(van még 1 szűz).
Az LCD nem hiszem,hogy rossz lenne mert egyszer már egy pillanatra megjelent rajta ami kell,de azt nem tudom hogy értem el még az elején volt.
A bekötését is leellenőriztem.
A hex is biztos jó,olvastam hogy sikeresen után építették.
Amit a végére írtál az nekem kinai.Ez csak egy egyszeri programozás lenne a részemről.
Köszönöm,hogy foglalkozol vele.
(#) Csibi válasza Shance hozzászólására (») Ápr 15, 2013 /
 
Hello.
Nem tudom, valószinű neked küldtem választ ezzel kapcsolatban. Páran már megépitették ezt az áramkört sikeresen.
Szerintem a fuse bit beállitásánál vagy programozásánál lehet valami gond. Hagyhatod az eredeti gyári beállitást, csak tedd át külső quartz-ra. Jelöld be vagy ki az összes CKSEL-t, programozótól függően.
Vigyázz, egyes programozóknál a fuse bitek bejelölése forditva működik.
A SPIEN és a RSTDISBL fuse bitekhez ne nyulj, ezzel lekapcsolod a SPI-n keresztül történő programozást.
Itt utána nézhetsz.

Fuse bitek:
Low: 0xFF
High: 0xDF
Extended: 0xFF

Üdv.
Csabi
(#) Shance válasza Csibi hozzászólására (») Ápr 15, 2013 /
 
Hello!
Megnéztem az oldalt amit linkeltél.Beírtam a fuse biteket alulra amiket megadtál,erre a fuse calkulátor kijelölte a SPIEN-t és legördíthető listából a Ext.Crystal Osc Frequency 8.0-MHz Start-up time: 14 Ck + 65 ms-et.
Ugyanezt csináltam AVR Studioban is.A SPIEN alapból kivan jelölve,nem is lehet levenni a pipát.
Alul meg is jelenik ez:

Extended: 0xFF
High: 0xDF
Low: 0xFF

Ezután rákattintok a program gombra,utána a Program fülön a flashnél kiválasztom a hex fájlt és rákattintok a program gombra.
Alul közben az AVR Studio mindent leokéz.
Először nem működött,de utána kicseréltem a quartz-ot erre,és újra programoztam.Nem tudom elhinni,hogy hibás volt a quartz,ugyan ez volt benne csak a normál kivitelű (HC49/U).
Bekapcsolás után felvillan a felirat,a háttérvilágítás kikapcsol és halványan "kockák"vibrálnak,ezután megnyomom a reset gombot,és kezdi elölről de utána rendesen működik.Ezt mi okozhatja?Még mindig nem jó a beállítás?Vagy rosszul programozom fel?

Üdv. Sanyi
(#) panther hozzászólása Ápr 15, 2013 /
 
Sziasztok!

Érdeklődnék, hogy a HEKIT-301 kezeli-e az ATMEGA 8515-öt
(#) zombee válasza panther hozzászólására (») Ápr 16, 2013 /
 
muszáj kezelnie...
(#) zombee hozzászólása Ápr 17, 2013 /
 
Sziasztok!

Volt már dolga valakinek DHT-11 hőmérséklet és páratartalom mérő szenzorral?
Konkrétan az a bajom hogy mindkét dekád(tizedes rész) helyén nulla van.
Az ellenőrzőösszeg szerint is helyes a vételezett érték, tehát nem az adatátvitellel van probléma.

Már csak arra tudok gondolni hogy gyárilag garantált+/- 2°C és +/- 5RH% pontosság mellett
a tizedes résznek már nincs akkora jelentősége mint pl. egy DS18B20 vagy LM75 esetében.

A kép máshonnan van, de az enyém is pontosan ennyit tud: a tizedes része nulla!
A hozzászólás módosítva: Ápr 17, 2013
(#) zombee válasza (Felhasználó 15355) hozzászólására (») Ápr 17, 2013 /
 
Köszönöm. Közben utánakerestem, a jóval pontosabb DHT-22 már már kiküldi a tizedes részt is.
Az adatátvitel miatt a két szenzor 100%-ig csereszabatos, ezért küldi ki a DHT-11 a nullákat is.
(#) jano36 válasza Robi98 hozzászólására (») Ápr 18, 2013 /
 
Egy rövid kérdésem lenne.
AVR-t csak működő oszcillátorral lehet programozni?
Köszi a hasznos választ.
jano36
(#) zombee válasza jano36 hozzászólására (») Ápr 18, 2013 /
 
igen.
nincs mit.
(#) every hozzászólása Ápr 18, 2013 /
 
http://www.hobbielektronika.hu/cikkek/seged_orajel_generator.html
Ezt, hogy kell használni, tehát ha rákötöm pl. egy atmega8a 9 es lábára meg áramot adok neki aztán hogy tovább? Az avr studióba mit kell állítani, hogy tényleg helyre is jöjjön a avr. Köszi!
(#) lajtosali hozzászólása Ápr 19, 2013 /
 
Sziasztok!Olyanban kérnék segítséget,hogy a korábban vásárolt T bird panelen lévő kis programot nem tudja nekem ide felrakni vki?Az enyémről sikeresen töröltem ,viszont szeretném tanulmányozni mivel teljes mértékben kezdő vagyok a témában.Aki esetleg megmentette a saját paneljéről az tegye fel nekem legyen szives.KÖSZÖNÖM!
(#) csabeszq hozzászólása Ápr 19, 2013 /
 
Felraktam az egyik programomat (logikai analizátor) a netre. A lényege a programnak, hogy képes egyszerre 4 digitális vonalat lehallgatni. A sógornak írtam, hogy könnyebben tudjon IO portokat kezelni, de rájöttem, hogy a 100kHz-es TWI lehallgatására mennyire tökéletes.
(2 us feletti változásokat tud érzékelni, kb 32 órajelciklus).

Ha van egy kallódó Arduino-d (UNO javallott, de mással is megy), akkor egy automatikus beállítás után már azonnal használható is (feltölti a programot a bootloader segítségével).

Bővebben: Link

Természetesen a program magyarul is megy, de a doksit angolul írtam. Remélem nem probléma.

Technikai érdekességek is vannak benne:
- a kód képes kommunikálni az Arduino bootloader-ével, avrdude nélkül java-ban
- automatikus beállítás (megnézi, hogy milyen sebességgel megy a bootloader, ellenőrzi a használható bitrátákat,...)
- az AVR rész C és assembly keverék, 29 órajelciklus alatt befejeződő pin change interrupt
- kiválasztható UART átviteli sebesség (baud rate)
- emellett képes resetelni tetszőleges sebességű UART vonalat (első csatlakozásnál, egy 600 baudos 0x55 jelet küldök ki, ami az összes 9600 baud feletti ráta esetén periodikus 0x00 framing error-okat eredményez, ebből tudja a kód, hogy vissza kell állítsa a sebességet 9600-ra).
(#) csabeszq válasza csabeszq hozzászólására (») Ápr 19, 2013 /
 
A poén az, hogy sourceforge-ra felrakni majdnem annyi idő volt, mint megírni.

- ne csak magyarul tudjon, hanem angolul is
- legyen doksija
- Linux mellett Windows-on is menjen
- 64 biten is, ne csak 32-n
- támogassa az összes 328P-s Arduino-t, ne csak az enyémet
- legyen felhasználóbarát
...
(#) zombee válasza csabeszq hozzászólására (») Ápr 19, 2013 /
 
Nem rossz.
Esetleg "arduino-mentes" kapcsolási rajzod is van hozzá? Csak ez miatt nem fogok venni,
de jól jönne egy analizátor egy 43ms (elvárt) periódusidejű impulzussorozat mérésére.
Egy ATMega168-at beáldoznék rá...
(#) fekete123 hozzászólása Ápr 19, 2013 /
 
Sziasztok!

Tud valaki segíteni abban, hogy hogyan kell ATMEL Studio 6-al rendesen linkelni library-t?

Amikor én csinálok magamnak ilyen .h könyvtárakat akkor csak simán beírom hogy

#include "útvonal"

De eddig egyetlen internetről letöltöttet se sikerült még életre keltenem. Google-n olvastam valami toolchain-ről de nem áll össze a kép.

Ezt szeretném használni: Bővebben: Link

Van itt egy main.c amit nem tudok lefordítani, mert nem látja az include-olt .h-ban lévő függvényeket az ATMEL studio 6
A hozzászólás módosítva: Ápr 19, 2013
(#) Stefan válasza fekete123 hozzászólására (») Ápr 20, 2013 /
 
Kicsit bővebben fejtsd ki mi a hiba/milyen hibaüzeneted van. A compiler szól, hogy ismeretlen symbol, vagy a linker nyavalyog, hogy unresolved external.
Amúgy a "library" az ".lib" előre le van fordítva, és azzal csak a linker foglalkozik. Neked forrás fájljaid vannak. Nincs most fent ezen a gépen az AVR stúdió, de szerintem ha az src mappát simán berakod a projekt mappádba, és "existing item"- ként az egészet hozzáadod, akkor mennie kell.
(#) fekete123 válasza Stefan hozzászólására (») Ápr 20, 2013 /
 
Szia!

Valóban ha minden egyes file-t hozzáadok, és a megfelelő könyvtárral akkor tovább tudok lépni. Igaz most se fordul le.

  1. #elif defined(__AVR_ATmega3290__) ||\
  2.       defined(__AVR_ATmega6490__) ||


Erre a sorra kapok egy ilyen hibaüzenetet:

operator '||' has no right operand.

Igazából én csak ezt az MPU 6050-es giroszkópot akarnám működésre bírni, de ebben a forrásfájl csomagba rengeteg olyan utasítás van amit még sose láttam.

Azért köszönöm szépen!
(#) papa22 hozzászólása Ápr 20, 2013 /
 
Sziasztok szeretnék egy rádió távirányítású relékártyát építeni. Elképzelésem az lenne hogy a távirányító 2 gombos lenne az egyik gomb nyomkodásával 1-6-ig váltogatnák a relék közt a másik gomb megnyomásával be ismételt megnyomásával ki kapcsolnám az épen kiválasztott relét. Természetesen minden reléhez tartozna egy két színű led ami vissza jelezné a relé állapotát ha piros ki ha zöld be kapcsolt állapotot viszont ha megnyomom a kiválasztó gombot akkor az adott reléhez tartozó led sárgán villog pár másodpercig ha nem nyomom meg a ki/be kapcsoló gombot akkor marad ahogy volt ha pedig igen akkor átvált a megfelelő állapotra. Kérdésem az lenne hogy ehhez az adóhoz ez a vevő megfelel e, és ha igen akkor a kimeneti lábon milyen jelet kapok ha megnyomom az adó egyik illetve másik gombját, és ez a láb egy AVR melyik bemeneti lábára kötendő rx soros porti bemenet vagy bármely bemenetként programozót lábra. Segítséget előre is köszönöm.
(#) csabeszq válasza zombee hozzászólására (») Ápr 20, 2013 /
 
Hát, a program Atmega328-on megy jelenleg, szóval át kellene írnod, ami nem lesz triviális. Azért lesz problémás, mert kihasználja a nagyobb memóriát, 256 mintavételt képes eltárolni. Az átíráshoz az assembly részt is változtatni kellene, hogy csak 128-at tároljon.

A 43ms milliszekundum simán menne vele.
Elvileg ha egy mezei Atmega328-at egy max-232-vel összekötsz és felrakod rá a bootloadert, azzal már mennie kell. 16 MHz-es kristály is kell hozzá.

Szóval 16MHz kristály, MAX-232 soros portra, Atmega328P+optiboot bootloader és RESET gomb. Ennyi.

Ami kicsit nehézkes lesz, hogy kézzel kell a RESET gombot nyomkorásznod, mert Auto-reset logika nem lesz benne. Ilyenkor a program feldob egy ablakot, akkor nyomod a resetet és amikor a mutató a maximumát eléri elengeded. Az időzítés fontos. A bootloaderrel max 1s-ig tudsz beszélni, utána kilép.
A hozzászólás módosítva: Ápr 20, 2013
Következő: »»   531 / 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