#avr | Logs for 2012-07-07

Back
[06:12:15] * iR0b0t1 tosses a coin into the channel.
[06:12:17] * iR0b0t1 makes a wish.
[06:44:45] <Fleck> how do you guys create custom boards?
[06:45:16] <specing> witg gEDA and some acid
[06:45:40] <OndraSter_> Fleck, or order them :)
[06:45:44] <OndraSter_> design & order
[06:45:45] <OndraSter_> & pay
[06:46:14] <Fleck> any good sites that ships international ?
[06:46:27] <OndraSter_> CapnKernel,
[06:46:31] <OndraSter_> he does
[06:47:55] <CapnKernel> Hi there
[06:48:14] <CapnKernel> Fleck: Do you mean design them, or build them?
[06:48:24] <Fleck> build
[06:51:07] <theos> you need a printer
[06:51:21] <theos> toner transfer is what i prefer
[06:51:57] <OndraSter_> that depends - are you doing complex or simple board?
[06:52:01] <OndraSter_> simple ones can be made at home
[06:52:04] <OndraSter_> complex not
[06:52:11] <OndraSter_> well, they can, but it is haaaaard
[06:52:17] <specing> You can do 0.8mm pitch tqfps at home
[06:52:29] <specing> I havent tried 0.65 yet
[06:52:37] <specing> and certainly not 0.5
[06:52:48] <OndraSter_> I tried 0.5mm, but my printer has issues with Y axis
[06:52:58] <OndraSter_> otherwise it would work
[06:53:05] <OndraSter_> I had 3 pins bridged
[06:53:07] <OndraSter_> out of 8 :X
[06:53:38] <Fleck> i have printer
[06:53:45] <Fleck> hp laserjet
[06:53:55] <OndraSter_> so do I, HP LJ 2300dn
[06:54:09] <OndraSter_> I don't use toner transfer method though, I use UV light
[06:59:11] <Fleck> OndraSter_ and whats simple and whats complex?
[06:59:36] <OndraSter_> single sided boards with 0.8mm+ = simple
[06:59:43] <OndraSter_> double sided boards = complex
[06:59:53] <Fleck> 2layer? :D
[06:59:57] <Fleck> 4layer?
[07:00:15] <OndraSter_> even
[07:00:33] <specing> 4layer@home = impossible
[07:00:37] <OndraSter_> yeah
[07:00:42] <Fleck> :D
[07:00:53] <specing> 4layer@capnKernel = possible
[07:06:06] <CapnKernel> 30layer@capnkernel = possible
[07:06:12] <OndraSter_> woah
[07:06:16] <OndraSter_> but how much would it cost :D
[07:06:29] <OndraSter_> but nice for tiny BGAs...
[07:06:35] <CapnKernel> Not cheap
[07:06:47] <CapnKernel> When I worked at HP, we were designing 18 layer boards
[07:06:59] <OndraSter_> tiny BGAs as in tiny ball sizes but huge BGAs with 1000s of pins*
[07:07:03] <OndraSter_> yay
[07:07:33] <CapnKernel> Fleck: If you want to make single-sided boards at home, you could use the UV method, like OndraSter does. Here's my article: http://capnstech.blogspot.com/2011/05/playpause-making-pcbs-at-home.html
[07:07:44] <CapnKernel> Am I allowed to plug myself?
[07:08:20] <Fleck> UV Leds
[07:08:21] <OndraSter_> honestly I'd now set up myself for toner transfer - one less chemical + cheaper boards to use
[07:08:54] <CapnKernel> Fleck: I live in Shenzhen China, home of the largest electronics market on earth.
[07:09:00] <CapnKernel> And I have a PCB service
[07:09:14] <Fleck> nice
[07:09:29] <Fleck> can i PM you?
[07:09:33] <CapnKernel> Sure
[07:09:42] <CapnKernel> Several people in this channel get their boards through me.
[07:12:59] <Fleck> nice! :)
[09:03:54] * Tom_itx lets CapnKernel borrow his 'plug of shame' hat
[09:04:46] <Tom_itx> Fleck, here's my etch tank: http://tom-itx.dyndns.org:81/~webpage/etching/etch_index.php
[09:05:09] <CapnKernel> Only if I can get it with a matching "socket of shame"
[09:05:28] <OndraSter_> here is my bulb holder for the UV light
[09:05:28] <Steffanx> You get a T-shirt for free too CapnKernel
[09:05:28] <OndraSter_> http://a5.sphotos.ak.fbcdn.net/hphotos-ak-snc6/270326_1819320688349_8230390_n.jpg
[09:05:33] <OndraSter_> http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc6/285012_1819320848353_122191_n.jpg
[09:05:38] <OndraSter_> http://a8.sphotos.ak.fbcdn.net/hphotos-ak-snc6/269689_1819321048358_1716983_n.jpg
[09:05:46] <OndraSter_> http://a4.sphotos.ak.fbcdn.net/hphotos-ak-ash4/283344_1819321328365_772923_n.jpg
[09:05:46] <Steffanx> facebook crap :(
[09:05:52] <OndraSter_> Steffanx, easiest upload for me
[09:05:54] <OndraSter_> alongside with skydrive
[09:06:33] <CapnKernel> OndraSter_ made me start my VPN
[09:06:40] <CapnKernel> No FB here in China
[09:06:40] <OndraSter_> heh
[09:06:43] <OndraSter_> righ
[09:06:44] <OndraSter_> t
[09:06:46] <OndraSter_> skydrive does work?
[09:07:47] * Tom_itx gives CapnKernel some 'dr zeus' striped socks as well
[09:07:51] <CapnKernel> Tom_itx: Love your tank!
[09:08:07] <Tom_itx> takns
[09:08:11] <Tom_itx> tanks*
[09:08:17] <CapnKernel> <grone>
[09:08:29] <CapnKernel> grown*
[09:08:55] <Tom_itx> groan
[09:09:12] <CapnKernel> thanks
[09:09:17] <OndraSter_> hmmm why there are no $0,01 256*1 SRAMs?
[09:09:20] <OndraSter_> :P
[09:09:49] <Tom_itx> ask kat, she hunts cheap ram
[09:10:08] <specing> whos kat?
[09:10:16] <OndraSter_> who's kat?
[09:10:19] <Tom_itx> katsmeow in #robotics
[09:10:27] <OndraSter_> hmm
[09:10:33] <OndraSter_> I am afraid shipping would be at least $3
[09:10:36] <OndraSter_> defeating the purpose
[09:10:46] <OndraSter_> I need something like 256*16 RAM :o
[09:11:08] <OndraSter_> 16 times 256*1 would be fine, but I don't want to use 2x64kB SRAMs I have got here
[09:11:10] <OndraSter_> soo much waste!
[09:11:47] <CapnKernel> Won't someone think of the wasted bits???
[09:12:03] <OndraSter_> exactly
[09:12:19] <OndraSter_> I have got here 256*4 RAM... but it is DRAM!
[09:12:46] <specing> Why do you need 256*16 RAM?
[09:12:50] <OndraSter_> retro project :)
[09:13:07] <CapnKernel> Maybe each day you can use a different 256-byte page, so over the course of 8 months, they'll all get a turn
[09:13:16] <OndraSter_> :D
[09:13:32] <CapnKernel> "We're an equal opportunity bit user"
[09:14:09] <CapnKernel> Seriously, do you use every single function of the AVR? And every single instruction?
[09:14:15] <CapnKernel> Of course you don't, that's inflex's job
[09:14:29] <OndraSter_> well
[09:14:38] <OndraSter_> wasting 63.75kB RAM...
[09:14:48] <OndraSter_> I thought about mapping it to the main RAM, but I am not sure how complex would that be :)
[09:14:52] <OndraSter_> after all, it is retro project!
[09:15:46] <CapnKernel> Honestly dude, it's like worrying about the 150 million sperm you waste when only one gets to further your genes
[09:15:49] <OndraSter_> there is another way how to solve the problem though, using just counters
[09:15:51] <OndraSter_> :D
[09:16:29] <OndraSter_> no, it wouldn't work with just counters*
[09:16:56] <CapnKernel> It would if you used a binary counter to select the page for my equal opportunity bit-using idea :-)
[09:17:05] <OndraSter_> :D
[09:17:13] <OndraSter_> well I need counters as well, since it is working as a stack
[09:17:21] <CapnKernel> Why dude, why?
[09:17:28] <OndraSter_> RETRO
[09:17:37] <CapnKernel> I'm sensing some fine digital wanking here...
[09:18:03] <OndraSter_> ever heard of Brainfuck?
[09:18:10] <CapnKernel> Sure
[09:18:12] <OndraSter_> (is wiki allowed in china?)
[09:18:13] <OndraSter_> okay
[09:18:20] <OndraSter_> retro project: brainfuck processor ;D
[09:18:22] <CapnKernel> WP? Yes, the English version
[09:18:31] <CapnKernel> Dude: Seek help.
[09:18:32] <OndraSter_> :D
[09:18:57] <OndraSter_> I have got fairly a lot of those logic ICs here
[09:18:58] <CapnKernel> You know if you pull it off, you'll make the front cover of hackaday...
[09:19:08] <OndraSter_> heh
[09:19:16] <OndraSter_> http://members.iinet.net.au/~daveb/simplex/ringhome.html
[09:19:18] <OndraSter_> here
[09:19:24] <OndraSter_> many "homebrew" CPUs
[09:19:37] <OndraSter_> some even made out of relays!
[09:19:46] <CapnKernel> One day I will make one out of wood
[09:22:09] <OndraSterver> CapnKernel, actually
[09:22:15] <OndraSterver> running water through pipes would not be bad idea :)
[09:22:53] <CapnKernel> OndraSter_: You're being impersonated
[09:23:14] <OndraSter_> I am being what?
[09:24:25] <CapnKernel> That "OndraSterver" thing
[09:24:33] <OndraSter_> oh
[09:24:44] <OndraSter_> that would be my schizophrenic part
[09:24:49] <OndraSter_> schizofrenic?
[10:59:23] <babylonian> What is Babylon?
[11:01:20] <OndraSter_> city
[11:02:07] <babylonian> Then, Is Babylonian people in the Babylon?
[11:02:36] <OndraSter_> no
[11:02:40] <OndraSter_> because the city doesn't exist anymore
[11:02:41] <OndraSter_> I think
[11:03:06] <babylonian> Is it a term in mythology?
[11:03:26] <specing> dude, wtf does this have to do with AVRs?!
[11:04:43] <babylonian> Excuse me?
[11:05:49] <CapnKernel> babylonian: Do you know what an AVR is?
[11:06:16] <babylonian> No, I don't.
[11:06:26] <OndraSter_> why did you join us then?
[11:06:28] <CapnKernel> This might not be the right place for you.
[11:06:37] <babylonian> Okay. Thanks.
[11:07:28] <CapnKernel> That was odd.
[11:08:10] <specing> ... troll
[11:09:29] <OndraSter_> tracing him goes to japan
[11:09:34] <OndraSter_> don't they have blocked wikipedia there? :D
[11:10:01] <CapnKernel> OndraSter_: off-by-one bug
[11:10:23] <OndraSter_> I know that China does
[11:10:30] <OndraSter_> but I don't know how is Japan on it with internet
[11:10:39] <OndraSter_> appearantly he can not open wikipedia to look there
[11:10:46] <CapnKernel> LOL
[11:16:57] <specing> OndraSter_: you are lucky to have me around or he would have trolled your ass here the whole day
[11:17:04] <OndraSter_> lol
[11:17:10] <OndraSter_> I was already ready to link him to wiki
[11:17:44] <CapnKernel> You're assuming he i) could read and ii) is rational
[11:18:05] <theos> dont think he was trolling. japanese people may be like him
[11:19:15] <theos> edasawa looks like a legit japanese name :D
[11:19:54] <CapnKernel> Looking back, his punctuation was perfect.
[11:20:12] <CapnKernel> Kinda like mine <cough cough>
[11:20:31] <theos> how many english speaking people have perfect punctuation?
[11:20:51] <CapnKernel> Minority, especially on IRC
[11:21:01] <Tom_itx> .
[11:21:10] <theos> none. someone who is trying to learn a language will only try to look perfect in front of others :D
[11:21:48] <CapnKernel> Thanks Tom_itx, I'll keep it for later. And here's some to make up for the last few I left off: ......
[11:26:43] <Tom_itx> i was just making a point :)
[11:27:01] <CapnKernel> I'm with you.
[11:30:18] <theos> let me make 2 points ..
[11:31:04] <theBear> mmm no
[11:31:16] <CapnKernel> Back now, I was having a /
[11:31:30] <theBear> lol, neo-redneck
[11:32:03] <CapnKernel> You know, this is no more on-topic than Babylon, except the difference is, this time it's *us*, which makes it perfectly ok.
[11:32:33] <theBear> heh, well me at least, everyone knows i've got a problem with staying on topic :)
[11:42:36] <theos> :)
[12:33:38] <Makdaam> hello, how can I check if my static variables fit into RAM?
[12:34:08] <OndraSter_> when you compile your project
[12:34:17] <OndraSter_> in the output window there is log of "program usage" and "data usage"
[12:34:55] <Makdaam> actually, when I type in make I get an .lst file
[12:35:02] <specing> Makdaam: you want to leave some space for the stack too
[12:35:22] <Makdaam> fuu, right, all the local variables in the functions are on the stack
[12:35:32] <specing> yeap
[12:35:56] <Makdaam> is there an emulator that can detect stack overflow?
[12:36:53] <Makdaam> because I'm almost sure I'm getting variable corruption, but I don't know how much memory I have to free
[12:36:53] <specing> just declare a canary at the top of your data space and repeatedly check it
[12:37:04] <specing> free as much as you can
[12:37:21] <specing> put strings/static data into flash
[12:37:40] <specing> make all the fucntions static
[12:37:53] <specing> so the compiler can inline them
[12:39:31] <Makdaam> can the linker inline functions from other .o files?
[12:39:46] <specing> no
[12:40:33] <specing> It could replace the CALL with the code itself, but that wouldnt solve the PUSH/POPs
[12:41:13] <Makdaam> hello one big .o file
[12:41:31] <specing> ?
[12:42:31] <Makdaam> just thinking about all the features I have to fit into flash... nvm
[12:46:05] <specing> Makdaam: put ALL strings into flash first
[12:48:49] <Makdaam> I'm pulling lookup tables into PROGMEM as we speak :)
[13:17:40] <Makdaam> specing: ok, it seems I hit the max length of 1-wire bus quite precisely... the last sensor kept giving me corrupted data from time to time... my memory was fine
[13:45:29] <RikusW> hi vectory
[13:50:40] <OndraSter_> .. no hi to me?
[13:50:41] <OndraSter_> HI RIKUSW!
[13:51:34] <specing> WSUKIR!
[13:59:42] <RikusW> hi OndraSter
[14:00:02] <RikusW> gniceps!
[14:00:15] <RikusW> *biceps ;)
[14:01:21] * RikusW wonders where scuzzy went...
[14:02:39] <Steffanx> Holiday?
[14:02:49] <OndraSter_> scuzzy doesn't know, scuzzy doesn't know, scuzzy doesn't kno-kno-know!
[14:03:31] <RikusW> ah maybe
[14:04:38] <OndraSter_> now I need to watch Eurotrip again!
[14:06:29] <dfletcher> EEMEM char wow[] = "This conversation is so fascinating that I just have to store it forever and ever.";
[14:06:36] * dfletcher just learned about EEMEM :P
[14:10:07] <OndraSter_> lol
[14:11:59] <specing> dfletcher: that would go into PROGMEM
[14:12:47] <dfletcher> it ends up in the .eep actually
[14:13:01] <dfletcher> char * would be program memory
[14:13:13] <dfletcher> and would store a pointer in eep
[14:13:49] <specing> I mean PROGMEM cha wow[]
[14:14:22] <dfletcher> what does PROGMEM do? similar but with the flash?
[14:15:18] <RikusW> yes
[14:15:47] <dfletcher> heh well I was looking at the eeprom. need it for a bit of configuration settings. initially set in C :)
[14:25:09] <dfletcher> this seems good. firmware updates can skip the .eep part and leave user config. perfect.
[14:26:02] <RikusW> indeed
[14:26:10] <RikusW> if you use a bootloader
[14:26:24] <RikusW> else you need to use the EESAVE fuse
[14:26:48] <dfletcher> ah thanks, good to know
[14:27:57] <RikusW> (ISP chip erase normally erases eep too)
[14:29:05] <dfletcher> I'll put big fat warnings in the docs and build a clickable iditot-proof tool for windows ;p
[14:29:11] <OndraSter_> heh
[14:30:14] <dfletcher> mostly it's not a huge issue, but these devices do need to have a UUID stamped. only will cause trouble if they do this to more than one device on a bus with the same ID.
[14:31:07] <RikusW> put the UUID in the bootloader
[14:31:10] <dfletcher> in other words, the UUID could be wiped to zero and it would work fine, as long as it's the only slave device
[14:31:25] <dfletcher> hmm that's an idea
[14:31:39] <RikusW> and set lock = 0xEF
[14:32:01] <dfletcher> is there a BOOTLOADMEM attribute specifier? ;p
[14:32:26] <dfletcher> heh it's harder. maybe worth it I donno. for now eep is fine.
[14:33:45] <RikusW> as long as no one mess with the eep the UUID should be fine
[14:34:41] <dfletcher> they could even re-stamp one if it got wiped by accident. libuuid is making this really easy.
[14:41:09] <dfletcher> though heh my friend does want to get funding and sell these commercially. if that happens I'm sure I'll need to lock the UUID down, for customer support etc. in that case bootloader does seem good.
[14:42:27] <RikusW> so what are you building ?
[14:42:34] <dfletcher> home automation jiggery
[14:43:13] <dfletcher> our main switch gizmo uses this neat circuit http://www.dextrel.net/diyzerocrosser.htm and an AVR for control. probably a mega44.
[14:43:41] <dfletcher> oh and an SSR of course for actually switching.
[14:49:29] <dfletcher> sorry, minor wifey interruption :) so that AVR is an i2c slave, you can put many of these switches on the bus.
[14:50:19] <dfletcher> and control many lights independently. the main controller is connected to an 802.15.4 wireless module connecting the whole network.
[14:50:50] <dfletcher> and there's an 802.11 bridge planned so the whole thing can be controlled over the interwebs.
[14:51:29] <dfletcher> fun project, he totally roped me into this. maybe someday I'll get some money :P
[14:51:51] <RikusW> hmm
[14:52:22] <RikusW> seems marketing can be harder than designing stuff :-P
[14:52:49] <dfletcher> heh yeah. it needs a catchy name. homeduino is probably taken :P
[14:57:45] <RikusW> nice ZC circuit, took me a while to figure out Q1....
[14:58:15] <dfletcher> the thing I like most about it is it's dirt cheap =)
[14:58:56] <dfletcher> even at the full dumbass 1x price on digikey the whole thing is still less than $3
[14:59:20] <dfletcher> ima build 20 of them =)
[14:59:39] <RikusW> I can strip 4N35 off some scrapped PCI winmodems :)
[15:00:04] <RikusW> And I have a lot of 1N4148
[15:04:33] <dfletcher> oh I do need some big snubbers though for "OTHER USES - LOAD MONITORING". that might drive up cost a little.
[15:06:07] <dfletcher> probably not much I guess. resistors and caps are cheap, even high wattage ones.
[15:06:52] <RikusW> some snubbing caps are expensive
[15:07:15] <dfletcher> yeah I'll have to see what the options are
[15:09:43] <dfletcher> hmm I wonder if a MOV snubber would work. those are cheap.
[15:10:58] <dfletcher> guess I'll just get some and try it :) http://www.digikey.com/product-detail/en/MOV-10D391KTR/MOV-10D391KTRCT-ND/2408232
[15:11:48] <dfletcher> if the entire thing explodes I'll try to get it on video for you.
[15:13:15] <RikusW> lol
[15:44:51] <SuperMiguel> do u guys use linked list in ur programs? is there a reason to use it?
[15:45:06] <OndraSter_> in my programs? sure
[15:45:13] <OndraSter_> on AVR? haven't used anything liek that yet
[15:45:14] <OndraSter_> like*
[15:45:45] <specing> linked lists would most likely drag in ?alloc with them, which is HEAVY
[15:55:09] <martinb> no, you can do static allocations in memory
[15:55:19] <martinb> but that will reduce the potential size of your linked list
[15:55:41] <martinb> ( and there are other tricks )
[16:02:31] * dfletcher just totally cheated last night and used realloc. should fix that. too much on the TODO list heh.
[16:04:07] <OndraSter_> WOAH
[16:04:09] <OndraSter_> REALLOC!
[16:07:10] <SuperMiguel> Seems like the embedded C programming is a bit simpler than program C programming, a lot of stuff don't have useless in embeded
[16:07:57] <dfletcher> heh whatever realloc brought in is still a lot smaller than LUFA ;)
[16:09:32] <specing> I blame dean
[16:10:06] <OndraSter_> I blame the aliens
[16:12:46] <Makdaam> yay, the heater relay doesn't work! but I'll leave it for tomorrow
[16:12:47] <specing> \\\\\\\\
[16:12:47] <specing> \\
[16:12:47] <specing> \ o o
[16:12:47] <specing> |
[16:12:47] <specing> ---
[16:12:48] <specing> / \
[16:12:48] <specing> / \
[16:12:51] <specing> { }
[16:12:53] <specing>
[16:12:56] <specing> DEM ALIENZ
[16:13:10] <Makdaam> it's their fault!
[16:17:59] <Makdaam> goodnight
[16:21:50] <OndraSter_> gn
[17:55:30] <xSmurf> bleh I can't get this Goertzel algo working :\
[18:41:45] <SvenL-> evenin
[18:42:02] <OndraSter_> evenin
[19:20:18] <cehteh> hi SvenL- :)
[19:20:29] <SvenL-> Oh... hi cehteh
[19:20:34] <SvenL-> You, here ?!
[19:20:57] <cehteh> eh ... lala .. found me :)
[19:22:41] <SvenL-> I am looking at Arduino things and as the conversation grew, one suggested I asked here
[19:23:45] <cehteh> quite possibly
[19:24:04] * cehteh didnt do anything with an arduino yet, just tiny's here
[19:39:21] <OndraSter_> arduino
[19:39:22] <OndraSter_> here?
[19:39:24] <OndraSter_> I doubt that :)
[19:39:29] <OndraSter_> or even netduino?
[19:39:36] <OndraSter_> am I the only one here who has one? :D
[19:39:38] <OndraSter_> arduino plus
[19:39:49] <SvenL-> not directly arduino !
[19:40:15] <OndraSter_> er, netduino plus I ment to say that I have*
[19:41:27] <SvenL-> I don't know these
[19:41:59] <OndraSter_> they are great
[19:42:23] <OndraSter_> they have just one problem... since they are arduino pin compatible, they pissed away about 30 IOs that are disconnected now :/
[21:16:46] <ryan-c> anyone know how to have multiple pads connect to the same schematic pin in eagle custom parts?
[21:18:02] <Tom_itx> you need to do it something like @GND1 @GND2 etc
[21:18:35] <OndraSter_> requries different pads though
[21:18:46] <Tom_itx> no getting around that
[21:19:09] <OndraSter_> if you place two pads on each other
[21:19:15] <OndraSter_> it will report in DRC I presume?
[21:19:34] <Tom_itx> yeah
[21:19:44] <OndraSter_> so yeah, not possible
[21:19:45] <Tom_itx> you can ignore it :)
[21:20:16] <OndraSter_> usually yes
[21:20:27] <OndraSter_> but if it exports as two different pads on each other in the gerbers
[21:20:35] <OndraSter_> the DRC in the factory might report it...
[21:54:54] <Martyn> Anyone awake?
[21:55:45] <Tom_itx> there are stages of awake
[21:57:52] <CapnKernel> Yes. I'm not sure it's a good thing
[22:06:36] <OndraSter_> I am awake
[22:06:37] <OndraSter_> still
[22:06:41] <OndraSter_> for the past 20 hours or so
[22:06:49] <OndraSter_> too hot to sleep it was
[22:06:51] <OndraSter_> so I gave up
[23:55:50] <dfletcher> bleh why is this example from Atmel is so braindead D: http://pastebin.com/Jyx0BUMi
[23:56:20] <dfletcher> so.. if the TWI is not busy, ALWAYS start transceiver with data? wat?
[23:56:41] * dfletcher cries in confusion
[23:57:06] <Tom_itx> you want a twi rtc example?
[23:57:41] <dfletcher> I want a slave example that's sane.
[23:57:53] <Tom_itx> it's not slave
[23:58:04] <Tom_itx> just master to the DS-rtc
[23:58:38] <dfletcher> well that code I pasted is. it's from AVR311/doc2565 "Using the TWI module as I2C slave"
[23:59:10] <Tom_itx> http://tom-itx.dyndns.org:81/~webpage/avr/Dallas%20RTC%20Code/