#avr | Logs for 2016-04-11

Back
[06:03:37] <hetii> hi :)
[08:49:12] <liwakura> currently working on a concept to organize the program flow completely by interrupts
[08:49:18] <liwakura> and just keeping a global state
[08:57:29] <cehteh> did that, but not so good idea
[08:58:04] <liwakura> how so?
[08:58:25] <cehteh> it worked, but there are plenty reasons not to do so
[08:58:52] <liwakura> uhm, im interested
[08:59:04] <liwakura> too much complexity?
[08:59:05] <cehteh> interrupts normally run with further interrupts disabled, so if you have to do more there then you need to block processing for extended times
[08:59:20] <liwakura> so it might depend on the task
[08:59:45] <cehteh> also, global state handled by interrupts needs to be volatile declared in many cases, which prevents a lot compiler optimizations
[09:00:03] <liwakura> hm
[09:00:07] <cehteh> in special cases you can do so
[09:00:23] <cehteh> but generally its not a good idea for generic programming
[09:00:27] <GeneralStupid> Hi, i need some help with xmega and usb... I stuck on so many little problems its really anoying
[09:00:50] <cehteh> no xmegas here
[09:01:07] <GeneralStupid> why not? :(
[09:01:22] <cehteh> here at me i meant :D
[09:01:28] <GeneralStupid> Ohh ok :D
[09:01:41] <GeneralStupid> Thats ok, there should be enough people ideling.
[09:02:13] <cehteh> liwakura: for muos i do the more 'usual' approach to do as little as possibly in interrupts, waking mainloop, pushing work on the queues there
[09:02:18] <liwakura> GeneralStupid: also, the general issue with meta questions.
[09:02:30] <GeneralStupid> My proble (atm) is: If i connect to one of my serial ports (usb cdc), everything works but if i disconnect and try to reconnect it tells me that the port is in use.
[09:02:31] <liwakura> cehteh: yeah, my sh thingie hat a similar approach
[09:02:58] <GeneralStupid> liwakura: its a "longer" question and it took a bit of searching through irc :D
[09:02:59] <cehteh> so far that works very excellent.. and much less care needs to be taken for synchronization, locking, volatile etc
[09:03:13] <cehteh> and you have to have a mainloop anyway
[09:03:20] <liwakura> sorta.
[09:03:25] <cehteh> not sorta
[09:03:42] <cehteh> most stupid thing would be for(;;);
[09:03:49] <liwakura> my avr-sh has no loops except on the blocking I/O
[09:03:54] <cehteh> .. next thing would be addin sleep states
[09:04:13] <cehteh> but you cant return from main
[09:04:23] <daey> would it be difficult to build a simple AM Receiver and hook it up to an atmega? to decode signals?
[09:04:38] <GeneralStupid> why dont you use ASF?
[09:04:55] <cehteh> daey: what kind of decoding
[09:05:17] <cehteh> someone did modems for radios, but AVR's are really not so good for signal processing
[09:05:27] <LeoNerd> I wouldn't want to do more than about 10ksamp/s out of the AVR
[09:05:30] <cehteh> no hardware multiplier
[09:05:35] <LeoNerd> So that limits your data rate
[09:05:46] <daey> i dont see a problem on the speed side
[09:05:55] <cehteh> 15k should be possible, maybe bit more with less accuracy
[09:06:08] <cehteh> depends really on what you are going to do
[09:07:06] <cehteh> anyway you are capped at approx analog telephone quality 5-7khz at best .. and you have very little ram and not the instruction set to do much processing
[09:07:32] <GeneralStupid> and, did some of you take a loot at the asf code?
[09:07:35] <cehteh> but anyway people did it with success ..
[09:07:43] <GeneralStupid> maybe its highly efficient but its a pain to debug
[09:08:03] <cehteh> kindof that
[09:09:37] <GeneralStupid> i did some signal processing and we "develop" application specific processors for some cases... i wont do something like this in a 8 bit µC
[09:13:19] <lorenzo> not a problem, Microchip will soon release the dsAVR32
[09:13:32] <lorenzo> the dsPIC24 successor :>
[09:16:56] <cehteh> haha
[09:18:06] <cehteh> some xmegas have hardware multiplier .. adding a multiply-add operation isnt that far fetched .. then make that efficient in 16 and 32 bit .. ftw
[09:19:56] <daey> main problem i see is the RF frontend. ive no idea how hard it is to tune and get a usable good signal.
[09:20:18] <LeoNerd> Buy a pre-made module
[09:20:20] <daey> 433Mhz OOK weatherstation transmitter
[09:20:22] <LeoNerd> You can get those things dirtcheap
[09:20:26] <daey> LeoNerd: but thats boring :p
[09:20:27] <LeoNerd> Especially at 433
[09:20:42] <daey> thats my backup plan
[09:25:56] <cehteh> buy some radio-cookbook, at higher frequencies and FM its certainly some pita to build that with discrete parts, but not completely impossible
[09:26:28] <cehteh> for getting a clean signal and low snr you really want some integrated/premade module
[09:30:43] <LeoNerd> Yah.. it's really hard to beat those tiny cheap reliable premade things
[09:31:23] <LeoNerd> Besides.. more and more these days, electronics is a *huge* field... there's so many specialisations and categories, one person can't be expected to be very in-depth in lots of areas
[09:31:42] <LeoNerd> There's no shame in being an expert in something and knowing nothing of others..
[09:51:40] <jacekowski> LeoNerd: i'm not sure about the "knowing nothing of others" part
[10:32:14] <WormFood> Jesus H. Fuck! Why in the hell won't my god damn meter work with LEDs? They all show as being an open circuit, but they work fine. A regular diode (1n914/1n4148) works fine in the meter. This doesn't make sense to me.
[10:33:52] <LeoNerd> LEDs usually have a higher forward voltage
[10:34:00] <LeoNerd> Some of my white ones need >4V to even start to glow
[10:34:07] <WormFood> What the fuck?
[10:34:08] <LeoNerd> Most likely a continuity tester puts *far* less voltage out than that
[10:34:14] <WormFood> These work fine on 3.3 volts.
[10:34:26] <LeoNerd> I have one at home that's specifically 0.2V so as *not* to bias a silicon junction
[10:34:37] <LeoNerd> Exactly so that it can distinguish a true copper wire from a forward diode
[10:34:42] <WormFood> Even in resistance mode, it shows infinite resistance.
[10:35:08] <LeoNerd> Again, what's the test voltage?
[10:35:15] <WormFood> no idea
[10:35:24] <WormFood> It's a fluke meter
[10:35:28] <LeoNerd> Well, that probably answers your question
[10:35:32] <WormFood> It's not some random piece of shit.
[10:35:36] <LeoNerd> OK so Fluke do excellent documentation. It should be written down
[10:35:46] <LeoNerd> Right. But that means nothing
[10:35:48] <WormFood> I can buy meters here, for under $5
[10:35:55] <LeoNerd> If anything I'd *hope* they have as low a test voltage as possible
[10:36:12] <WormFood> This has a specific diode testing setting.
[10:36:24] <WormFood> *That* should put out enough voltage, to test a diode.
[10:36:34] <LeoNerd> Ah well yes - that's exactly what that mode is for
[10:37:09] <WormFood> But it doesn't work at all, for my LEDs
[10:37:17] <WormFood> Totally fuckin' useless
[10:37:29] <LeoNerd> Maybe it does'nt put out enough voltage for those? Non-LED diodes are usally around 0.7V
[10:38:34] <WormFood> It must be that it isn't putting out enough voltage
[10:38:42] <WormFood> that's the only answer that'd make any sense at all.
[10:39:06] <WormFood> But it's frustrating, because my fuckin' tools don't god damn work the way I need them to!
[10:39:07] <GeneralStupid> I want to use a kind of protocol over usb cdc. But on my first tests it seems like the C struct i send in my Desktop Program is not transmittet correctly
[10:47:55] <GeneralStupid> is the struct layout different from c to c++?
[10:50:10] <liwakura> GeneralStupid: iirc, structs are not guaranteered to have the same binary layout for each compile
[10:50:58] <GeneralStupid> liwakura: thats right. but in network protocols they do it the same way. And for me it is pretty nice.
[10:51:17] <GeneralStupid> liwakura: i thought i could use ':' to make the struct layout equal
[10:51:31] <liwakura> not sure.
[10:51:51] <liwakura> depending on the architecture, the copiler might do some weird data alignments
[10:51:52] <GeneralStupid> there are (for some compilers) pragmas like "pack" or something
[10:52:15] <liwakura> thats struct packing magic
[10:52:17] <GeneralStupid> thats awful. does that mean i need a text parser on my device
[10:52:18] <GeneralStupid> `?
[10:52:35] <liwakura> just getting those structs to be actually equal would also help
[10:52:43] <liwakura> also, text?
[10:52:57] <liwakura> i assumed sort of binary data in a struct
[10:53:17] <GeneralStupid> yes
[10:53:21] <GeneralStupid> binary data
[10:53:37] <GeneralStupid> but malloc is also not a good idea on my 8bit µC?
[10:53:54] <GeneralStupid> someone told that to me, but i think: its just memory management :D comeon!
[10:56:20] <liwakura> if you can avoid it, avoid it
[10:56:26] <liwakura> its just additional complexity
[10:56:34] <liwakura> and many tasks can be done easier
[10:57:37] <GeneralStupid> i want to have one "header" struct
[11:09:03] <liwakura> WormFood: remember that baud rate detector i had in mind the other time?
[11:09:10] <liwakura> just finished the PoC
[11:09:10] <liwakura> https://raw.githubusercontent.com/liwakura/avr-baud-detect/master/detect.c
[11:11:24] <GeneralStupid> Qt is the problem
[11:14:34] <GeneralStupid> is there something like a json parser for atmel ?! :D
[11:15:16] <liwakura> omg
[11:15:38] <liwakura> if you need a json parser, an atmel is probably not the right platform
[11:15:52] <liwakura> but i like madness
[11:15:57] <liwakura> so just do it anyways :D
[11:16:19] <GeneralStupid> i just want to send (a lot of) commands and (of course) need a way to parse them. IMHO structs are THE way to do this
[11:17:09] <liwakura> yes
[11:17:49] <GeneralStupid> But Qt says No
[11:18:28] <liwakura> im quite sure that there is a way
[11:18:35] <GeneralStupid> In Qt you have to use "QByteArray" and iam pretty sure that this serialization breaks it
[11:24:41] <cehteh> json is not *that* complicted .. but memory will be the limit pretty soon
[11:24:57] <cehteh> esp parsing nested structures
[11:25:04] <GeneralStupid> cehteh: maybe i just need to "throw" the QSerialPort stuff away
[11:25:36] <cehteh> best thing for debugging is when you just use plaintext, commandline
[11:25:51] <cehteh> maybe not the most bandwidth efficient
[11:26:46] <GeneralStupid> i know, but i think that would get complicated, too.
[11:27:24] <GeneralStupid> with structures it is possible to (easily) to an ack package for example
[11:28:17] <cehteh> dunno what you are going to do
[11:32:38] <GeneralStupid> i want to create a network protocol kind of thing for usb cdc
[11:33:03] <LeoNerd> So.... telnet?
[11:35:30] <GeneralStupid> LeoNerd: i want avoid to parse text (if it is possible)
[11:35:44] <LeoNerd> OK so don't
[11:35:48] <GeneralStupid> sending text would end in writing a kind of custom shell
[11:36:15] <LeoNerd> Throw the raw CDC frames directly over UDP if you want
[11:36:34] <LeoNerd> Stick a header on? Coaless multiple short plain content transfers
[11:47:05] <cehteh> GeneralStupid: parsing text often isnt that complicated
[11:47:40] <cehteh> (as long you keep the syntax/grammar simple)
[11:47:51] <GeneralStupid> i guess that would not be possible.
[11:48:07] <GeneralStupid> my atmel is not the main part of our evaluation board
[11:48:38] <cehteh> anyway json itself wont be the problem, thats pretty easily to pars
[11:48:46] <cehteh> but nesting and memory demand may be
[11:48:51] <GeneralStupid> there is the processor we develop; one blackfin; a lot of audio codecs + a lot of fancy stuff. And these protocol should be able to configure that whole thing
[11:49:23] <cehteh> you can also look into other serialization formats xdr, asn.1, protocol buffers etc
[11:49:25] <LeoNerd> Yah I really woudln't use json as MCU-MCU linkage
[11:49:36] <LeoNerd> If it's small embedded stuff like that just do a little something custom
[11:49:47] <LeoNerd> Like justabout everyone else already does
[11:49:48] <cehteh> or commandline
[11:49:53] <GeneralStupid> the problem is, its "Linux/Mac/Windows - MCU" linkage
[11:49:58] <GeneralStupid> and 64 and 32 bits...
[11:49:59] <cehteh> "set <key> <value>" ...
[11:50:00] <LeoNerd> Mmm
[11:50:05] <cehteh> etc
[11:50:07] <LeoNerd> Well then that's more fun
[11:50:18] <GeneralStupid> thats making the whole struct thing more complicated...
[11:50:37] <cehteh> i'd opt for proper serialization
[11:50:39] <LeoNerd> So you need to make a choice. You're stuck wanting nothing ucrrently
[11:50:49] <LeoNerd> Either a: use text and live with it. or b: use not-text and therefore don't
[11:50:52] <LeoNerd> Pick one, then implement that
[11:51:00] <LeoNerd> Until you have made that choice you will make no progress
[11:51:12] <cehteh> just keep the hierarchies flat and consider some plaintext protocol at least for development
[11:51:26] <cehteh> makes debugging so much easier
[11:51:43] <LeoNerd> Yah.. something human-readable is generally a lot nicer in such situations
[11:51:47] <cehteh> later you may switch to some binary protocol
[11:52:18] <cehteh> asn.1 :D
[11:52:25] <LeoNerd> *shudder*
[11:52:28] <cehteh> haha
[11:52:29] <cehteh> yeah
[11:52:35] <GeneralStupid> my choice
[11:52:45] <GeneralStupid> *are* structures
[11:52:58] <LeoNerd> So do that then
[11:52:59] <cehteh> structures as in c structs?
[11:53:03] <GeneralStupid> but the more i struggle with them...
[11:53:05] <GeneralStupid> yes
[11:53:07] <GeneralStupid> c structs
[11:53:08] <cehteh> that would be the worst choice
[11:53:10] <LeoNerd> Yah you're probably misreading the word
[11:53:16] <LeoNerd> Or not really understanding what you're saying
[11:53:22] <LeoNerd> Or something. most people don't
[11:53:44] <GeneralStupid> iam sending the bytes of my struct "as they are"
[11:53:50] <LeoNerd> That's meaningless
[11:53:54] <cehteh> as soon you go multiplatform you have a lot endianess and alignment problems and little details about all kinds of shit
[11:54:04] <cehteh> how do you handle pointers?
[11:54:07] <LeoNerd> "a struct" is some instructions to the C compiler on how to lay out some memory
[11:54:24] <cehteh> not even very exactly defined
[11:54:26] <LeoNerd> You can't meaningfully send "the struct" down a serialised wire
[11:54:28] <GeneralStupid> cehteh: no pointers :D
[11:54:34] <LeoNerd> That's not a meaningful statement to make
[11:54:34] <cehteh> it may add alignment and padding
[11:54:49] <cehteh> GeneralStupid: really structs are the worst thing there
[11:54:51] <LeoNerd> At best, you're just throwing some bytes scraped raw out of memory that depend entirely on the random whims of the compiler.
[11:54:53] <cehteh> you'll notice later
[11:54:57] <LeoNerd> Please don't do that. It's horrible
[11:55:05] <LeoNerd> Learn what the word "serialisation" means, and then apply it
[11:55:27] <cehteh> even CSV text is better than structs :D
[11:55:39] <LeoNerd> CSV is a well-defined serialisation protocol
[11:55:44] <LeoNerd> well, reasonably well. It has /some/ definitions
[11:55:50] <cehteh> *cough*
[11:56:00] <LeoNerd> But point being: CSV at least concerns itself with how to turn abstract data into a serialised bytestream
[11:56:10] <LeoNerd> So it is *a* form of serialisation
[11:56:15] <cehteh> at least you notice errors and can handle them
[11:56:31] <cehteh> maybe too late .. but you have a chance
[11:56:34] <cehteh> and its portable
[11:56:44] <GeneralStupid> is there something i could use from asf?!
[11:57:01] <cehteh> i dont recommend CSV .. but c structs are not made for that
[11:57:02] <LeoNerd> There's an RFC that defines a specific standard of CSV-like data that seems relatively well supported
[11:57:22] <cehteh> lisp sexps are also frequently used
[11:57:36] <LeoNerd> "is there something I could use" <== you sound like you're askingf for some product, some chip, some /thing/ that you just press a button and magically magic happens and solves all your problems
[11:57:39] <LeoNerd> Such a thing does not exist
[11:57:42] <LeoNerd> you will have to learn some things
[11:57:52] <LeoNerd> You will have to write some code and do some work and construct something
[11:58:20] <cehteh> i'd just start with a cli
[11:59:21] <GeneralStupid> i want something like a parser and a "generator". To keep the maintenance work as low as possible.
[11:59:28] <GeneralStupid> otherwise i had to implement that too
[11:59:47] <LeoNerd> I feel you'tre just throwing random words around again without understanding them
[11:59:51] <cehteh> if i have a struct like struct config {int max; int min; char* name} ... then i add the respective cli command "set_config <min> <max> <name>" and "print_config" ..
[12:00:39] <cehteh> maybe in few cases more generic, but thats simple and portable and you have good chances to handle errors
[12:01:31] <cehteh> at worst you scan that in 2 passes .. first checking for validity and second you load that config thats still O(N)
[12:02:26] <GeneralStupid> is it possible to use lex or something on a xmega?
[12:03:01] <LeoNerd> ???
[12:03:03] <LeoNerd> What are you on now?
[12:03:08] <LeoNerd> Stop with this madness
[12:03:30] <cehteh> :)
[12:03:56] <cehteh> good old strtok for the rescue
[12:04:05] <LeoNerd> You're mkaing this massively too complex
[12:04:23] <LeoNerd> My last AVR-based project had human-typed commands that were each exactly one letter long. Then a single space. then possibly some arguments
[12:04:30] <LeoNerd> My command parser was switch(line[0]){...}
[12:04:39] <LeoNerd> That was /perfectly adequate/
[12:04:42] <GeneralStupid> i will need _a lot_ more
[12:04:43] <cehteh> i like some human readable (aka longer) commands
[12:04:49] <LeoNerd> OK so maybe have them longer
[12:04:55] <LeoNerd> Maybe store all your commands in a lookup table
[12:05:01] <LeoNerd> The table is command string and a handler sub
[12:05:04] <cehteh> as long the commands are in progmem it wont hurt
[12:05:05] <LeoNerd> linearly scan that to find a hit
[12:05:09] <GeneralStupid> i need to rethink that
[12:05:15] <LeoNerd> If you have *that* many, store them alphabetically sorted and biject search it
[12:05:34] <LeoNerd> Either way, this is small and simple and doesn't need lex or ASN.1 or JSON or whatever random crap else
[12:05:35] <GeneralStupid> thanks for your help. ;)
[12:05:57] <cehteh> even linear scanning works
[12:05:59] <GeneralStupid> LeoNerd: i need some time for that :/
[12:06:24] <cehteh> i did (generate) a lot if (!strcmp(cmd, "..."))
[12:06:31] <cehteh> works too ..
[12:06:48] <cehteh> optimize it when it hits the limit
[12:06:53] <cehteh> make it work first
[12:07:49] <cehteh> first optimization there is to put the strings into progmem .. next using a array in progmem and iterate over that
[12:07:58] <LeoNerd> Ahman, strcmp
[12:08:08] <LeoNerd> The first thing I do is #define streq(a,b) (!strcmp(a,b))
[12:08:15] <cehteh> lol
[12:08:21] <LeoNerd> Because I find if(streq(cmd, "DOTHING")) a lot more readable
[12:08:30] <cehteh> eiher way
[12:08:32] <cehteh> that works
[12:09:23] <cehteh> biject makes almost no sense .. you hardly run into timing critical stuff when handling serialized data from serial/usb port
[12:09:46] <cehteh> and to have a benefit there would mean you need at least 100 or more such commands
[12:10:12] <cehteh> still simple to do .. as long you keep it sorted
[12:31:44] <GeneralStupid> What really annoys me on that is, that i need to write my Qt program different than my Atmel program
[12:34:50] <LeoNerd> Yes, and?
[12:35:07] <LeoNerd> Totally different orders of magnitude of complexity of code and power of machine and ....
[12:35:25] <LeoNerd> If both programs looked similar I'd be inclined to suggest at least one of them was written wrong
[12:38:44] * cehteh thinks one could integrate the plain C serializer in the QT program pretty well
[12:39:01] <cehteh> of course you can try to port QT to avr's .. have fun, good luck
[12:39:05] <LeoNerd> Well also isn't it doing the opposite side?
[12:39:10] <cehteh> :)
[12:39:24] <liwakura> cehteh: you seen my baud rate detector?
[12:39:28] <liwakura> might be interesting
[12:39:35] <cehteh> yes but not the details
[12:39:46] <cehteh> if i need one i will check that
[12:40:15] <cehteh> well it does busy looping :D
[12:40:25] <cehteh> i'd like that interrupt driven
[12:40:45] <liwakura> that'd be cool
[12:40:57] <liwakura> but even my first polling variant was too slow to get usable results
[12:41:16] <cehteh> how long does it take to sync the baudrate .. and does it work with baudrates very off? 300 baud vs 115200 baud in both directions?
[12:41:31] <liwakura> i tried with 115200 baud, and it worked
[12:41:37] <liwakura> got same value like datasheet said
[12:41:59] <cehteh> at what baudrate does it start? 9600?
[12:42:14] <liwakura> gimme a second
[12:42:59] <liwakura> its basically limited to what UBRR can hold
[12:43:17] <liwakura> 300 didn't work
[12:43:19] <cehteh> yes but i wonder if you can sync when baudrates are really far off
[12:43:37] <cehteh> 300 works only with slower clkdiv :D
[12:43:41] <liwakura> yeah
[12:43:54] <liwakura> uhm, "far off" what?
[12:44:08] <cehteh> you connect lets say 1200 baud ..
[12:44:19] <cehteh> and then change to 115200 baud
[12:44:24] <cehteh> or vice versa
[12:44:44] <liwakura> i got it working with 9600 and 115200 baud without resetting between
[12:45:03] <liwakura> 115200 got me surprised because it should be outside of tolerance.
[12:45:16] <cehteh> serial is somewhat robust
[12:45:24] <liwakura> i guess my quartz were just lucky
[12:45:27] <cehteh> no checksums .. dont put too much into it
[12:45:37] <cehteh> but some clock drift is usually acceptable
[12:46:25] <cehteh> but that depends on both sides
[12:46:33] <liwakura> cehteh: i think with interrupts it will be to slow
[12:46:42] <liwakura> TCNT1 changes every 8 cycles
[12:47:07] <liwakura> thats a very tight window for an interrupt..
[12:47:11] <cehteh> i wont use TCNT for that
[12:47:19] <liwakura> hm?
[12:48:43] <cehteh> frame errors on the serial port or something like that
[12:49:31] <liwakura> still need to count somehow
[12:50:10] <cehteh> btw muos works with clock prescaler /1 .. if times are to short for a sleep/interrupt then it does a short busy loop
[12:51:00] <liwakura> you an also take that TCNT, you'll just need to shift it 3 or 4 bits depending on U2X
[12:51:10] <liwakura> to get UBRR
[12:51:20] <cehteh> i havent looked at your algorithm
[12:51:57] <cehteh> i was thinking one can do that only with the UART
[12:52:07] <liwakura> -> https://github.com/liwakura/avr-baud-detect/blob/master/detect.c#L27
[12:52:16] <liwakura> sample() function is the whole magic
[12:52:56] <cehteh> considered to use the capture unit? thats more precise
[12:53:04] <liwakura> uhm
[12:53:17] <liwakura> that ISCP thingie on Timer1 ?
[12:53:24] <cehteh> yes
[12:53:47] <liwakura> never worked with that
[12:54:06] <liwakura> let me check the datasheet
[12:54:07] <cehteh> mhm i dont see how your code will work reliably .. you measure the time between input changes
[12:54:28] <liwakura> and keep the lowest value within 256 samples
[12:54:30] <cehteh> do you expect some special signal on the port?
[12:54:34] <liwakura> no
[12:54:34] <cehteh> ah
[12:54:46] <cehteh> well that will not work reliably
[12:54:52] <cehteh> but maybe ok as guess
[12:55:00] <liwakura> depending on the data.
[12:55:15] <liwakura> but most ascii streams will reliably trigger it
[12:55:21] <cehteh> yes, the usual fallback is to send UUUUUUUUUUU .. which generates a square wave
[12:55:40] <cehteh> but never the single bit pulses you need
[12:55:51] <liwakura> uhm, it does
[12:56:06] <cehteh> nop square wave with 50% duty
[12:56:20] <liwakura> yeah? 10 bits, 5 single low bits
[12:56:24] <liwakura> 5 samples
[12:56:31] <liwakura> +-1
[12:56:33] <cehteh> test it :)
[12:56:40] <liwakura> did it.
[12:56:52] <liwakura> "U" supplied 5 samples.
[12:57:05] <liwakura> all being 1 * UBRR
[12:57:22] <cehteh> mmh
[12:57:51] <cehteh> anyway ... i added the CPPM parser using the capture unit some time ago in muos
[12:58:18] <cehteh> works quite well .. but i needed some learning :D ..
[12:58:32] <cehteh> all interrupt driven
[12:59:28] <liwakura> ah
[13:00:09] <liwakura> cehteh: the Input Capture Unit would do that asynchronously, that would work like you imagined
[13:00:32] <cehteh> yes
[13:00:57] <cehteh> at 8mhz prescaler /1 you have 125ns per tick :D
[13:01:13] <cehteh> pretty accurate timing
[13:01:44] <liwakura> and you can directly get UBRR by dividing by 8 or 16
[13:01:56] <liwakura> mh
[13:02:29] <liwakura> maybe i'll try to use the ICU now
[13:06:09] <yids> i`d like to acces some digital ports on an arduino, im looking at the schematics of my arduino and some code to control a lcd, is it correct that ie pin PB0 is accesible as PORTB and PD0 as PORTD?
[13:06:31] <cehteh> schematics are googleable
[13:06:42] <cehteh> .. bbl
[13:06:42] <yids> yeah i have the schematics in front of me
[13:07:48] <liwakura> yids: yeah, you are right
[13:07:55] <yids> okay thanks
[13:08:12] <liwakura> PB0 is literally just a "0", to indicate that its the bit no. 0 in PORTB
[13:08:35] <yids> okay, and it is part of register DDRB i suppose?
[13:09:01] <liwakura> yeah, you can also use the PB0 constant for DDRB and PINB
[13:09:14] <yids> k
[13:09:39] <liwakura> just don't mix PORTD and PBn or something
[13:29:03] <yids> so im trying to port from an at90usb1286 to an atmega328p, i did not change anything accept for a few PORTx`s because things are wired up differently and the atmega328p has less ports, could it be that by trying to read or write to ports/register that are not present on the atmega328, it wont do anything? could i somehow test if the compiled hex file could even run on an atmega328p? maybe with simulavr orsomethi
[13:29:09] <yids> ng?
[13:30:14] <Lambda_Aurigae> if it compiles for the atmega328p then your register names should be ok.
[13:30:35] <yids> okay
[13:30:45] <Lambda_Aurigae> something compiled for the at90usb1286 won't run on the atmega328p most likely as register locations won't necessarily be in the same place.
[13:31:12] <Lambda_Aurigae> also, atmega328 does not have usb hardware so anything done with that on the at90usb will hork hairballs.
[13:31:19] <Lambda_Aurigae> in fact, it shouldn't compile.
[13:33:07] <yids> yeah i removed al the usb stuff from the code
[13:33:28] <yids> it compiles
[13:33:57] <Lambda_Aurigae> then sounds like you got something else wrong.
[13:43:41] <Casper> yids: port, pin, ddr
[13:46:02] <yids> yeah i think u have those set correctly now
[13:54:14] <yids> main(void) is the first function that gets executed i take it?
[13:56:05] <yids> so if i put DDRB |= (1<<PB5); PORTB |= (1<<PB5); on as the first lines in there it should turn on a led connected to pb5 right?
[13:56:55] <liwakura> yes.
[13:57:11] <yids> hm, it does not
[13:57:54] <liwakura> then the code can't be reached probably
[13:58:18] <liwakura> i often use exactly that method for debugging since PB5 has a built-in led on many arduinos
[13:58:31] <LeoNerd> Or the LED is wired differently or brokeb
[13:58:33] <LeoNerd> n
[13:58:38] <liwakura> hm.
[13:58:49] <yids> yeah it should be the build-in led according to the schematicds
[13:59:11] <liwakura> does the LED blink after reset?
[13:59:12] <cehteh> check all other pins ... just in case
[13:59:38] <liwakura> the arduino bootloader gives a short pulse on PB5
[13:59:45] <cehteh> and do you enter a loop in main?
[14:00:01] <cehteh> DDRB |= (1<<PB5); PORTB |= (1<<PB5); for(;;);
[14:03:10] <yids> no i dont
[14:03:47] <liwakura> cehteh: actually this shouldn't matter, the LED should stay on in the halt loop
[14:04:31] <cehteh> what halt loop?
[14:04:41] <yids> well i tried it and have the same results
[14:05:10] <cehteh> i never tried, but iirc when main returns the reset or illegal instruction vector is called
[14:05:11] <yids> what could cause the not being able to reach the code? isnt main the first piece of code that will be executed?
[14:05:19] <liwakura> cehteh: the places the program pointer goes to after main returns
[14:05:25] <cehteh> can you paste your code in a pastebin?
[14:05:29] <liwakura> its literally just "cli(); for(;;);"
[14:05:49] <cehteh> ah never checked
[14:06:32] <yids> uhm yeah well its quite some code
[14:06:58] <cehteh> other tip: put that debug statement at the begin
[14:07:12] <cehteh> just to verify the correct port gets set
[14:07:20] <cehteh> then work forwared
[14:07:32] <yids> http://paste.debian.net/432230/
[14:07:41] <cehteh> i usually PINB |= (1<<PB5);
[14:07:45] <yids> what do you mean with the begin?
[14:07:46] <cehteh> that *toggles* the pin
[14:08:34] <cehteh> LED_DDR = LED;
[14:08:34] <cehteh> LED_PORT = 0;
[14:08:48] <cehteh> .... you are sure these dont reset your port configs?
[14:09:56] <cehteh> LED_DDR |= (1<<LED); .. etc?
[14:10:06] <yids> no those definions are in a header file and they are correct
[14:10:20] <cehteh> i meant the =
[14:10:46] <cehteh> is LED_DDR == PORTB?
[14:10:54] <cehteh> same for ENC_PUSHB_DDR
[14:11:02] <cehteh> and ports
[14:11:16] <yids> yes
[14:11:40] <cehteh> you need to use |= to set an additional bit
[14:11:40] <yids> they are
[14:11:52] <cehteh> when you use = you clear any bits you set before
[14:12:19] <yids> isnt that what im doing on the first two lines of main?
[14:12:43] <cehteh> also you can/should do all in one rush DDRB = (1<<LED) | (1<<ENCODER) | (1<<SOMETHING_ELSE)
[14:13:02] <yids> should i worry at all about the encoder stuff yet?
[14:13:23] <cehteh> if you clear the bits you previously set, then yes
[14:13:30] <yids> but its on a diffrent port
[14:13:39] <cehteh> comment LED_* and ENC_* out and see
[14:13:53] <cehteh> well i didnt know i dont see your definitions
[14:14:13] <cehteh> but debugging is looking and checking whatever can trash your data
[14:14:48] <cehteh> when you do: DDRB |= (1<<PB5); PORTB |= (1<<PB5); for(;;); right after main at the beginning..
[14:14:53] <cehteh> does the led lit up then?
[14:15:07] <cehteh> eh you pasted that
[14:15:19] <cehteh> i not .. check all other pins
[14:15:24] <cehteh> is any pin up?
[14:15:58] <cehteh> if not .. then something is wrong, didnt flashed correctly or chip broken
[14:17:27] <cehteh> so out for today .. cu
[14:18:15] <yids> kk thanks for help :)
[14:28:43] <WormDude> [01:19:17] <liwakura> 115200 got me surprised because it should be outside of tolerance. <-- my bit rate calculator will give you the proper tolerances now, if you input your parity and bits per byte setting. Some settings can be well over 6 percent off, and still be within absolute tolerance. (there is a table showing the tolerences, at the bottom of the page http://wormfood.net/avrbaudcalc.php
[14:29:08] <liwakura> ah
[14:29:12] <liwakura> nice to know
[14:29:34] <liwakura> never scrolled that far xD
[14:29:55] <WormDude> well, recently it went through a major overhaul
[14:30:22] <liwakura> noticed it
[14:30:36] <liwakura> since we talked about it
[14:30:40] <liwakura> bootstrap framework and stuff
[14:30:41] <WormFood> ok. Well then...scroll all the way down ;)
[14:30:47] <WormFood> right
[14:31:08] <WormFood> I remember talking about that, but couldn't remember specifically it was you
[14:32:10] <liwakura> yeah. people tend to not to notice me
[14:32:18] <WormFood> It's after 3 am here. I gotta go to bed. I'm gonna finish my project tomorrow.
[14:32:24] <liwakura> except when i talk to them IRL, then they won't forget me, forever
[14:32:28] <liwakura> WormFood: sleep well
[14:32:38] <WormFood> I noticed you. I couldn't remember it was you who mentioned the bootstrap
[14:32:45] <WormFood> 晚安
[14:34:25] * Casper assume that the first character mean fuck and the second you ?
[14:36:00] <liwakura> Casper: it means "Good Night"
[14:38:19] * Casper don't read mandarin, so he'll assume it was offensive :D
[14:38:47] <WormFood> fuck you, in Chinese, is "肏你"
[14:39:09] <WormFood> But, it doesn't translate quite the same from English to Chinese.
[14:40:04] <liwakura> WormFood: 3AM! Bed!
[14:40:11] <liwakura> you promised!
[14:40:14] <liwakura> sorta
[14:41:38] <liwakura> hm
[14:41:58] <liwakura> functions are still present in the flash even if they are inlined at all places they are ever called
[16:03:19] <aeiche> Hey Everyone, I'm trying to understand if the ATMega16u2 can do TWI/I2C, or if I'd need to bitbang it? I'm a bit of a novice in this area, but I can't find it on the summary datasheet.
[16:04:03] <liwakura> if its not in the datasheet, its most likely not hardware-supported
[16:04:29] <aeiche> okay, thanks - I was hoping I was just overlooking something.
[16:05:45] <liwakura> aeiche: the atmel site says it has TWI
[16:06:34] <liwakura> via the USI module
[16:06:39] <hetii> Hi
[16:06:41] <aeiche> oh
[16:07:00] <aeiche> Can you give a URL? Or is it implied via the USI?
[16:07:07] <liwakura> file:///home/nero/Downloads/Atmel-2561-Using-the-USI-Module-as-a-I2C-Master_AP-Note_AVR310.pdf
[16:07:29] <liwakura> sorry
[16:07:46] <liwakura> http://www.atmel.com/Images/Atmel-2561-Using-the-USI-Module-as-a-I2C-Master_AP-Note_AVR310.pdf
[16:08:38] <hetii> I just design such simple esp8266 avr programmer, it will work as stk500v2 without any additional bootloader. Any idea what to change/add in my circuit to make it better? http://svgur.com/s/4T
[16:10:20] <aeiche> awesome, thanks liwakura
[16:11:25] <liwakura> hetii: im a bit confused by the blue lines
[16:12:13] <hetii> liwakura, its just graphic line to describe bus. The labels make real connections
[16:15:54] <liwakura> hetii: i didn't spot any obvious errors, but i don't know how to properly program the esp
[16:16:11] <liwakura> maybe build an prototype on a breadboard first and test it
[16:17:43] <liwakura> also
[16:17:56] <liwakura> assuming thats an avrisp plug
[16:18:02] <liwakura> *connector
[16:18:05] <liwakura> on the right side
[16:18:10] <hetii> I just wonder if it make sens to add 3.3v zener diodes on E_RX and E_miso in the case if uC that will be programmer provide 5v into buffer. Or I could just add small ldo and general provice 3v3 level, but the question is if it will be fine for all avrs to use such level
[16:18:47] <liwakura> do you have a combined isp + serial?
[16:19:38] <hetii> liwakura, PCB is almost desgined and yes it will support isp and serial bridge in the same time :)
[16:20:57] <liwakura> also, i dont see any zener diodes, just an LED
[16:21:28] <hetii> yep, they are not yet there cause I don`t made decision yet
[16:21:39] <liwakura> hm
[16:23:46] <hetii> even if I add zeners then I need somehow provide 3v3 volts for esp module. If I use LDO for it and use the power from ICP connector then It might have no difference beetwen input and his output (in the case when host will provide just 3v3)
[16:24:19] <liwakura> i guess this is beyond my skill, sorry
[16:44:29] <yids> uh when i try to flash something with avrdude should it tell me when its to big?
[16:49:39] <Casper> yes it will
[16:50:16] <yids> hm im still strugling here, i tried
[16:50:29] <yids> making a very simple program to just turn a port on
[16:51:00] <yids> that works so my building uploading process is definitely not the problem, so then i tried commenting out everything in the main function except for the turning a port on line
[16:51:05] <Casper> did you forgot the DDR?
[16:51:07] <yids> but that also does not work
[16:51:31] <yids> DDRB |= (1<<PB5); PORTB |= (1<<PB5); for(;;); this is the only line in my main function now
[16:52:09] <yids> and when i put that in a clean file and only compile and flash that, it works
[16:52:28] <Casper> are you by chance using -03 ?
[16:52:34] <yids> which i guess i can conclude from that somehow something gets executed before the main function?
[16:52:43] <yids> -03?
[16:52:48] <yids> not that i am aware of
[16:52:50] <Casper> for(;;); <=== that can cause it to be optimised out sometime
[16:53:03] <yids> ah as a compiler optiion?
[16:53:07] <Casper> yes
[16:53:13] <yids> no
[16:53:35] <Casper> is PB5 used for jtag?
[16:53:49] <yids> -Os -pedantic -std=gnu99 is my compiler options
[16:54:03] <yids> uh not that i am aware of, but it is the onboard led thats all i know
[16:54:29] <Casper> double check that, if jtag fuse is enabled, then the pins used by jtag will not work
[16:54:47] <Casper> also
[16:55:03] <Casper> try to disconnect the programmer, it may keep reset enabled....
[16:55:08] <Casper> bbl
[16:55:39] <yids> uhm how do i disconnect the programmer? by disconnecting the usb cable?
[17:02:12] <yids> no difference
[17:02:36] <yids> cant seem to find wich ports jtag uses, but i tried almost all ports now and they all dont work
[17:03:31] <yids> is there something like the setup() function you have in arduio ide, that initializes stuff were i might be doing something that is impossible to do on a atmega328?
[17:04:38] <LeoNerd> ?
[17:05:08] <yids> is there anywere code gets executed before the main funciotn
[17:05:23] <yids> or things get initialized or something
[17:07:28] <LeoNerd> You can easily make that
[17:07:43] <LeoNerd> Do you want to know a secret? Arduino just does int main(void) { setup(); while(1) loop() }
[17:07:56] <LeoNerd> So you could do exactly the same
[17:08:36] <yids> i dont want to do that, i want to know what is happening before main gets exectued because it doesnt seem to get executed
[17:08:57] <LeoNerd> Then maybe your program hasn't been burned in correctly
[17:09:11] <yids> should avrdude not warn me about that?
[17:09:37] <LeoNerd> Or maybe avrdude wrote the hex file properly, but the contents of it aren't correct?
[17:09:41] <LeoNerd> Wrong compiler options?
[17:09:56] <LeoNerd> If literally nothing is happening, I'd start looking at those bits
[17:10:14] <yids> i use the same compiler options and the seem burning proces with a test file which only contains a main functioun with one line in it to turn a port on
[17:10:18] <yids> that works
[17:10:50] <yids> but then in the other project, which consists of a bunch of source files, i commented out everything in the main function except for this exact same line
[17:10:53] <yids> but then it doesnt work
[17:13:11] <yids> there was this tool to inspect hex files iirc
[17:16:14] <yids> or was that the elf files
[17:49:35] <yids> hm so when i try to run my compiled elf file with simulavr i get a bunch of "file rwmem.cpp: line 231: Invalid write access to IO[0x11c6]=0x0, PC=0x15a" does that ring anyones bells?
[17:52:20] <yids> im trying to debug with gdb as descriped here http://reprap.org/wiki/SimulAVR
[17:53:00] <yids> but when i do target remote localhost:1212 i get warning: while parsing target description (at line 4): Target description specified unknown architecture "avr"
[17:53:03] <yids> warning: Could not load XML target description; ignoring
[17:53:05] <yids> 0x00000000 in __vectors ()
[17:53:22] <yids> anyone experince with debuging with simulavr and gdb?
[18:01:58] <yids> is there a simple way of figuring out how much sram is gonna be needed before or after compiling?
[18:02:49] <yids> because i see that the original controller has 4 times as much sram, and these issues remind me of times when i tried to use to much sram
[18:24:36] <Lambda_Aurigae> yids, what chip are you compiling that for?
[18:27:13] <Lambda_Aurigae> I suspect the chip you are using has like 4K of sram..that is 4096 bytes...
[18:27:31] <Lambda_Aurigae> and writing to 0x11c6 is decimal 4550 which is above 4K
[18:27:47] <Lambda_Aurigae> so it would be an invalid memory location.
[18:27:55] <Lambda_Aurigae> but, without knowing the chip you are compiling for, no way to know.
[18:35:16] <Lambda_Aurigae> Jartza, here's a challenge for you. http://hackaday.com/2016/04/11/audio-out-over-uart/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+hackaday%2FLgoM+%28Hack+a+Day%29
[19:01:28] <yids> Lambda_Aurigae: atmega328 wich has 2k of sram
[19:01:41] <yids> so i guess thats the problem
[19:02:02] <learath> hah - I wonder if you can play MOD files on an atmega...
[19:02:35] <Lambda_Aurigae> learath, probably.
[19:03:22] <learath> man. such a bad idea....
[19:04:47] <Lambda_Aurigae> so many bad ideas turn into fun things.
[19:04:57] <Lambda_Aurigae> like a pulsejet powered gocart.
[19:05:03] <Lambda_Aurigae> I mean, come on, what could go wrong?
[19:05:09] <learath> yes. yes could go wrong.
[19:50:34] * Casper looks at Lambda_Aurigae...
[19:51:01] <Casper> why not make a car turbo based jet engine powered go cart?
[19:51:31] <Casper> it could even be environnementally friendly by using waste vegetable oil!
[19:51:49] <Casper> It could make everyone crave for french fries!
[19:54:10] <Lambda_Aurigae> well, kinda did that with an old vw diesel.
[19:54:40] <Lambda_Aurigae> vw rabbit diesel.
[19:55:15] <Lambda_Aurigae> tank preheater to keep the veggie oil liquid.
[19:56:27] <Lambda_Aurigae> cycled engine coolant through a piece of copper pipe to keep the fuel liquid and had a 12V small tank preheater to get a small amount of fuel flowing while the engine heated up the rest of the tank.
[19:56:43] <Casper> I wonder how much lubrification power diesel have.... considering that the pump is diesel lubricated and last a car lifetime.... why couln't the engine do the same? ...
[19:58:12] <Lambda_Aurigae> that vw rabbit ran for at least 5 years after we modded it.
[19:58:15] <Lambda_Aurigae> probably longer
[19:58:20] <Lambda_Aurigae> but I know of 5 years.
[19:58:29] <Lambda_Aurigae> and that was back in the mid 80s.
[19:59:05] <Lambda_Aurigae> but it did smell like mcdonalds at lunch rush hour when it was running.
[19:59:49] <Casper> hehe
[20:00:09] <Casper> and the legality of it is uncertain it seems
[20:00:26] <Lambda_Aurigae> yes.
[20:00:40] <Lambda_Aurigae> you have to declare that you are using an alternate fuel and pay extra road use taxes.
[20:01:01] <Lambda_Aurigae> it's perfectly legal to do so long as you pay your road taxes and all that.
[20:01:07] <Casper> atleast you have such option
[20:01:37] <Lambda_Aurigae> you have to track how much fuel you run through it and all to figure it up because that's how road tax is calculated. It is usually included in the cost of fuel.
[20:02:13] <Lambda_Aurigae> electric cars also get hit with extra taxes if you get caught.
[20:02:13] <Casper> ow... painfull then
[20:03:29] <Lambda_Aurigae> small time diesel conversion users often get away with it without paying the extra taxes.
[20:04:31] <Casper> I wonder how hard and pricey it would be for a farm to obtain huge quantity of WVO
[20:04:42] <Lambda_Aurigae> WVO?
[20:04:44] <Casper> since it is not on the road, there is no road tax...
[20:04:48] <Casper> waste vegetable oil
[20:04:51] <Lambda_Aurigae> aahh.
[20:05:03] <Lambda_Aurigae> large quantities would be difficult in a lot of places.
[20:05:24] <Lambda_Aurigae> you would need contracts with local restaurants.
[20:05:34] <Lambda_Aurigae> a small farm could probably do it without much trouble.
[20:05:41] <Casper> filter it, burn it for heat during winter
[20:05:58] <Lambda_Aurigae> I was thinking running tractors on it.
[20:07:02] <Casper> yes, but WVO as engine oil require chemistry
[20:07:07] <Lambda_Aurigae> nope.
[20:07:14] <Lambda_Aurigae> not on a vw rabbit anyhow.
[20:07:26] <Casper> ok
[20:07:31] <Lambda_Aurigae> we filtered and ran it right through the system.
[20:07:44] <Lambda_Aurigae> we did put extra filters on the fuel line though.
[20:08:00] <Lambda_Aurigae> fuel injection systems would have shitfits with it I bet.
[20:08:28] <Lambda_Aurigae> but the older style worked great.
[20:10:17] <Casper> yeah... so... I wonder how illegal burning waste motor oil would be...
[20:10:34] <Lambda_Aurigae> umm.
[20:10:37] <Lambda_Aurigae> no clue on that one.
[20:10:47] <Lambda_Aurigae> if you had decent filters on the output, not so bad.
[20:11:00] <Lambda_Aurigae> I used to know a guy who collected it and distilled it.
[20:11:18] <Lambda_Aurigae> made his own little refinery.
[20:12:03] <Lambda_Aurigae> ended up burning most of what he got out of it but he did use some for lubrication in farm vehicles.
[20:12:17] <Casper> probably not that hard to do...
[20:12:41] <Lambda_Aurigae> just a basic still with some precise temperature controls.
[20:13:02] <Casper> wow newegg system is really slow
[20:13:14] <Lambda_Aurigae> as I recall he used some of the fuel he distilled out to power the still/refinery.
[20:13:34] <Casper> bought the premier thing 4.5 hours ago, took half an hour to get activated, and now just got the invoice...
[20:13:39] <Casper> should be all instant
[20:13:48] <Casper> it's internal digital good...
[20:14:12] <Lambda_Aurigae> I just signed up for an amazon credit card and got 50 dollars to spend on amazon.
[20:14:26] <Lambda_Aurigae> soon as I get the card I'll cancel it
[20:14:33] <Lambda_Aurigae> then I can do it again next time they offer it.
[20:14:38] <Lambda_Aurigae> this is the 3rd time I've done it.
[20:14:55] <Casper> lol
[20:15:10] <Lambda_Aurigae> last time was only 40 dollars though.
[20:15:10] <Casper> but cancelling card downrank your credit a bit
[20:15:25] <Lambda_Aurigae> I have awesome credit...it doesn't hurt me much.
[20:16:09] <Casper> I'll know how good of a credit I have when grandmother will pass away... will have to borrow money to get the house up to what I want
[20:16:35] <Lambda_Aurigae> wifey and I qualified for 150K loan for a house.
[20:16:45] <Lambda_Aurigae> we only borrowed 40K.
[20:17:07] <Casper> which mean strip the full basement, new electrical panel, lift the house, install patio door, redo basement...
[20:17:14] <Casper> and possibly redo the sewer...
[20:17:33] <Lambda_Aurigae> we had to redo part of the sewer when we bought the house...septic system really.
[20:17:36] <Lambda_Aurigae> cost about 6K.
[20:18:02] <Lambda_Aurigae> the sellers have to pay for that in this state...thankfully.
[20:18:24] <Lambda_Aurigae> I'm in the process of doing some upgrades to the house myself.
[20:18:35] <Lambda_Aurigae> covering and screening in the deck is my current project.
[20:19:44] <Lambda_Aurigae> just finished the kitchen island.
[20:20:03] <Casper> what bug me the most for this is the front porch... it's a concrete slab...
[20:20:11] <Lambda_Aurigae> ouch.
[20:20:33] <Lambda_Aurigae> mine is wooden. I more than doubled the size a year and a half ago from scrap lumber.
[20:20:47] <Lambda_Aurigae> building across the street got blown down in a storm.
[20:20:59] <Lambda_Aurigae> we collected a lot of wood from that.
[20:21:09] <Lambda_Aurigae> they were just gathering and throwing it all away.
[20:21:21] <Lambda_Aurigae> 100x60 foot building.
[20:21:53] <Lambda_Aurigae> so I collected two pickup truck loads of wood from the park and roads across the way.
[20:22:07] <Lambda_Aurigae> a lot of it was cracked but I cut around the cracks.
[20:23:45] <Casper> http://i.imgur.com/VgoejUh.png
[20:24:00] <Lambda_Aurigae> got enough to make a 10x12 foot extension on my deck.
[20:24:21] <Lambda_Aurigae> https://drive.google.com/a/bethnray.com/folderview?id=0BxaP1wMEe_6aaWNmLU81SjlLQWM&usp=sharing#
[20:24:25] <Lambda_Aurigae> deck project
[20:25:31] <Casper> see what I mean by worried about the front...
[20:25:37] <Lambda_Aurigae> yeah.
[20:26:46] <Casper> what I might end up doing is just seal it well at the house, then put a second one on top of it
[20:26:53] <Casper> in wood
[20:29:53] <Casper> bbl
[20:30:28] <Lambda_Aurigae> bout time for me to head to bed.
[20:31:17] <Casper> I hope that the memory for my new computer will be shipped AND picked up tonight
[20:31:22] <Casper> dosen'T seems like it will