Archive for the ‘programmering’ Category
Java Virtual machinemtil Atmel ATmega8
nanoVM er java virtual machine til atmel ATmega8 processorer og atmel’s avr processor serie.
Faktisk kan nanoVM bruges med mange andre processorer også. nanoVm er dog ikke en komplet/fuld fungerende java ‘ting’ men de mest almindelige kommandosæt kan bruges, hvilket letter programmeringen af singlechip processorer en hel del. (istedet for assembler elle c programmering) Der er dog nogle begrænsninger ved brug af nanoVM bla. kører koden langsommere end en optimeret c. Det smarte er dog at man kan koncentrere sig om opgaven i stedet for at skulle tænke i hardware/processor osv. man kan hoppe lige ind i den sjove del: måle og styre det man har behov for og lyst til.
http://www.embedds.com/
http://www.uchobby.com/index.php/2007/06/04/free-arduino-microcontroller-kits/
arduino print med ethernet for web adgang http://community.pachube.com/?q=node/112
arduine wthernet compatipelt addon print http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=1&products_id=4
atmel print:
billigste er i england http://www.nuelectronics.com/estore/
ethenet print med arduine, et case eksempel http://www.nuelectronics.com/estore/?p=12
http://www.uchobby.com/index.php/2007/06/04/free-arduino-microcontroller-kits/
http://arduino.cc/
http://www.electrokit.se/
http://arduino.cc/en/Main/ArduinoBoardNano
http://shop.conrad.se/websale7/C-Control.htm?Ctx={ver%2f7%2fver}{st%2f3ea%2fst}{cmd%2f0%2fcmd}{m%2fwebsale%2fm}{s%2fconrad-swe%2fs}{l%2f01-aa%2fl}{mi%2fSHOP_AREA_17198%2fmi}{type%2fextern_search%2ftype}{fc%2fx%2ffc}{p1%2f7cb6ec7144d143f2923d21fe54b1099c%2fp1}{md5%2f87aff2a7bd4da7623c67a0fd19a1babe%2fmd5}
atmega88 http / avr web server http://www.tuxgraphics.org/electronics/200611/article06111.shtml
arduino atmel ctrl print tutorials http://www.ladyada.net/learn/arduino/
Det er relativt let at overføre data wireless, der findes ganske enkelt små chip der kan gøre det for os f.esk.
rs232 til wireless fra lantronix
her kan arduino printet købes for kun 25 euro http://www.watterott.com/
gratis source code online
sourcecodeonline.com
asp tutorials online
virkelig cool site med gratis kode til alle mulige sprog, anbefales

hvordan indsættes grafer i wordpress
Der er flere muligheder for at indsætte grafer der viser data fra mysql database. Her i bloggen er det data fra solardatalogger der skal vises i realtid og med mulighed for af forskellige views af tidsinterval, valg af hvilke data der ønskes vist i samme kordinat system mm.
Fandt en meget spændende mulighd som jeg har valgt at arbejde videre med. Google har en graph api.
Kurven her under kaldes med denne ‘kommando’: http://chart.apis.google.com/chart?cht=lxy&chd=t:10,20,40,80,90,95,99|20,30,40,50,60,70,80|-1|5,25,45,65,85&chs=500×400&chl=Hello|World|woee
Så nu handler det om at lave et php script der kan hente bruger ønsker og lave de rette træk fra mysql databasen og så kalde google graph api som den helst vil have det.
google har lavet en class så det er lettere at lave dynamisk indhold fra mysql database med google graph api
google graph api links:
http://blog.olindata.com/2009/02/using-the-google-graph-api-with-mysql-stored-functions/
UPDATE 070909:
google graph api er ikke helt så godt dokumenteret og har vist et par bugs så vidt jeg kan finde frem til, så jeg har valgt at droppe denne api og fuundet noget der ser en del federe ud
Det er am flasch charts:
amchart.com

