#avr | Logs for 2014-03-16

Back
[07:41:48] <sdes> Help! I'm trying to use the Arduino as an AVR ISP but when I try to program this happens:
[07:41:49] <sdes> avrdude -p m328p -P /dev/ttyACM0 -c avrisp -b 19200
[07:41:51] <sdes> avrdude: AVR device initialized and ready to accept instructions
[07:41:52] <sdes> Reading | ################################################## | 100% 0.06s
[07:41:54] <sdes> avrdude: Device signature = 0x000000
[07:41:55] <sdes> avrdude: Yikes! Invalid device signature.
[07:41:57] <sdes> Double check connections and try again, or use -F to override
[07:41:58] <sdes> this check.
[07:42:00] <sdes> avrdude done. Thank you.
[07:42:01] <sdes> What should I do?
[07:42:10] <sdes> I'm quite sure I connected everything together well.
[07:42:25] <Thrashbarg> check, recheck and double check
[07:42:59] <Thrashbarg> get out your multimeter and set it for the beeper, to check all connections
[07:43:49] <sdes> My only multimiter is not functioning, so I guess I'll just have to buy a new one.
[07:43:59] <Thrashbarg> yes
[07:44:03] <sdes> Here is a picture, sorry for the shitty quality: http://i.imgur.com/4k4LRbK.jpg
[07:44:48] <Thrashbarg> do you not have the ground pin on the other side attached to ground?
[07:46:02] <xorm> get a nice dmm
[07:46:07] <Thrashbarg> a 100nF capacitor across the 5V and GND pins would help too
[07:49:37] <sdes> I don't. Should I?
[07:51:17] <Thrashbarg> well any cap from 10nF to 470nF should do
[07:51:42] <Thrashbarg> and connect that ground pin
[07:52:14] <sdes> Hm okay.
[07:52:49] <sdes> Sorry, I'm beginner at electronics and I don't know exactly what you mean 'across 5V and GND'
[07:53:02] <sdes> like linking them together with the cap?
[07:53:07] <Thrashbarg> yep
[07:53:27] <Thrashbarg> one leg of the cap to 5V, the other to GND
[07:53:34] <sdes> The negative leg should go where?
[07:53:58] <Thrashbarg> if you can, don't use a polarised cap, find a green one or a ceramic
[07:54:48] <sdes> I have a ceramic one that says 'CH 22'. Is that fine?
[07:54:56] <Thrashbarg> nope lol
[07:55:23] <Thrashbarg> 22 picofarads... ten thousand times smaller than what you really need
[07:55:55] <Thrashbarg> find one that has a last digit of 3 or 4
[07:56:06] <sdes> Well I have other that says l03 (I think)
[07:56:15] <Thrashbarg> 103 is 10 nanofarads, so that's fine
[07:56:33] <Thrashbarg> it's not *essential* it just helps a lot
[07:56:52] <Thrashbarg> gives the micro a stable power supply
[07:57:05] <sdes> So just connect it to the GND and 5V of the ATMega328p-pu?
[07:57:12] <Thrashbarg> yup
[07:57:40] <sdes> Should I try programming it again?
[07:57:49] <Thrashbarg> sure
[07:57:58] <Thrashbarg> it might even work with that other ground connected...
[07:58:11] <Thrashbarg> I don't know if that stops them because I've never wired one up with it disconnected...
[07:59:03] <sdes> It says the same thing.
[07:59:37] <Thrashbarg> hmm ok do you have MOSI and MISO the right way around? I get them confused sometimes
[07:59:50] <Thrashbarg> SCK is obvious, as is RESET
[08:00:29] <Thrashbarg> sdes: hmm was this AVR used in something else? Did it have a crystal attached to it?
[08:00:31] <Thrashbarg> or is it new
[08:00:45] <sdes> It is new but it came with an Arduino bootloader
[08:01:01] <sdes> I want to use it just for bare C and AVR, no Arduino.
[08:01:10] <sdes> Let me check the connections again...
[08:01:11] <Thrashbarg> ok that might mean it's could be fused to use a crystal
[08:02:42] <sdes> I tried using a 16mhz crytal but it didn't work.
[08:02:48] <sdes> I think the connections are just fine.
[08:03:03] <Thrashbarg> well I'm out of ideas
[08:03:51] <Thrashbarg> you can check to see if the Arduino board is trying to communicate with the ATmega by connecting LEDs up to the pins through resistors
[08:04:00] <Thrashbarg> I assume you don't have a logic probe
[08:04:28] <sdes> I don't.
[08:05:51] <sdes> Is it possible that I briked the chip by giving power to an uncorrect pin?
[08:06:08] <Thrashbarg> not necessarily
[08:07:03] <sdes> I have a second chip that is just the same, so maybe I could try with that?
[08:07:09] <Thrashbarg> sure
[08:07:27] <Thrashbarg> best thing to do with debugging electronics is to swap things when you can
[08:07:47] <Thrashbarg> try it with the crystal too. If it's not set to use it, it won't
[08:07:54] <Thrashbarg> just in case
[08:08:35] <sdes> How do I put the crytal?
[08:08:53] <Thrashbarg> if you look a the datasheet, there are two pins called XTAL1 and XTAL2
[08:09:04] <Thrashbarg> put it across them
[08:10:38] <sdes> Do I need caps?
[08:11:02] <Thrashbarg> the breadboard should have enough capacitance
[08:11:11] <Thrashbarg> that is, I've run plenty of things without caps and they work
[08:11:41] <Thrashbarg> you're always free to put two 22pF caps from the two crystal pins to ground
[08:11:46] <Thrashbarg> if you want
[08:13:21] <sdes> Hey I noticed something weird
[08:13:25] <Thrashbarg> hmm?
[08:13:56] <sdes> The heartbeat and "currently programming" leds that are always supposed to be lighting only light when I disconnect the ground from the breadboard.
[08:14:14] <sdes> So they only light when the GND isn't connected to the Arduino
[08:14:58] <Thrashbarg> wait where is the GND wire you're disconnecting connected to?
[08:15:47] <sdes> The GND pin on the Arduino was connected to the rail that has a blue line next to it.
[08:16:02] <sdes> and I connected both rails with blue lines together
[08:17:05] <Thrashbarg> hmmm actually speaking of rails... are they the type which have a break in them half way along?
[08:17:11] <sdes> No.
[08:17:15] <Thrashbarg> good lol
[08:19:57] <sdes> Did I connect something incorrectly?
[08:23:28] <Thrashbarg> not that I can see
[08:23:44] <Thrashbarg> usually the rails on those bread boards aren't continuous, they have a break half way
[08:27:33] <sdes> I tried lighting up a LED by connecting the VCC to GND using the led and it lighted up in every spot that I tried
[08:27:41] <sdes> So I think it is connected.
[08:28:36] <Thrashbarg> ok
[08:29:14] <sdes> Oh oh oh
[08:29:18] <sdes> BIG NEWS+
[08:29:20] <sdes> YEY
[08:29:21] <Thrashbarg> hmm?
[08:29:37] <sdes> I tried with another ATMEGA328P-PU and it worked!
[08:29:42] <Thrashbarg> ah nice!
[08:30:02] <sdes> So the other one was broken?
[08:30:13] <Thrashbarg> it's infuriating when you're positive you're doing everything correctly, and it *still* doesn't work... until you find a faulty component
[08:30:15] <Thrashbarg> maybe
[08:30:23] <Thrashbarg> or probably
[08:34:53] <sdes> Thank you so much for everything.
[08:36:54] <sdes> Uh well, I know this is a silly question but now that it's ready to accept instructions how do I program it from avrdude?
[08:39:15] <Thrashbarg> say your hex file is prog.hex, it'd be avrdude -p m328p -P /dev/ttyACM0 -c avrisp -b 19200 -U flash:w:prog.hex
[08:39:19] <Thrashbarg> I think...
[08:39:21] <Thrashbarg> actually
[08:39:33] <Thrashbarg> I'll look it up
[08:39:49] <Thrashbarg> I was right the first time lol
[08:40:17] <sdes> How do I turn a program into a hex file and do I have to specify the directory the hex file is in?
[08:40:38] <Thrashbarg> there are makefiles out there which will do it
[08:41:33] <Thrashbarg> http://www.nongnu.org/avr-libc/examples/demo/Makefile
[08:42:50] <Thrashbarg> might help to remove all of those #MCU_TARGET lines and replace it with a single MCU_TARGET = atmega328p
[08:42:56] <Thrashbarg> without a #
[08:43:12] <sdes> So what do I do with this file? How do I run it? How do I target the file I want to turn into HEX?
[08:43:23] <Thrashbarg> I'm getting to that :P
[08:43:56] <sdes> Oh sorry.
[08:44:00] <Thrashbarg> 'PRG = demo' can have 'demo' changed to the name of the project
[08:44:09] <Thrashbarg> same for OBJ
[08:44:17] <Thrashbarg> demo is the file name you're using
[08:48:22] <Thrashbarg> anyway when the file is changed for what you need, run 'make' in the directory containing the C source and Makefile and it might even spit out a .hex file
[08:53:04] <sdes> Oh. I see. Thanks man
[08:53:13] <sdes> You've helped me a lot.
[08:53:18] <Thrashbarg> cool
[08:54:14] <sdes> Do I need to add the extention to the filename? For example demo.c instead of demo?
[08:58:24] <Thrashbarg> the .c is added afterwards
[08:58:29] <Thrashbarg> in the Makefile
[09:00:34] <sdes> Can I just add it without specifiying that it's a C file?
[09:02:51] <Thrashbarg> ah I see.. change "demo.o: demo.c iocompat.h" to your filename.c and filename.o
[09:02:54] <Thrashbarg> maybe remove iocompat.h
[09:03:07] <antto> is there a way to measure performance like.. get cpu cycles at some point and then again at a later point..?
[09:03:10] <Thrashbarg> probably not the best example of a Makefile
[09:03:15] <antto> on the 8bit atmegas
[09:03:55] <antto> or anything similar, doesn't have to be painfully precise
[09:05:20] <Thrashbarg> antto: maybe the easiest thing to do is read and reset a timer at a point in the main program loop
[09:05:23] <megal0maniac_afk> antto: Depends on how you quantify "performance"
[09:06:32] <antto> i have a big fat function which i am adding stuff to and changing code and so on, and this function is supposed to do what it does as quickly as possible
[09:07:00] <antto> and i want to be able to compare how it performs because i have no idea so far
[09:07:11] <antto> how long it takes for it to execute
[09:08:49] <antto> i have a timer already, but it ticks at 1ms, which is not fine enough for this kind of measurement
[09:09:02] <antto> i want at least precision of 0.1ms
[09:10:18] <antto> because if my function takes 3ms - it's okay, but if it takes 4ms to process - it's very bad, and i'd have to start chopping things down
[09:13:33] <antto> hm... maybe.. if nothing else works, i can use a spare output pin, set it high in the beginning of the func, and then drop it low right before the function returns, and then i'll record it as audio on teh PC
[09:14:16] <megal0maniac_afk> antto: There are multiple timers on an AVR
[09:14:23] <megal0maniac_afk> Why not just use another one?
[09:14:39] <antto> yes, but i have things which require shutting interrupts off
[09:18:58] <antto> wouldn't that be a problem?
[09:42:03] <antto> okay, i used a pin, works nicely
[10:40:08] <bezoka> hello
[10:40:13] <bezoka> is any program on linux like WinAvr?
[10:41:03] <mdszy> avrdud?
[10:41:08] <mdszy> *avrdude
[10:52:40] <timemage> bezoka, windows binaries for gcc for avr and avrdude are more the exception than the rule. normally when you install for linux, you're looking for gcc,gdb,avrdude for linux by name rather than packaged together. the package names usually mention avr explicitly. e.g. avr-gcc. you can cheat and install the arduino for linux binary tarball and just toss out everything but the precompiled gcc,gdb,avrdude.
[11:28:21] <Lambda-Aurigae> bezoka, what flavor of linux are you running?
[11:40:54] <vanila> hi
[11:41:21] <vanila> does anyone know a page with AVR schematics i could solder on a stripboard to make some things?
[11:45:53] <Lambda-Aurigae> all depends on what you want to make.
[11:47:15] <megal0maniac_afk> vanila: You should google "AVR stripboard schematic for things"
[11:48:13] <vanila> Lambda-Aurigae, well just some basic circuits to learn and get ideas from
[11:48:47] <Lambda-Aurigae> what avr or avrs do you have?
[11:49:25] <bezoka> Lambda-Aurigae: Debian
[11:50:23] <megal0maniac_afk> Oh my goodness
[11:50:48] <Lambda-Aurigae> bezoka, apt-get install gcc-avr avrdude avr-libc binutils-avr
[11:50:53] <vanila> the only one i have is already soldered onto a board
[11:51:07] <vanila> but I'd like to get a bare chip and make a board with it myself
[11:52:03] <Lambda-Aurigae> vanila, perhaps you should get an atmega328 or similar chip and start from there.
[11:52:12] <vanila> yeah!
[11:52:26] <Lambda-Aurigae> atmega88 is another one that's popular.
[11:52:30] <vanila> but how do i learn about things like what circuitry I need to reprogram it?
[11:52:34] <Lambda-Aurigae> I started with the atmega32 way back when.
[11:52:42] <vanila> e.g. through USB or other methods
[11:52:45] <Lambda-Aurigae> today my favorite avr is the atmega1284p.
[11:52:49] <megal0maniac_afk> I highly recommend the atmega328p
[11:53:12] <megal0maniac_afk> Because documentation and demo code is all over the place, given its popularity
[11:53:12] <Lambda-Aurigae> well, you will need a programmer...I use a parallel port programmer mostly myself but the one that Tom_itx sells is very good.
[11:53:58] <vanila> is making something that can program one itself - like development boards very hard then?
[11:54:27] <vanila> unluckily i dont have a parallel port in my computer
[11:54:30] <Lambda-Aurigae> well, you will need a programmer to get the program onto the chip to start.
[11:54:35] <vanila> i would have liked to try that
[11:54:37] <Lambda-Aurigae> but you can put a bootloader on the chip.
[11:54:43] <vanila> oh right I see
[11:54:49] <Lambda-Aurigae> then use that bootloader to update the main program on the chip.
[11:55:31] <Lambda-Aurigae> some avrs have built in usb hardware and you can make a usb bootloader.
[11:56:27] <Lambda-Aurigae> I wouldn't recommend getting one of those usbasp programmers that are so cheap and popular as they have some issues.
[11:56:49] <Lambda-Aurigae> either get a good commercial one or talk to Tom_itx and the one he sells as it works very well.
[11:57:05] <Lambda-Aurigae> and it works for just about every avr out there.
[11:57:31] <vanila> oh i saw some people using usbasp to make drivers for old keyboards which was cool
[11:57:49] <vanila> what kind of problems does it have?
[11:57:52] <Lambda-Aurigae> usbasp is bitbanged usb on avr...it is a fun toy but I wouldn't rely on it for anything.
[11:58:46] <Lambda-Aurigae> I currently have 3 desktop and 6 notebook computers here and of them, 3 of the notebooks will not work with vusb based usb communications...
[12:00:44] <Lambda-Aurigae> vusb just barely fits the low speed usb spec...it is a great thing, don't get me wrong. Shows how powerful the AVR really is. But I prefer a real hardware usb solution for anything that has to just work.
[12:06:11] <N2TOH> would VUSB work better if the ARV was overclocked to 24MHz?
[12:06:27] <Lambda-Aurigae> not really as it doesn't have timing for 24MHz.
[12:06:28] <vanila> ohh
[12:06:40] <vanila> but I thought that one of the atmel chips did have hardware for USB
[12:06:53] <Lambda-Aurigae> vanila, some AVR chips do have hardware USB.
[12:07:29] <Lambda-Aurigae> Tom_itx also sells a usbAVR on a breakout board that's pretty decent as well.
[12:07:34] <N2TOH> at the same time I have not seen much support in the comunity for such chips
[12:07:53] <N2TOH> the hardware USB ARVs' that is
[12:08:04] <Lambda-Aurigae> not a lot of them in use that I know of N2TOH
[12:08:20] <N2TOH> how much do they cost in smally qty?
[12:08:22] <Lambda-Aurigae> they are gaining in popularity though.
[12:08:35] <Lambda-Aurigae> depends on the chip.
[12:09:24] <Lambda-Aurigae> atmega32u2 is 4.50 USD
[12:09:35] <Lambda-Aurigae> 2.86USD in quantity of 25 or more from digikey.
[12:09:46] <Lambda-Aurigae> that's the chip Tom_itx uses on his breakout board.
[12:10:01] <Lambda-Aurigae> http://tom-itx.dyndns.org:81/~webpage/boards/USB_Breakout/USB_Breakout_index.php
[12:10:21] <Lambda-Aurigae> http://tom-itx.dyndns.org:81/~webpage/boards/USBTiny_Mkii/USBTiny_Mkii_index.php and there's his programmer
[12:14:11] <Lambda-Aurigae> http://www.micahcarrick.com/tutorials/avr-microcontroller-tutorial/getting-started.html
[12:14:18] <Lambda-Aurigae> atmega88/328 tutorial.
[12:16:27] <Lambda-Aurigae> maybe it's time to put together an avr learning kit and website full of tutorials stolen from other people.
[12:27:53] <Tom_itx> i did
[12:30:34] <sdes> I am having trouble programming my ATMega328P-PU, I can make it ready to accept instructions but I can't upload a program in it.
[12:30:51] <sdes> So, apparently I can do this:
[12:30:53] <sdes> avrdude -p m328p -P /dev/ttyACM0 -c avrisp -b 19200
[12:30:54] <sdes> avrdude: AVR device initialized and ready to accept instructions
[12:30:56] <sdes> Reading | ################################################## | 100% 0.06s
[12:30:57] <sdes> avrdude: Device signature = 0x1e950f
[12:30:59] <sdes> avrdude: safemode: Fuses OK
[12:31:00] <sdes> avrdude done. Thank you.
[12:31:02] <sdes> But not this:
[12:31:03] <sdes> avrdude -p m328p -P /dev/ttyACM0 -c avrisp -e -U flash:w:blink.hex
[12:31:05] <sdes> avrdude: AVR device initialized and ready to accept instructions
[12:31:07] <sdes> Reading | ################################################## | 100% 0.01s
[12:31:08] <sdes> avrdude: Device signature = 0x000000
[12:31:10] <sdes> avrdude: Yikes! Invalid device signature.
[12:31:11] <sdes> Double check connections and try again, or use -F to override
[12:31:12] <sdes> this check.
[12:31:14] <sdes> avrdude done. Thank you.
[12:31:15] <sdes> What could be the problem?
[12:31:17] <sdes> Thanks in advance.
[12:31:17] <Tom_itx> there is pastebin for such things
[12:31:30] <megal0maniac_afk> sdes: OMG PASTEBIIIIINNNNNNN
[12:31:38] <megal0maniac_afk> No flood please
[12:31:45] <megal0maniac_afk> Tom_itx will kick you
[12:31:55] * Tom_itx kicks megal0maniac_afk
[12:32:02] <megal0maniac_afk> :(
[12:32:04] <Tom_itx> woops wrong target
[12:32:21] <megal0maniac_afk> I'd say you cannot kick me, but then you would
[12:32:30] <sdes> Oh I'm sorry.
[12:32:38] <sdes> I will avoid doing that again.
[12:33:04] <megal0maniac_afk> sdes: Same thing if you add sudo?
[12:33:14] <sdes> Let me see...
[12:33:27] <megal0maniac_afk> Eh. I'm misreading. It should do the same thing
[12:33:30] <Tom_itx> common mistake in linux
[12:33:39] <Tom_itx> no device access
[12:33:39] <sdes> I am using root terminal.
[12:33:53] <megal0maniac_afk> Yeah, 'dem udev rules
[12:36:14] <sdes> Why do I get signature Ox00000?
[12:36:49] <sdes> If I wired anything wrong I couldn't connect successfully with the chip on the first place, right?
[12:36:59] <sdes> Maybe it's a programming error?
[12:37:00] <Tom_itx> try adding -B32 to you line
[12:37:21] <sdes> Does it matter where in my line do I put it?
[12:37:27] <Tom_itx> i don't care
[12:37:39] <sdes> ?
[12:37:48] <Tom_itx> just put it on the cmd line
[12:38:04] <sdes> The same error pops up.
[12:38:34] <Tom_itx> one reason i don't like bitbanged programmers
[12:40:01] <sdes> What do you suggest?
[12:58:47] <Tom_itx> you can make it work, they're just slower and timing sensitive
[13:01:08] * Lambda-Aurigae pats his parallel port programmer.
[13:06:00] <Tom_itx> i have a couple of those too but still use my USB one
[13:06:20] <Lambda-Aurigae> my first programmer, based on a 74ls244...and it just worked to start and has never failed to work...
[13:06:21] <Tom_itx> and used to make/sell the bitbanged ones before i made the hardware USB one
[13:06:26] <Tom_itx> yep
[13:06:40] <Tom_itx> not many parports left in the world unfortunately
[13:06:55] <Lambda-Aurigae> my new quad core amd has one.
[13:06:56] <sdes> I found the problem.
[13:07:01] <sdes> It was quite a silly one.
[13:07:05] <Lambda-Aurigae> has parallel and serial ports.
[13:07:11] <Tom_itx> sdes i knew you would
[13:07:20] <sdes> I forgot to add "-b 19200" to the command.
[13:07:22] <Tom_itx> and it usually is a silly problem
[13:23:26] <rue_mohr2> you dont need a parallel port, I proved that you can use a IDE bus
[13:24:22] <rue_mohr2> http://eds.dyndns.org/~ircjunk/tutorials/elex/ata2isp/main.html
[13:50:26] <kolbyjack> Hi, I'm trying to make a simple echo program using interrupt driven usart, and I'm seeing some odd behavior. When I run minicom and type in some characters, the first one just disappears, but all chars after the first work fine. Can someome look at my source and tell me what I may be doing wrong? http://pastie.org/private/phfd4yit6gqsssokqnv9a
[13:55:20] <rue_mohr2> hmm
[13:56:29] <kolbyjack> I also wrote a simple python script that just sends a string across then waits for the echo, and it has to send it three times before it gets anything back
[13:56:49] <kolbyjack> It's almost like the avr is still in reset until I start sending data, maybe?
[14:05:11] <myself> kolbyjack: it's common for some uarts to need a few characters to get their buffer going, gotta see some bits and figure out which ones are start and stop bits, before the whole state-machine is in a known state
[14:05:14] <Duality> hi i am using a timer overflow to keep track of time, but every time i do somthing in my main loop looks like the timer is ticking slower, while i it shouldn't do that ?
[14:05:37] <myself> I haven't read the docs but is it possible that the uart you're using may be like that?
[14:06:21] <kolbyjack> myself: It's an arduino board, I'm not sure
[15:02:18] <megal0maniac_afk> Anyone here have or played with an "electric imp"?
[15:03:25] <Lambda-Aurigae> not I.
[15:05:52] <megal0maniac_afk> I want to but I cannot justify the cost (our currency is weak and shipping is expensive)
[15:06:14] <Lambda-Aurigae> don't think I could justify the cost either.
[15:06:54] <braincracker> hey guys
[15:06:55] <megal0maniac_afk> And I can get a 16gb wifi SD card for a little bit less. And that has a (hackable) 400mhz processor and 32mb of RAM
[15:06:59] <Lambda-Aurigae> 30 USD for a cortex m3 board.
[15:07:03] <megal0maniac_afk> Running Linux
[15:07:09] <braincracker> did you ever use a pendrive's flash chip ?
[15:07:17] <braincracker> with an atmega ?
[15:07:21] <Lambda-Aurigae> braincracker, only through the usb port..
[15:07:29] <Lambda-Aurigae> should be doable though.
[15:07:42] <braincracker> doesn't sound hard :/
[15:07:54] <braincracker> whewre one gets datasheets for them ?
[15:08:03] <Lambda-Aurigae> first, find the part number.
[15:08:08] <Lambda-Aurigae> then do a google search.
[15:08:23] <braincracker> what if they do not have part number, or custom ?
[15:08:30] <Lambda-Aurigae> then you are screwed.
[15:08:52] <megal0maniac_afk> braincracker: Those are icky and almost always have a dedicated controller
[15:09:15] <megal0maniac_afk> And the controllers are hard-programmed to deliver a USB interface
[15:09:29] <megal0maniac_afk> Interfacing with the memory itself, I imagine, would be a nightmare
[15:09:37] <braincracker> i read they used to xorcrypt the data on it, but you could use the flash chips.
[15:10:03] <Lambda-Aurigae> the flash chips should be easily usable..will be one of a limited number of parts really.
[15:10:13] <braincracker> well i want lba addressing, what a c function would translate
[15:11:05] <Lambda-Aurigae> the lba addressing is done through the onboard controller..the flash chip is likely gonna be just a simple addressable flash chip, nothing really special.
[15:11:24] <Lambda-Aurigae> either a parallel flash or a serial interface.
[15:11:47] <braincracker> my atmega can run a c function that translates lba address to the banking nightmare.
[15:12:15] <braincracker> at least i think so, haven't tried yet
[15:12:38] <Lambda-Aurigae> I have a couple of dead usb thumb drives here that have a single chip onboard...so the flash and controller is all on one chip, making it next to impossible to access the flash any way but through the usb port.
[15:12:51] <braincracker> hah, well ok
[15:13:00] <braincracker> that is useless
[15:13:15] <Lambda-Aurigae> and have seen some that have separate flash drives and they appeared to be parallel interfaced.
[15:13:16] <braincracker> i have one that tiny too
[15:13:33] <braincracker> but the large ones use similar flash ics, and ssd drives use similar ics too
[15:14:02] <braincracker> i can imagine all the flash schips i can get from bad ssd drives in a few years :)
[15:14:20] <Lambda-Aurigae> depending on what you want to do, interfacing to an SD card might be easier overall, including the physical interface.
[15:14:37] <braincracker> ;/
[15:14:44] <megal0maniac_afk> Agreed!
[15:14:52] <braincracker> sd card is easy on 8 bit atmel?
[15:15:00] <megal0maniac_afk> Although it might be a fun exercise
[15:15:02] <Lambda-Aurigae> the physical connection to those flash chips is teeny tiny icky surface mount.
[15:15:11] <megal0maniac_afk> braincracker: Yip. SPI
[15:15:18] <Lambda-Aurigae> braincracker, there are multiple libs out there for SD card access from AVR.
[15:15:29] <braincracker> sounds fun, should try out
[15:15:38] <Lambda-Aurigae> you usually need a minimum of 1K of sram but that's not too much of an issue.
[15:15:52] <Lambda-Aurigae> you generally read and write in blocks of 512 bits at a time.
[15:16:00] <braincracker> then atmega168 would do
[15:16:08] <megal0maniac> braincracker: SD cards can be interfaced in two different ways. The one is proprietary, complicated, achieves maximum throughput and requires you to sign a NDA
[15:16:11] <Lambda-Aurigae> I did similar with parallel ATA harddrives 8 to 10 years ago too.
[15:16:17] <megal0maniac> The other way is simple SPI and is open spec
[15:16:28] <braincracker> why would writing a block require sram ? is writing a block time limited?
[15:16:44] <Lambda-Aurigae> no, but you want to build a 512 byte block and write it all out at once.
[15:16:59] <braincracker> i could render it on-the-fly
[15:17:05] <Lambda-Aurigae> at least, that's how I understood it when I was playing with them last.
[15:17:41] <Tom_itx> yeah smallest is 512 byte blocks
[15:17:55] <braincracker> ok but you do not want 512 byte sram to write 512 bytes.
[15:18:16] <braincracker> *not need
[15:18:25] <Lambda-Aurigae> do not NEED it but it helps.
[15:18:32] <Lambda-Aurigae> depending on how you do things.
[15:18:44] <braincracker> wasting ram is luxory on an mcu :/
[15:18:55] <Lambda-Aurigae> there are even SD based FAT implementations for the AVR
[15:18:55] <braincracker> 1k sram is much
[15:18:59] <Lambda-Aurigae> bah.
[15:19:06] <Lambda-Aurigae> atmega1284p has 16K of sram.
[15:19:24] <Lambda-Aurigae> and my current toy is the pic32mx250f128b which has 32K of sram.
[15:19:34] <braincracker> check atmega168
[15:19:42] <Lambda-Aurigae> I know about that one too.
[15:19:52] <Lambda-Aurigae> just don't use it.
[15:20:00] <braincracker> 1024 byte sram
[15:20:02] <braincracker> total
[15:20:25] <braincracker> and i assume you want variables too
[15:20:27] <Lambda-Aurigae> could always add an external serial sram.
[15:20:58] <braincracker> i think i'll plug in a 16GB sd card then and use that for ram too, cool?
[15:21:11] <Lambda-Aurigae> might be difficult.
[15:21:19] <braincracker> emulating registers:
[15:21:20] <Lambda-Aurigae> look at the specification as to how to read and write to SD.
[15:21:31] <Lambda-Aurigae> https://www.sdcard.org/downloads/pls/
[15:23:07] <Lambda-Aurigae> http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en559066
[15:23:12] <Lambda-Aurigae> I really like these toys.
[15:24:37] <Tom_itx> http://tom-itx.dyndns.org:81/~webpage/pdf/mmc/
[15:24:44] <Tom_itx> there's what i have on the topic
[15:25:11] <megal0maniac> Tom_itx: You have things on all the topics
[15:25:49] <Tom_itx> no
[15:26:03] <braincracker> https://www.sdcard.org/downloads/formatter_4/
[15:26:06] <braincracker> lold
[15:26:20] <braincracker> The SD/SDHC/SDXC memory cards have a "Protected Area" on the card for the SD standard's security function.
[15:26:25] <braincracker> lame
[15:26:39] <Lambda-Aurigae> and you can actually software-write-protect them.
[15:26:49] <Lambda-Aurigae> someone made an avr based write-protector a while back.
[15:26:55] <braincracker> :)
[15:27:03] <braincracker> why formatter fow win?
[15:27:17] <braincracker> can readers write the card protected area?
[15:27:23] <Lambda-Aurigae> nope.
[15:27:35] <braincracker> then it is just useless
[15:27:48] <braincracker> write protect is fine
[15:27:48] <Lambda-Aurigae> or, rather, the drivers for them can't usually.
[15:27:59] <braincracker> i could use write protect on my boot linuxes
[15:28:08] <Lambda-Aurigae> the write protect is just a tab that pushes a switch in the reader device.
[15:28:15] <braincracker> it is stupid when it gets corrupt because of not proper unmount
[15:28:51] <braincracker> oh, none of my readers had that feature
[15:29:05] <braincracker> i should make a reader with some fast arm then
[15:30:39] <rue_mohr2> you should just stick in a whole rasberry pi
[15:31:40] <braincracker> can i have the full specs? https://www.sdcard.org/downloads/pls/simplified_specs/
[15:31:45] <braincracker> not just the simplified
[15:31:48] <Lambda-Aurigae> let's use a 32bit processor to interface to the world and do all our work on our favorite 8bit processor!
[15:32:01] <Lambda-Aurigae> braincracker, yes, if you pay for them and sign the NDA.
[15:32:08] <braincracker> oh
[15:35:54] <Lambda-Aurigae> hmmm...kinda reminds me of the old mac video processing system from the early 90s.
[15:36:14] <Lambda-Aurigae> apple was all high and mighty about their video processing capability.
[15:36:31] <braincracker> http://media.digikey.com/pdf/Data%20Sheets/ATP%20Electronics%20PDFs/IG_SD_SDHC_Card_Spec_Rev2.6.pdf
[15:36:33] <Lambda-Aurigae> but they were just using the mac as a front end controller for an amiga with a video toaster.
[15:36:39] <braincracker> oops, promise you won't read it
[15:37:22] <braincracker> ATP Industrial Grade SD Card Specification v1.0
[15:56:33] <braincracker> http://media.digikey.com/pdf/Data Sheets/M-Systems Inc PDFs/SD Card Prod Family OEM Manual.pdf
[16:06:58] <braincracker> SanDisk wear leveling http://ugweb.cs.ualberta.ca/~c274/resources/hardware/SDcards/WPaperWearLevelv1.0.pdf
[16:08:34] <braincracker> hm http://www.reactivedata.com/Products/Datasheets/Sandisk/microSD/71001=80-36-03335Rev2_5f5_5fmicroSD_5fOEM_5fProductGuide_5fmicroSDXC_5fand_5fUHS.pdf
[16:09:00] <braincracker> http://www.reactivedata.com/Products/Datasheets/Sandisk/
[16:14:06] <megal0maniac> Hmmm... I'm missing something. How do you address 8K of SRAM with only 13 address pins?
[16:14:29] <megal0maniac> 2^13 = 512
[16:50:11] <Lambda-Aurigae> megal0maniac_afk, what chip?
[16:50:27] <Lambda-Aurigae> and is address multiplexed onto data as well as the regular address lines?
[16:54:19] <megal0maniac_afk> Lambda-Aurigae: This one: http://pdf1.alldatasheet.com/datasheet-pdf/view/65364/HYNIX/HY6264.html
[16:56:04] <Lambda-Aurigae> oh, and where did you learn math?
[16:56:09] <Lambda-Aurigae> 2^13 = 8192
[16:56:21] * megal0maniac_afk headdesk
[16:56:32] <megal0maniac_afk> Yes. Yes it is
[16:56:37] <megal0maniac_afk> It's late here
[16:56:43] <megal0maniac_afk> I don't even..
[16:56:49] <Lambda-Aurigae> only 4:40pm ish here.
[16:59:13] <Lambda-Aurigae> aaww man...Jack A. Kinzler died.
[17:00:06] <megal0maniac_afk> It's almost Monday here
[17:00:17] <megal0maniac_afk> I'm sorry, I'm ashamed of how dumb that was :)
[17:01:18] <megal0maniac_afk> Really really really want to get openwrt running on a wireless SD card
[17:01:58] <Lambda-Aurigae> Kinzler was the ultimate NASA hacker
[17:06:13] <megal0maniac_afk> 'Tis a pity. But he was 94...
[17:33:00] <Lambda-Aurigae> megal0maniac_afk, yeah,,,but he was one heck of a hacker.
[17:48:14] <specing> LOLOLOL @ 2^13=512
[17:49:26] <vanila> whats funny about it
[17:51:16] <twnqx> the fact that 2^10 = 1024 already?
[17:52:24] <braincracker> hey guys
[17:52:25] <braincracker> http://www.farnell.com/datasheets/921199.pdf
[17:52:58] <braincracker> flash ic ds says it is able to program 64 bytes in one operation
[17:55:44] <braincracker> http://uk.farnell.com/spansion/s29gl01gp12tfi010/ic-memory-flash-1g-3v-56tsop/dp/1791234
[18:00:06] <twnqx> so, is there any question involved? :P
[18:12:33] <Lambda-Aurigae> braincracker, yeah, so? you comparing this to SD cards? the 512bit block thing is built into the SD interface.
[18:13:00] <braincracker> well this is able to write 1 word t a time
[18:13:07] <Lambda-Aurigae> yeah.
[18:13:38] <braincracker> these kind of memory ics are used in ssds and pendrive, wondering if they are pin to pin compatible
[18:13:41] <Lambda-Aurigae> well, 64bits....a word is kind of a processor dependent thingie.
[18:13:55] <braincracker> word = 16 bit
[18:13:59] <braincracker> byte = 8 bit
[18:14:13] <braincracker> mr Lambda
[18:14:44] <Lambda-Aurigae> I've seen processors where a byte was 4 bits.
[18:14:45] <braincracker> 32 bit = dword, 64 bit = qword
[18:14:48] <Lambda-Aurigae> a 4 bit processor.
[18:15:10] <braincracker> that is called a nibble
[18:15:13] <braincracker> :/
[18:15:31] <Lambda-Aurigae> all depends on your frame of reference.
[18:15:40] <braincracker> hex digits are 4 bit
[18:15:42] <Lambda-Aurigae> if the processor works with 4 bits at a time then 4 bits becomes a byte.
[18:17:33] <Lambda-Aurigae> pdp 11 had 16bit words where the pdp-8 had 12bit words.
[18:17:50] <Lambda-Aurigae> anyhoo.
[18:18:13] <Lambda-Aurigae> as for the memory chips and being pin compatible with something else, one would have to look at the datasheet.
[18:19:17] <Lambda-Aurigae> and I see a typo on the farnell site for that chip....it is 1Gb, not 1GB.
[18:25:08] * Xark notes 12 bits explains octal use. :)
[18:28:24] <clixxIO> Good morning: hey what do you guys think is the most popular AVR processor in use?
[18:28:36] <Lambda-Aurigae> atmega328p maybe.
[18:28:50] <Lambda-Aurigae> because that's the basic ardweeny processor.
[18:29:02] <clixxIO> right.
[18:29:27] <clixxIO> and I guess the ardweeny language makes them the most accessable too
[18:29:41] <Lambda-Aurigae> I like the atmega1284p myself due to the large flash and ram.
[18:29:51] <mdszy> haha, ardweeny
[18:29:52] <mdszy> love it
[18:32:37] <clixxIO> I haven't tried the atmega1284's
[18:33:14] <Lambda-Aurigae> atmega1284p, 40pin dip, 128K flash, 16K sram.
[18:33:16] <Lambda-Aurigae> 20MHz
[18:33:22] <Lambda-Aurigae> bit pricy though.
[18:33:25] <Lambda-Aurigae> 7 to 9 dollars.
[18:33:39] <braincracker> yes they like to typo the sizes...
[18:34:22] <braincracker> 128 kiB x 1024 = 128 MiB
[18:44:14] <clixxIO> does that work on an AVR? sorry I just came in
[18:44:43] <Lambda-Aurigae> does what work on AVR?
[18:44:58] <clixxIO> the RAM
[18:45:28] <Lambda-Aurigae> actually, we were talking about a flash chip there.
[18:45:35] <Lambda-Aurigae> but, yes, it can be made to work with an AVR.
[18:45:53] <Lambda-Aurigae> you can't execute code from it or anything but you can read and write it.
[18:47:16] <clixxIO> that's cool
[18:48:13] <Lambda-Aurigae> and it would take some hoops to make it store variables and such in an easily accessible manor.
[18:49:46] <Lambda-Aurigae> some years back someone made a doorbell that used old 32Kx8bit parallel UV erasable EPROMS along with an AVR to make a doorbell.
[18:50:19] <clixxIO> ah ok
[18:50:56] <Lambda-Aurigae> they would save audio files to the EPROMs and play them back with the AVR.
[18:52:10] <clixxIO> I'm into trying to make things like that
[18:52:52] <Lambda-Aurigae> I'm currently working on a C interpreter for the AVR based on picoc...using serial srams to store the user programs.
[18:52:55] <clixxIO> I can listen to the AVR play tunes all night, but my wife says it's very annoyting
[18:53:33] <clixxIO> she says it sounds like electric christmas cards - which I agree is very annoying
[18:53:56] <clixxIO> ah ok - nice
[18:53:58] <Lambda-Aurigae> yeah..they can at that.
[18:54:13] <Lambda-Aurigae> I've done a couple of audio thingies and some sound good, some not so good.
[18:56:14] <clixxIO> I've never used picoc. I'm working on an event framework for AVR
[18:56:27] <Lambda-Aurigae> picoc is a
[18:56:39] <Lambda-Aurigae> picoc is a C subset interpreter...it's fairly complete though.
[18:56:55] <Lambda-Aurigae> I'm having to do some major hack and slash to make it run on the atmega1284p.
[18:57:36] <clixxIO> yeah
[18:57:48] <clixxIO> this is my latest AVR project : https://plus.google.com/109366813998920635083/posts/CUxsVeRsLa2
[18:58:47] <Lambda-Aurigae> haha...the processor in that gps module is far more powerful than the avr you are using.
[18:59:15] <clixxIO> oh well
[19:00:57] <clixxIO> This is an example of the event framework: https://github.com/clixx-io/clixx.io/blob/master/eventframework/timer.cpp
[19:01:57] <clixxIO> It works on linux, but I'm midway through porting it onto the AVR. Some of the low-level stuff is not that friendly
[19:02:09] <Lambda-Aurigae> I bet.
[19:02:14] <Lambda-Aurigae> another abstraction layer.
[19:02:44] <clixxIO> not really
[19:03:00] <clixxIO> It's a reduced scaffolding approach
[19:03:22] <Lambda-Aurigae> no clue what that means.
[19:03:28] <clixxIO> The code is not any less efficient than using standard C
[19:03:51] <clixxIO> scaffolding is all the text that's in a program to show structure
[19:04:16] <clixxIO> for example int main(){ .. that is scaffolding
[19:05:12] <clixxIO> and in a common embedded app, having a for (;;){ is also scaffolding
[19:05:46] <Lambda-Aurigae> another way to talk about programming.
[19:06:03] <clixxIO> yes
[19:07:01] <clixxIO> well I was trying to make some attiny things, and for such a small device, there is so much programming effort required
[19:30:50] <clixxIO> but I'm wondering, can I2C on AVR be implemented on any two pins?
[19:31:09] <clixxIO> or does it need to be on only the designated pins?
[19:31:30] <Lambda-Aurigae> depends.
[19:31:49] <Lambda-Aurigae> if you bitbang it, any 2 pins works but works best with interrupt enabled pins.
[19:32:00] <Lambda-Aurigae> depends on your implementation.
[19:32:31] <Lambda-Aurigae> the hardware i2c, known as TWI on AVR, is only available on the specific pins designated in the datasheet.
[19:34:56] <clixxIO> oh ok
[19:35:42] <Lambda-Aurigae> some pic chips have the ability to move peripherals around to different pins.
[19:35:50] <Lambda-Aurigae> and I think xmega might be able to too but not sure.
[19:38:01] <clixxIO> does the TWI on AVR work well when the mcu is a slave?
[19:38:12] <Lambda-Aurigae> on some of them it does.
[19:38:14] <clixxIO> I mean do they support that?
[19:38:22] <Lambda-Aurigae> depends on how it's implemented.
[19:38:34] <Lambda-Aurigae> check the datasheet for the chip in question.
[19:39:44] <clixxIO> ok
[19:41:02] <Lambda-Aurigae> some chips have a regular TWI,,others have a USI which can play TWI, SPI, and USART...the USI is somewhat limited compared to the full versions.
[19:42:03] <clixxIO> yeah, I must slowly learn all those things
[19:42:14] <Lambda-Aurigae> datasheet is your bible.
[19:42:15] <clixxIO> here are what my attiny boards look like : https://plus.google.com/109366813998920635083/posts/LKHYdpLWbfb
[19:42:54] <clixxIO> here's a better example: https://plus.google.com/109366813998920635083/posts/JL1vH25TrY2
[19:49:40] <Maras> Hey, which register is associated with R16 ( attiny13a, can't find out it anywhere )
[19:52:44] <Lambda-Aurigae> umm...register 16
[19:53:02] <Xark> Maras: What do you mean? R16 is r16 (aka address 0x10).
[19:54:07] <Maras> Xark: so this instruction should work? ldi 0x10,0b00000101
[19:54:53] <Xark> Hmm, I don't think so. Why not ldi r16,0b101 ?
[19:55:29] <Xark> ldi takes a register not a memory address (even though the register is aliased there).
[19:56:39] <Maras> But registers have adresses, so why can't I do it in this way?
[19:57:12] <Maras> I just learning asm
[19:57:23] <Maras> It's just a little experiment
[19:57:32] <Xark> Maras: No problem. Make sure you have looked at www.atmel.com/images/doc0856.pdf‎
[19:58:04] <Lambda-Aurigae> LDI Rh,K
[19:58:19] <Lambda-Aurigae> where Rh is the register R0 or R16 or whatever
[19:58:27] <Lambda-Aurigae> and K is an 8 bit unsigned integer.
[19:58:47] <Lambda-Aurigae> so you would do ldi R16,0b00000101
[19:59:39] * Xark notes annoying AVR restriction where LDI only works on registers r16-r31. :)
[19:59:49] <Lambda-Aurigae> hmmm..yeah..
[20:00:11] <Lambda-Aurigae> forgot about that.
[20:01:06] <Xark> Maras: You cannot directly store an immediate to memory in AVR. You would have to LDI r17,xx then STS 0x10,r17 (however that would be pointless in this case vs ldi)
[20:01:30] <Xark> (STS is store register to memory direct)
[20:01:57] <Lambda-Aurigae> http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCcQFjAA&url=http%3A%2F%2Fwww.atmel.com%2Fimages%2Fdoc0856.pdf&ei=Y0QmU8egGsrXyAGviIGYBQ&usg=AFQjCNHTOttmFSxRGhC1HIgZRG_zottj6Q&bvm=bv.62922401,d.aWc
[20:01:59] <Lambda-Aurigae> hmm.
[20:02:02] <Lambda-Aurigae> not a good link.
[20:02:11] <Lambda-Aurigae> http://www.atmel.com/images/doc0856.pdf
[20:02:13] <Lambda-Aurigae> better
[20:02:15] <Maras> Xark: ye, I have looked at this doc, but there is no explanation why I cannot use address insted lable
[20:02:23] <Xark> However, since as mentioned you can't LDI r0-r15 it might make sense to LDI r16,0xDA STS 0x01,r16 ( to load immediate in r1).
[20:02:47] <Xark> Maras: Yes, it is clear.
[20:03:13] <Xark> Maras: For example on LDI page it has: LDI Rd,K 16 ≤d ≤31, 0 ≤K ≤255
[20:03:24] <Maras> it is
[20:03:38] <Xark> So you can see d must be between 16 and 31 and K 0 and 255 (e.g.)
[20:04:20] <Xark> On an instruction that references memory, it would show: STS k,Rr 0 ≤r ≤31, 0 ≤k ≤65535 (any register 0-13 to memory from 0-0xFFFF).
[20:05:24] <Xark> Maras: Very important to learn the syntax of the manual (save you a lot of grief). :) Also the line above the one I pasted shows concisely what the opcode does (load, store etc.).
[20:06:48] <Maras> Xark: tell me one more thing, General Purpose Register includes R16-R31 or it's diffrent registers?
[20:07:07] <Xark> Maras: I believe it is r0-r31 (all of them)
[20:07:51] <Xark> Maras: However, as shown in LDI, sometimes there are restrictions on which ones you can use for a given opcode.
[20:08:48] <Xark> Maras: Also, you see a lot of instructions use X, Y or Z and these are specific pairs of GPRs (X=R27:R26, Y=R29:R28 and Z=R31:R30)
[20:10:13] <Xark> So some are more general purpose than others. :)
[20:11:02] <clixxIO> anybody happen to know which include file defines uint8_t + PCMSK0 ?
[20:12:13] <Lambda-Aurigae> well, PCMSK0 is defined in each AVR specific iot or iom file.
[20:12:37] <Lambda-Aurigae> but I don't see "uint8_t + PCMSK0" in any of them.
[20:13:08] <clixxIO> thanks
[20:14:36] <clixxIO> they're some arduino thing
[20:14:53] <Lambda-Aurigae> uint8_t is defined in stdint.h
[20:15:04] <Lambda-Aurigae> but not adding them together anywhere.
[20:15:30] <Lambda-Aurigae> grep is a wonderful thing.
[20:17:45] <clixxIO> ok, well I'm not having fun. Is there any library that does pin change interrupts for gcc nicely that anyone knows about?
[20:18:15] <Lambda-Aurigae> that does what to/with them?
[20:18:48] <clixxIO> much like this : http://code.google.com/p/arduino-pinchangeint/
[20:20:20] <Lambda-Aurigae> why not port that?
[20:20:35] <Lambda-Aurigae> or look at how it does things and do it yourself?
[20:20:37] <clixxIO> well I'm trying now
[20:22:08] <Lambda-Aurigae> I'm not seeing any libs out there specifically for that.
[20:22:19] <Lambda-Aurigae> someone else might have one though.
[20:23:45] <clixxIO> I (google) found it : PCMSK0 |= (1 << PCINT4);
[20:24:23] <clixxIO> so it's obviously one of the interrupt setup registers
[20:25:10] <Lambda-Aurigae> yeah.
[20:25:24] <Lambda-Aurigae> it's all laid out in the datasheet.
[20:26:34] <Lambda-Aurigae> as for the file you get PCMSK0 in,,,when you include avr/io.h and have your processor defined properly in the compiler command line,,,or makefile or whatever,,then it includes the processor specific iot/iom file which has PCMSK0 in it.
[20:26:47] <clixxIO> It's too difficult for me to re-implement everything from first principles from the datasheet
[20:27:02] <clixxIO> ah thanks
[20:27:16] <Lambda-Aurigae> someone hasn't read the avr-libc manuals it seems.
[20:27:36] <Lambda-Aurigae> uint8_t datatype is defined in stdint.h,,,as I said earlier.
[20:27:41] <clixxIO> sorry for my annoying questions - I'm hacking my way through this as fast as possible
[20:28:08] <Lambda-Aurigae> RTFM...it's almost all in there.
[20:28:23] <clixxIO> not how to port that library
[20:28:42] <Lambda-Aurigae> the information you need for writing or porting most likely is in there.
[20:29:36] <Lambda-Aurigae> anyhoo,,,time for me to head to bed.
[20:29:41] <clixxIO> anyway, thanks for the help so far. I'm now on my way
[23:18:49] <anton02> I have to send instructions wirelessly to a microchip (it's mounted to a remote car). What's the best chip and protocol to use? The wireless information being sent to the car will be coming from a PC. I'm thinking it would be either RF, bluetooth, or wifi. I'm not sure which though. Cost should also be taken into consideration.
[23:49:35] <Casper> what kind of instruction?
[23:50:34] <anton02> Casper: what do you mean?
[23:50:46] <Casper> command or code?
[23:51:32] <anton02> Casper: command i guess. Because it's not like you'd be repgramming the microchip mid flight.
[23:51:42] <anton02> reprogramming*
[23:52:49] <Casper> bluetooth can be the simplest way, as you can make it a serial port, and there is a serial port on the avr
[23:53:03] <Casper> rf, you have some serial wireless communication too
[23:53:20] <Casper> wifi is very complex, I wouln't recommand
[23:54:21] <anton02> Casper: bluetooth is just a proprietary RF format isnt it
[23:56:21] <Casper> and protocol
[23:56:35] <Casper> but there is some modules that take care of all the complex stuff for you