beolink 1000 kode sniffer
For en del år siden lavede jeg en b&o link kode sniffer så jeg kunne bruge min beolink 1000 fjernbetjening til at styre alt muligt. Bla en billig prosonic video
Her er asm51 koden til 8031 processorer, eller atmels processorer idag.
Denne kode kan bruges til at styre en video, eller idag noget andet, idet video jo er YT.
;***************************************************************************** ; BEOLINK 1000 DEBUGGER. ; PROGRAMMET ER UDVIKLET TIL L’SNING AF PULSERNE P UDGANGEN AF SCART STIKKET, ; FOR STYRING AF VIDEO. ; PBEGYNDT : 3-1-91 ; BDC 8031 TEST 2 ; 3-2-91 INDFRT AUTO MESURE ROUTINE TIL MLING AF BAUD RATE ;***************************************************************************** DSEG AT 0000H MEMSIZE : DS 1 ; HVOR MANGE BYTE SKAL BEODATA DELES I ( 6 BYTES) MEMCOUNT : DS 1 ; BYTE T’LLER WA40USEC : DS 1 ; WA1_6MSEC : DS 1 ; WA4MSEC : DS 1 ; WA100MSEC : DS 1 ; ; ADDR 000BH RESEVERET AF TIMER0 INTERRUPT DSEG AT 0010H BEOCODE : DS 6 ; PLADS TIL SIDSTL’STE DATA FRA BEOLINK BITCOUNT : DS 1 ; BIT T’LLER SIDSTE : DS 1 ; SIDSTE DATA I BEOCODE SAMMENLIGNES MED TABEL BDT : DS 1 ; BYTEDATE UNDER PAKNING COUNT : DS 1 ; T’LLER TABEL POSITION WAIT : DS 1 ; VENTE DATA (MAX256uS) PTLO0 : DS 1 ; MLT TIMER DATA TIL TL0 PTHI0 : DS 1 ; " " " " TH0 BSEG AT 000H F_FLET : DBIT 1 ; SAT NR INTRUPT ROUTINE ER UDFRT 48 gg BYTEPACK: DBIT 1 ; SAT SL’NGE DER NSKES BITPAKNING RDBEO BIT P1.0 ; L’SNING AF BEODATA P SCARTSTIK EXT0 BIT P1.1 ; EXT1 BIT P1.2 ; EXT2 BIT P1.3 ; EXT3 BIT P1.4 ; EXT4 BIT P1.5 ; EXT5 BIT P1.6 ; TV_VCRNOT BIT P1.7 ; TV/VIDEO CNTLR BIT CSEG AT 0000H JMP INIT ORG 000BH ; TIMER 0 INTERRUPT JMP GOON ; HOP TIL UNDER ROUTINE INIT: ACALL MESURE ; MLER BAUD RATE START: MOV R0,#00 ; WAONPU: DJNZ R0,WAONPU ; VAIT TIL PSU OK MOV WAIT,#0FFH ; VENT 256uS MOV MEMSIZE,#06 ; 6 BYTE MEMBREDE MOV BDT,#00H ; S’TTER ALLE BIT P 0 MOV BITCOUNT,#07 ; UNDLAD 1. STARTBIT MOV R0,#010H ; FRSTE ADDR. I BEOCODE MOV MEMCOUNT,#06 ; MOV TMOD,#00000001B ; S’TTER TIMER 0 I MODE 0 MOV TL0,PTLO0 ; MOV TH0,PTHI0 ; 3,145mS clr ext5 ; RUN: JNB RDBEO,RUN ; VENT P STARTBIT DJNZ WAIT,$ ; SETB ET0 ; SETB EA ; SETB TR0 ; STARTER TIMER 0 CLR F_FLET ; CLR BYTEPACK ; LOOP: JBC BYTEPACK,PACK ; 1 = HOP PACK JBC F_FLET,FLET ; 1 = HOP FLET JMP LOOP ; PACK: DJNZ WAIT,$ ; ;SETB P1.7 ; NOP ; MOV A,BDT ; FLYTTER INDHOLD BDT TIL ACC. MOV C,RDBEO ; RLC A ; FRER CARRY IND I ACC MOV BDT,A ; FLYTTER BYTE TILBAGE I BDT ;CLR P1.7 ; NOP ; DJNZ BITCOUNT,LOOP ; MOV BITCOUNT,#08 ; MOV @R0,BDT ; FLYTTER INDHOLD FRA BDT ; TIL DEN ADDR SOM R0 PEGER P INC R0 ; FLYTTER PEGEPIND R0 EN OP DJNZ MEMCOUNT,LOOP ; S L’NGE MEMCOUNT ER >0 CLR EA ; <0 STOPPES INTR. CLR TR0 ; SETB F_FLET ; OM DATA FINDES I FLET JMP LOOP ; ;************************************************ ; ; INTERRUPT ROUTINE HVERT 2,917ms ; ;************************************************ GOON: MOV TL0,PTLO0 ; MOV TH0,PTHI0 ; PUSH PSW ; PUSH ACC ; PUSH B ; PUSH DPL ; PUSH DPH ; SETB BYTEPACK ; NEXT: POP DPH ; POP DPL ; POP B ; POP ACC ; POP PSW ; RETI ; RETUNERER FRA INTR. RUTINE ;************************************************ ; ; SAMMENLIGNINGS ROUTINE. ; R0 = ADDR P L’STE DATA FRA BEOLINK (6 BYTES) ; SIDSTE = INDEHOLDER HVILKEN POSITION I TABEL ; ;************************************************ FLET: CLR F_FLET ; MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP1: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL1 ; STOP CJNE A,SIDSTE,NEXT1 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP1 ; clr ext0 ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; setb ext0 ; JMP START ; NEXT1: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP2: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL2 ; START CJNE A,SIDSTE,NEXT2 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP2 ; clr ext1 ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; acall wait100m ; setb ext1 ; JMP START ; NEXT2: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP3: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL3 ; F.FORWARD CJNE A,SIDSTE,NEXT3 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP3 ; JMP START ; NEXT3: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP4: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL4 ; REW CJNE A,SIDSTE,NEXT4 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP4 ; JMP START ; NEXT4: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP5: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL5 ; TURN CJNE A,SIDSTE,NEXT5 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP5 ; JMP START ; NEXT5: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP6: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL6 ; GOTO CJNE A,SIDSTE,NEXT6 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP6 ; JMP START ; NEXT6: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP7: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL7 ; OFF CJNE A,SIDSTE,NEXT7 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP7 ; JMP START ; NEXT7: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP8: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL8 ; A/V CJNE A,SIDSTE,NEXT8 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP8 ; JMP START ; NEXT8: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP9: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL9 ; STORE CJNE A,SIDSTE,NEXT9 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP9 ; JMP START ; NEXT9: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP10: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL10 ; < CJNE A,SIDSTE,NEXT10 ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP10 ; JMP START ; NEXT10: MOV R0,#010H ; MOV COUNT,#00 ; MOV MEMCOUNT,#06 ; LOOP11: MOV SIDSTE,@R0 ; MOV A,COUNT ; CALL TABEL11 ; > CJNE A,SIDSTE,SLUT ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP11 ; SETB EXT3 ; JMP START ; SLUT: ACALL WAIT100M ; ACALL WAIT100M ; JMP START ; ;************************************************* ; ; S’TTER VIDEO CONTROL PORT TIL 12V ; ELLER TV 0V. ; ;************************************************* VCR: CLR TV_VCRNOT ; LOW = VIDEO RET TV: SETB TV_VCRNOT ; HI = TV RET ;************************************************* ; ; MLE ROUTINE. MLER MELLEM 2 F0RSTE BIT ; OG S’TTER TIMER 0 OP. ; INPUT = P1.0 ; ;************************************************* MESURE: MOV TMOD,#00000001 ; S’TTER TIMER0 I TIMER MODE1 MOV TL0,#00H ; MOV TH0,#00H ; JNB RDBEO,$ ; SETB TR0 ; JB RDBEO,$ ; JNB RDBEO,$ ; CLR TR0 ; MOV PTLO0,TL0 ; MOV PTHI0,TH0 ; MOV A,#0FFH ; SUBB A,TL0 ; MOV PTLO0,A ; MOV A,#0FFH ; SUBB A,TH0 ; MOV PTHI0,A ; RET ; ;************************************************ ; ; TABELER TIL FLET ROUTINE. ; ;************************************************ TABEL1: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 065H ; STOP DB 088H ; TAST TABEL2: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 066H ; START DB 044H ; TAST TABEL3: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 066H ; F.FORWARD >> DB 088H ; TAST TABEL4: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 069H ; REW << DB 088H ; TAST TABEL5: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 066H ; P DB 0A5H ; TURN DB 088H ; TAST TABEL6: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 0AAH ; GOTO DB 088H ; TAST TABEL7: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 096H ; OFF DB 088H ; TAST TABEL8: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 059H ; P DB 055H ; A/V DB 044H ; TAST TABEL9: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 099H ; STORE DB 044H ; TAST TABEL10: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 055H ; < DB 044H ; TAST TABEL11: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 055H ; > DB 088H ; TAST ;_______________________________________________________________________ ; ; WAIT 40 u SEC RUTINE ; ; WA40USEC: REGISTERET BRUGES TIL 40 u SEC WAIT RUTINE ;_______________________________________________________________________ ; WAIT40U: MOV WA40USEC,#20H ; WAIT40U1: DJNZ WA40USEC,WAIT40U1 ; RET ; ;_______________________________________________________________________ ; ; WAIT 1,6 M SEC RUTINE ; ; WA1_6MSEC: REGISTERET BRUGES TIL 1,6 m SEC WAIT RUTINE ;_______________________________________________________________________ ; WAIT1_6M: MOV WA1_6MSEC,#0FFH ; WAIT1_6M1: PUSH ACC ; POP ACC ; NOP ; DJNZ WA40USEC,WAIT40U1 ; RET ; ;_______________________________________________________________________ ; ; WAIT 4 m SEC RUTINE ; ; WA4MSEC: REGISTERET BRUGES TIL 4m SEC WAIT RUTINE ;_______________________________________________________________________ ; ; WAIT4M: MOV WA4MSEC,#0FFH ; PUSH ACC ; PUSH B ; WAIT4M1: MUL AB ; MUL AB ; MUL AB ; NOP ; NOP ; DJNZ WA4MSEC,WAIT4M1 ; POP B ; POP ACC ; RET ; ;______________________________________________________________________ ; ; WAIT 100 m SEC RUTINE ; ; WA100MSEC: REGISTERET BRUGES TIL 100m SEC WAIT RUTINE ;______________________________________________________________________ ; WAIT100M: MOV WA100MSEC,#05 ; PUSH ACC ; PUSH B ; WAIT100M1: MUL AB ; MUL AB ; MUL AB ; NOP ; call wait4m NOP ; DJNZ WA100MSEC,WAIT100M1 ; POP B ; POP ACC ; RET ; END ;



