Boudewijn schreef op zondag 14 december 2008 @ 19:37:
offtopic:.
Je hebt een gigantische typo in je signature
Dat is geen typo, dat is gewoon een grove taalfout
[YouTube: http://www.youtube.com/watch?v=eT_xuSI-gDw]
Als je toch zin hebt om te experimenteren..
Zie ook related voor mensjes die letterlijk een vuurtje stoken op de chip.
Dan doe ik P0.14 hoog en krijg ik de raarste resultaten. Hij start eigenlijk niet op (dus ik denk dat m'n flash niet goed gegaan is?) en dan soms gebeurd er toch wel wat, zo springt het ledje dan alsnog aan welke op de TxD van UART1 zit - dus hij lijkt die hoog (idle) te trekken. Het verify'en van de geflashde code gaat wel goed in Flash Magic.
Qua code gebruik ik de UART example welke bij de winarm software zat met als enige aanpassing de klok frequentie, en compilen etc gaat zonder errors of warnings. Heeft iemand een goed stappenplan van hoe ik er nu achter kom wat het probleem is?
Erg irritant dat ik hier geen oscilloscoop heb. Ik zie geen reden waarom er iets mis zou zijn met de klok bijvoorbeeld maar het is wat lastig controleren.

Of je hebt ergens iets laten floaten wat niet mag?
Voor zover ik weet heb ik niets floaten. De P0.14 & reset lijnen zijn wel wat maf en geinverteerd dus als ik de boel wil runnen met de usb kabel erin geprikt moet ik de seriele poort connecten (is een FT2232D) en DTR & RTS aan zetten. Deze zijn verbonden met een npn transistor aan de base, de lijnen zitten aan de collector, emitter aan ground. Met 0V trekken de 10k pull ups die lijnen hoog.
Wat ook kan is de usb kabel eruit trekken, dan blijven DTR & RTS ook laag. De FT2232D doet dus gewoon maf met die twee pinnen. Zonder kabel is hij soms op te starten met de reset knop. Dat is wel een fysieke knop zonder gedoe om het verhaal te ontdenderen maar hier is dan weer wel vrijwel zeker dender aanwezig.
Soms doet hij het ook 10x goed* als ik de reset lijn via de pc (DTR) toggle en dan laat ik het even aan, reset hem nog eens, en gebeurd er niets meer.
*de led op UART1 gaat aan, ik zie geen data van UART0 komen.
Daarnaast werkt de ISP dus wel altijd, ik kan dan een '?' sturen en krijg 'Synchronized' terug, waarna hij alles wat ik invoer ga echo'en. Dus lijkt me dat voeding dan wel goed zit?
[ Voor 13% gewijzigd door Sprite_tm op 15-12-2008 16:20 ]
Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog
Misschien is het een soort BOD ?
Edit:
Ik heb trouwens ook een ander vraagje, ik moet een stabiele 1200Hz klokbron hebben. Ik heb nu zitten rommelen met een CD4060 en een 4,29 MHz kristal, maar dat kristal wil niet altijd starten, erg vervelend. Zijn er ook andere vergelijkbare IC's of oplossingen ?
[ Voor 50% gewijzigd door DaWaN op 15-12-2008 17:19 ]
If you do not change direction, you may end up where you are heading
Dus een brakke voeding, brakke USB connectie, brakke pc op werk, ik weet het niet meer. Wat ik wel weet is dat ik morgen deze laptop mee ga slepen naar werk en daar achter ga klussen.
*ledje van UART1 welke omhoog gemikt wordt. Meer krijg ik er nog niet uit.
Jep, dat was ik.wacco schreef op vrijdag 12 december 2008 @ 21:15:
Was jij nou de held met het patch-draadje? Ik gooi iedereen's namen door elkaar
Ik heb een Atmega 8 en een CC2500 chip. Deze wil ik met elkaar laten babbelen. Helaas werkt de Atmega8 op 5 volt en de cc2500 maar op 3.3 volt. Aangezien ik via de SPI wil babbelen wordt dat dus een *boem* voor de cc2500
Wat kun je hier het beste voor doen?
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Heb ook een 8 non-L op een li-ion lopen, dat is dan 3.6V minimaal, gaat helemaal picobello.
Zit hier de voorkant van m'n scriptie te knutselen en daar staat ene foto op die jullie nog tegoed hadden.

Men ziet linksbovenin een S-video/composite versterker, daaronder een decoder, daar weer onder een FPGA, daarnaast in het midden een mcu, linksboven daarvan een stukje flash, een ftdi usb controller, en een rijtje voedingen helemaal naar rechts, met rechtsonderin een CC2500 en de knoppen & leds onderaan is de user interface. Any questions?
De onderkant zit ook nog 'vol' met een in totaal 30-tal condensatoren/weerstanden/transistoren om de kleurenleds (tussen de knoppen) aan te sturen en de fpga te ontstoren, plus wat andere details. Klote handwerk klusje.
Bovenkant is grotendeels een run door een smd oven geweest, met wat spul bij de CC2500 als nawerk want alle C's van het antenne netwerkje had ik per ongeluk op 100n laten staan in m'n schema. Dus die moesten nabesteld worden en de klok is zoals je ziet (links van de dip switches op een gehacked verloop printje) een klein kunstwerkje geworden dankzij package-formaat-incompatibiliteiten </scrabble>

Software begint iig vorm te krijgen, alleen de FPGA wilt nog niet en alles moet nog getest worden. Bleh.

[ Voor 40% gewijzigd door wacco op 23-12-2008 21:37 ]
enige tijd geleden een 20x2 pled schermpje van world-led gekocht, probeerde hem gister aan te sluiten maar niks helaas...
Volgens mij is hij hd44780-compatible dus zo moeilijk kan het niet zijn.
1 = Gnd
2 = Vss
3 = Contrast
pin 3 hangt aan de middelste poot van een 10K pot, welke aan de 5v-lijn hangt. Vss aan 5v, Gnd aan min. Verder alleen de R/W pin aan ground.
Moet je bij deze schermpjes ook een initialisatie zien? m.a.w dat de eerste regel oplicht?
Maar die van mij doet geen ini met balkjes ofzo.
Ik heb hem niet bij led maniak vandaan maar volgens mij heb ik wel dezelfde.
[ Voor 40% gewijzigd door mace op 24-12-2008 11:37 ]
Hehehe. Ik doe maar HBO hoor. En op school zit je om te leren, nietwaar? Dus het mag wel een beetje over the top zijn.ssj3gohan schreef op woensdag 24 december 2008 @ 08:25:
@wacco: zelfs voor afstuderen lijkt dit al behoorlijk hoog gegrepen, als ik het gemiddelde TU microelectronics werk zo bekijk...
Daarnaast gebruik ik dus een stuk van madwizards' ontwerp voor de video, heb ik Sprite_tm's software als referentie voor de wireless en komt het USB & JTAG gedeelte uit m'n eigen vorige project. Dat allemaal niet hoeven uit te zoeken scheelt echt gigantisch.
helaas... ook dan doet ie niks...mace schreef op woensdag 24 december 2008 @ 11:36:
Volgens mij is bij die schermpjes de contrast inverted, dus draai hem eens helemaal de andere kant op.
Maar die van mij doet geen ini met balkjes ofzo.
Ik heb hem niet bij led maniak vandaan maar volgens mij heb ik wel dezelfde.
ander lcd'tje (2x16 zonder backlight) werkt wel, dus de AVR is ook niks mis mee.
pled is stuq denk ik...
Ik moet zeggen dat ik qua pratica de TU behoorlijk brak vind itt sommige hoogescholen.ssj3gohan schreef op woensdag 24 december 2008 @ 08:25:
@wacco: zelfs voor afstuderen lijkt dit al behoorlijk hoog gegrepen, als ik het gemiddelde TU microelectronics werk zo bekijk...
Aan de andere kant krijg je weer heel veel wiskunde en andere nuttige vakken die ik nu wel weer mis...
Anyway mooi werk wacco
[ Voor 3% gewijzigd door DaWaN op 24-12-2008 20:38 ]
If you do not change direction, you may end up where you are heading
Ik heb al wel een datasheet gevonden, deze is het volgens mij: datasheet
Ik had gelezen dat je LPC2136 wat problemen gaf. Ik ben zelf een afstudeeropdracht aan het maken met een LPC2148. Ik merk ook dat er niet altijd goed teruggesprongen wordt na het inladen van de HEX file.wacco schreef op woensdag 24 december 2008 @ 12:15:
[...]
Hehehe. Ik doe maar HBO hoor. En op school zit je om te leren, nietwaar? Dus het mag wel een beetje over the top zijn.
Dit probleem blijft zich voordoen als ik een HEX file erin plaats welke daarvoor nog weken goed heeft gewerkt. Ik kwam er toevallig vandaag achter dat dit probleem opgelost kan worden door via de UART + FlashMagic het geheugen een keer te 'wissen' ("Erase All Flash+Code RD prot") voor het programmeren. Ik programmeer met een JTAG programmer + Crossworks overigens.
Wel ondervind ik nog problemen met vectored interrupts. Ik heb een programma gemaakt dat 4 interrupts afhandelt. Drie voor knoppen en een voor een timer om het begin van een IRDA signaal te herkennen. De timerinterrupt is overigens erg exact (helaas ook geen scoop hier maar heb de timer een paar minuten laten draaien zonder afwijking) !
Als ik deze code echter in mijn volledige programma toevoeg dan wordt er niet meer goed teruggesprongen na het afhandelen van de interrupt. Hij springt dan naar een willekeurige functie (in debug mode iig, bij normaal gebruik heb ik geen idee) (motivatie voor mij om in de toekomst maar weer is assembly te programmeren). Ik heb gecompileerd in Thumb+ARM gecombineerd en alleen maar ARM mode aangezien Thumb mode geen interrups ondersteunt.
Mijn HEX file van het volledige programma is rond de 70KB. Als ik crossworks de code in de LPC2148 laad geeft deze echter aan dat er maar een 20KB aan flash in gebruik is een 10KB aan RAM. Dit komt dus bij lange na niet in de buurt van 70KB. Op internet kan ik niet direct vinden wat er verder in een HEX file staat om de oorzaak hiervan te begrijpen. Op school was ik nooit zo bezig met de grootte van het programma, als het maar erop paste
De power-down mode begrijp ik ook niet helemaal. Ik heb in het programma dat werkte met de interrupts aangegeven om alles uit te schakelen behalve timer0. Het verbruik van de LPC2148 daalt echter niet meer als anders wanneer er niks gebeurt. Wellicht omdat een while(1) functie al weinig energie verbruikt ..? Ik gebruik in dit programma enkel timer0 en interrupt 0,1 en 2. Daarbij is het verbruik ongeveer 45mA in rust en 55mA tijdens een interrupt op de een 5V USB Voeding.
[ Voor 16% gewijzigd door Emiel1984 op 25-12-2008 02:19 ]
[LTS][MTS][HTS]
Ik weet niet of het aan mij ligt, maar ik krijg een vrijwel lege pdf voorgeschoteld.kuhlivisj schreef op donderdag 25 december 2008 @ 00:41:
Ik heb hier ook al een tijdje zo'n 20x2 pled van world-led liggen. Ik heb hem ook nog niet werkend gekregen.
Ik heb al wel een datasheet gevonden, deze is het volgens mij: datasheet
Het ligt aan jou wan thier doet hij het prima.Zjosh schreef op donderdag 25 december 2008 @ 12:06:
[...]
Ik weet niet of het aan mij ligt, maar ik krijg een vrijwel lege pdf voorgeschoteld.

High Powered Madness
Je hebt gelijk dat dit niet helemaal reeel is. Ik heb de input gemeten op het development bord omdat dit de enige methode is op dit moment die ik kan toepassen.ssj3gohan schreef op donderdag 25 december 2008 @ 09:36:
Hoe heb je dat verbruik gemeten? Zon microcontroller is een piekenvreter, dat kunnen ook de betere multimeters niet echt aan, daarvoor moet je een true RMS meter gebruiken.
De LPC2148 heeft inderdaad een piek van 100mA volgens de datasheets. Ik heb de LPC2148 echter niet op 60Mhz draaien maar op maximaal 24 Mhz Het verbruik bij 60Mhz scheelt al een 15mA tot 20 mA.
Ik had gedacht dat er wel een wezenlijk verschil te zien zou zijn van een paar mA, het zijn nogal wat peripherals die je even uitzet namelijk. In de datasheet wordt heel erg benadrukt dat enkel bij gebruik van PCON en PCONP (Power-down registers) het gebruik naar vrijwel nul zal gaan. Als dit verschil nog geen mA over het geheel is dan is dit naar mijn idee nogal verwaarloosbare informatie. Ik vond overigens dit document nog gister. http://www.nxp.com/acroba...cationnotes/AN10493_1.pdf . Hierin wordt verteld dat het verbruik in power down mode tot 500uA kan worden gereducceerd. Ik zal de klok is een keer op 60Mhz zetten om te kijken of er dan wel een verschil te zien is.
Mischien is het verbruik standaard al zo laag dat de omliggende onderdelen ervoor zorgen dat het niet meer zichtbaar wordt. Helaas kan ik geen informatie vinden over wat een peripheral op zichzelf aan energie vraagt. Dat zou een hoop werk schelen. Het verbruik van de rest van de schakeling achterhalen is niet waar ik in deze laatste periode mijn prioriteit bij wil leggen. Het verbruik is nu namelijk al laag genoeg. Ik wilde echter proberen of dit via register nog snel verder omlaag te brengen was.
[LTS][MTS][HTS]
En over je hex<->programmagrootte-discrepantie: Open een hex maar es met een text-editor: het is gewoon plain text met daarin in hexadecimaal (vandaar de extentie) de data, inclusief wat omliggende info met waar het heenmoet etc. Een hex-bestandje is dan ook zo ongeveer per definitie meer dan twee keer zo groot als de data die het omvat.
Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog
Ik weet niet of je WinARM gebruikt, maar ik kwam erachter dat die een nogal aparte manier heeft om de libs te laten weten dat een interrupt is afgehandeld;Emiel1984 schreef op donderdag 25 december 2008 @ 02:04:
[...]
Als ik deze code echter in mijn volledige programma toevoeg dan wordt er niet meer goed teruggesprongen na het afhandelen van de interrupt. Hij springt dan naar een willekeurige functie (in debug mode iig, bij normaal gebruik heb ik geen idee) (motivatie voor mij om in de toekomst maar weer is assembly te programmeren). Ik heb gecompileerd in Thumb+ARM gecombineerd en alleen maar ARM mode aangezien Thumb mode geen interrups ondersteunt.
1
2
3
4
5
| /* Helemaal aan het eind van je interrupt handler dus */ /* Note: This var is a 'call' to the libs notifying that the interrupt is done */ VICVectAddr = 0; IDISABLE; } |
Vergeet die variabele te zetten en je interrupt werkt maar één keer. Ze hadden er van mij wel even een wrapper functie ala interruptDone() ofzo bij mogen bedenken.

Ik gebruik Crossworks 1.7.wacco schreef op donderdag 25 december 2008 @ 14:29:
[...]
Ik weet niet of je WinARM gebruikt, maar ik kwam erachter dat die een nogal aparte manier heeft om de libs te laten weten dat een interrupt is afgehandeld;
C:
1 2 3 4 5 /* Helemaal aan het eind van je interrupt handler dus */ /* Note: This var is a 'call' to the libs notifying that the interrupt is done */ VICVectAddr = 0; IDISABLE; }
Vergeet die variabele te zetten en je interrupt werkt maar één keer. Ze hadden er van mij wel even een wrapper functie ala interruptDone() ofzo bij mogen bedenken.
Had zelf geen goede ervaringen met WinAVR. Vandaar dat ik WinARM al links had laten liggen. IAR werkt erg goed. Heb hier in het verleden veel verschillende codes in geschreven voor op mijn STK500, voornamelijk Atmel controllers.
Bij het bedrijf waar ik mijn afstuderen doe wilden ze graag dat ik met Crossworks ging werken. Ik gebruik dus Crossworks maar dit programma is dus maar 30 dagen te gebruiken als je geen vorm van licentie hebt. Deze kosten 150 dollar voor hobbyisten. Wat nog best te overzien is dus. Het programma Crossworks heeft een aantal punten waar je in het begin je wezenloos naar zoekt maar op langer termijn werkt het erg goed. Voor IAR kreeg ik een handleiding op de HTS met de juiste instellingen. Hier heb ik dus toendertijd niet naar hoeven zoeken.
Helaas zijn de bestaande libraries voornamelijk geschreven voor IAR of uVision als je een keil development bord gebruikt. Als ik een ontwikkelkit zou aanraden zou dit dan ook een keil zijn, Hier is veel voorbeeldcode voor te vinden namelijk.
[LTS][MTS][HTS]
Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.
Verwijderd
Ik had een radio die precies hetzelfde deed
Zat condenswater in, ding stond in de schuur onder een enkelglas raampje.
Ik vraag me echt heel erg af wat er nou mis kan gaan met die ontwerpomgevingen. IAR en WinAVR zijn zowat hetzelfde, wat is er zo verschillend dat sommige mensen het een boven het andere verkiezen? Uiteindelijk is het enige wat die dingen doen:Emiel1984 schreef op donderdag 25 december 2008 @ 15:29:
[...]
Ik gebruik Crossworks 1.7.
Had zelf geen goede ervaringen met WinAVR. Vandaar dat ik WinARM al links had laten liggen. IAR werkt erg goed. Heb hier in het verleden veel verschillende codes in geschreven voor op mijn STK500, voornamelijk Atmel controllers.
- naampjes vervangen door geheugenadressen
- debugsteps uitvoeren
- communiceren naar programmer (in mijn geval niet eens)
verder schrijf je gewoon bare C waar niks mee mis kan gaan...
Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog
Ik had het natuurlijk niet over de compiler, dat is een ander verhaal.JER00N schreef op vrijdag 26 december 2008 @ 11:35:
Compilen is wel wat meer dan 'naampjes vervangen door geheugenadressen' hoorDenk aan optimalizatie etc.
Verwijderd
Ben trouwens vandaag begonnen aan de RFM12B modules, echt geniaal spul, werkt binnen 10 minuten en ik heb nu bijna een active RFID systeempje klaar
Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.
Heb dezelfde, ook een PDC2002, volgens de datasheet heeft de VBT 3v nodig, geen negatief voltage dus....mace schreef op donderdag 25 december 2008 @ 01:22:
Ja, die hebben een negatieve spanning nodig, de mijne heeft zo'n motorola-chippie onboard om dat te regelen.
Maar eens kijken hoe ik dat nou weer oplos; denk met krimpen van een faston-pen of iets dergelijks.
Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.
En wat heb je aan afscherming welke niet te solderen is...
Heb overigens weer wat positiefs bereikt met de RFM12B modules(die nu op sk.net staan). Ik heb RFID tags gemaakt met een aantal modules en een base station met een andere module. Base station roept om de beurt een module op en kijkt in welke radius deze zit bevind van het base station.
Bij minder dan een meter geeft hij een waarschuwing, werkt echt gaaf!
Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.
Maar na lang denken besloot ik dat dat dubbel aansluiten helemaal niet mogelijk is zonder een datastroom te creeëren tussen pootje 18 en pootje 5, 6, 7, 8 en 9. En ik neem aan dat dat niet hoort...
Hoe los ik dat op?
Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog
De enige datastroom tijdens het programmeren komt uit de data en kloklijn. De andere pinnen doen helemaal niks tijdens het programmeren. De Vpp springt even naar 13V, en de PGM gebruik je alleen bij LVP. (staat niet eens in het schema).
Trouwens, die pin 18 zit ook aan de zener vast. Als je die niet aan de massa hangt blaas je waarschijnlijk de hele pic op omdat de Vdd te hoog wordt.
Nog even wat commentaar.
Je bouwt deze schakeling waarschijnlijk omdat je iets met pic's wilt doen, maar niet teveel geld wilt uitgeven aan een programmer. Ik raad aan om een fatsoenlijke programmer te kopen. Een pickit kost je €50 als je in nl koopt, als je bij microchipdirect bestelt kost het je maar €25, daar komt natuurlijk wel verzendkosten bij, maar dan kan je gelijk een leuke collectie pics bestellen.
Voordelen pickit2:
HVP & LVP (low /high voltage programming)
Ondersteuning 24F en 33F serie
In circuit programming
USB
Ondersteund in MPLAB
etc
Het kost wat meer, maar ik neem aan dat je gewoon een fatsoenlijke programmer wilt en wilt programmeren en niet eerst uren kloten om je hardware werkend te krijgen.
En als je het te duur vind zijn er ook nog zat clones te vinden.
Pickit clone
ICD clone (ook op samenkopen te vinden)
Galva wisp (geen clone), Print is te vinden op picbasic.nl, uitprinten, etsen en solderen.
Wisp648. (geen clone). Schema is te vinden op voti.nl, printje tekenen, en onderdelen erop.
En je kan op ebay ook heel veel proggers kopen.
De TX wordt niet gebruikt om data te versturen maar om de Vdd te schakelen.
That is all. Filmpje volgt zodra ik de code wat robuuster heb gemaakt.
Briljant!
Source? Je zou er bijna meteen zo'n lamp van gaan halen!
Maar het lijkt allemaal erg veel op Sprite_tm's spul wat wel online te vinden is hierrr.
Wel even opletten dat zijn schema niet helemaal klopt (25 ipv 26 MHz voor de CC2500) en ik moet zeggen dat een volledige antenne circuit (zie CC2500 datasheet) een bruut bereik heeft dus dat zou ik ook doen als je de kans hebt.
Als je niet wilt solderen moet je even bij samenkopen spieken.
Hoe goed die werkt moet je maar aan Atlas vragen.
Ik heb echt zo'n vreselijke hekel aan die terughoudendheid wat betreft het releasen van source code...wacco schreef op woensdag 31 december 2008 @ 09:53:
Mijn source krijg je niet, dat gaat m'n stage niet leuk vinden.
Ik werk nu ook ergens onder NDA maar ik wil gewoon alle software die ik schrijf beschikbaar stellen. Er wordt zoveel software onnodig opnieuw geschreven, je wilt niet weten hoeveel tijd de mensheid zou besparen als alles opensource was... Het grote probleem is dat iedereen geld wil verdienen.. Slechte instelling wat mij betreft.
If you do not change direction, you may end up where you are heading
Over een maandje ofzowacco schreef op woensdag 31 december 2008 @ 09:53:
Hoe goed die werkt moet je maar aan Atlas vragen.
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
@Atlas: Schiet es op man
Ik heb een alarm bediendeel, keypad met lcd.
De interne electronica is gaar en wil ik vervangen door een eigen creatie.
de lcd is geen probleem, dat is een standaard hd44780 geval.
Het keypad echter wel; dit is een siliconen matje met grafiet(?) drukpunten.
Ik heb helaas geen mogelijkheid om te etsen, dus moet ik het anders op gaan lossen.
Gaatjesprint met dunne draadje onder de toetsen werkt helaas niet; de draden zijn stiekem toch te dik of je krijgt geen goed contact.
Ik vraag me af of het met een zilverpen (zelf contactjes tekenen) wel kan, of heeft iemand misschien een beter idee?
Aluminiumfolie
Makkelijk hè?
Verwijderd
Andere optie is misschien om er kleine drukknopjes onder te fabrieken. Er zijn hele platte types te krijgen (minder dan een millimeter zelfs).
Of gaat dat al niet lukken in de behuizing ?
If you do not change direction, you may end up where you are heading
Bestaande PCB heeft een vreemde matrix, plus van de print is niet zoveel over...
Het keypad heeft de standaard 3x4 toetsen, 5 f- toetsen, en dan nog eens 8 keuzeknoppen...
Ik heb ze niet per sé allemaal nodig, de 3x4 heb ik al uit kunnen tekenen.
Er zit wel veel SMD rommel op, die ik dan ook nog eens weg moet halen.
Platte druktoetsen is misschien wel een idee, ik heb nu de 'normale' tactile switches, en die zijn veel te dik...
Dan is het natuurlijk wel van belang dat die geleidende pads onder de membraantoetsen voldoende groot zijn, anders is het alsnog een gepiel.
Het contactpuntje een millimeter of anderhalf in doorsnee, vrij krap dus.ssj3gohan schreef op donderdag 01 januari 2009 @ 22:35:
Het is gewoon erg makkelijk om alufolie op een stukje [noem stijf plat materiaal] te plakken en wat je niet nodig hebt weg te snijden, dan heb je je toetsenbord in minder dan vijf minuten. Beter zou zijn om iets soldeerbaars (zoals koper) te hebben, maar dat vind je lastig in folie, dus zou je moeten frezen of etsen uit een printje.
Dan is het natuurlijk wel van belang dat die geleidende pads onder de membraantoetsen voldoende groot zijn, anders is het alsnog een gepiel.
Ik bedenk me net dat als ik 'normale' tactile switches (42mm) pak, en dan de print met kleine afstandsbusjes op het keypad plaats het al lukt.
Ik hoop dat de achterkant er dan nog op past, zo ja, ben ik snel klaar
Ik heb een arduino bordje en een "phidgets" temperatuur sensor (http://www.phidgets.com/products.php?product_id=1124) op mijn waterkoeling geklooid, en ik zie netjes een indicatie van de temperatuur op mijn analoge input binnen komen (400-430 op een schaal van 0 tot 1024).
Die input klopt redelijk, want mijn DMM meet 2-2.15V op de analoge input. Die waarde daalt ook als ik een fannetje aanzet bij de sensor.
Echter krijg ik hier maar geen goed getal van.
Ik lees dit in de datasheet:
Nou ja prima.If the sensor is being interfaced to your own Analog to Digital Converter (not a Phidget device),
our formulas can be modified by replacing (SensorValue) with (Vin * 200). It is important
to consider the voltage reference and input voltage range of your ADC for full accuracy and
range.
Rekenvoorbeeld voor input = 412 (net gemeten).
Dan nemen we Vin*200. Eerst dus het voltage berekenen. Omdat ik een 10bits ADC heb, kan ik dus 1024 stapjes hebben. 1024/412 = 2.49.
Voltage is dan 2.49V dus, en dan mijn temperatuur:
((2.49*200)*0.2222)-61.111
en mijn temp lijkt dan 49.34 graden te zijn. Op zich best aannemelijk (zo voelt de radiator ook aan).
Echter krijg ik deze berekening niet goed in mijn AVR geschreven (ben teveel haskell gewend vrees ik).
Ik heb het volgende stukje code, en datl ijkt goed te werken... tot de temperatuur gaat dalen (in het echt).
Dan denkt de AVR dat hij stijgt (de sensor is koud, maar denkt op 56C te zitten):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| void loop() { tSensorValue=analogRead(tempPin); Serial.println((int)tSensorValue); float voltage = 1024/tSensorValue; Serial.println((int)voltage); float temp = ((voltage*200)*0.2222)-61.111; Serial.println((int)(temp*100)); Serial.println(""); delay(1000); } |
De *100 doe ik zodat ik makkelijk af kan lezen.
Kan iemand mij vertellen wat ik hier nou eigenlijk fout doe?
Als je ADC 1024 stapjes heeft op een bereik van 0 tot 5V bereken je de spanning volgens mij door:Boudewijn schreef op dinsdag 06 januari 2009 @ 01:41:
Omdat ik een 10bits ADC heb, kan ik dus 1024 stapjes hebben. 1024/412 = 2.49.
Voltage is dan 2.49V dus,
(412/1024) * 5 = 2.011.
Dus het probleem zit waarschijnlijk in je conversie van ADC waarde naar spanning.
Ik weet niet hoe die Arduino compiler werkt maar swieso is het niet handig om te gaan rekenen met een int lijkt me.
If you do not change direction, you may end up where you are heading
De analogRead functie levert een int op, en die cast ik dan naar een float.
Verder reken ik niet met ints hoor, of waar zie jij dat dan gebeuren?
De waarde lees ik idd uit via seriele interface naar de PC.
Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| float tSensorValue; int tempPin= 3; int fanPin = 9; void setup() { Serial.begin(9600); pinMode(tempPin, INPUT); pinMode(fanPin, OUTPUT); //PWM } void loop() { tSensorValue=analogRead(tempPin); Serial.println((int)tSensorValue); float voltage = 1024/tSensorValue; Serial.println((int)voltage); float temp = ((voltage*200)*0.2222)-61.111; Serial.println((int)(temp*100)); Serial.println(""); delay(1000); } |
Complete code.
Waarom doe jij dan 1024/tSensorValue?Temperature (°C) = [(sensor value/1000) x 222.22] - 61.111.
Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.
Omdat ik een 10-bits dac heb?
Edit: oh crap ,moet dat niet sensorvalue/1024 zijn?
Waar haal jij die regel ^^ btw vandaan.
In de DS staat dit nml:
1
| Temperature (°C) = ((Vin*200) x 0.2222) - 61.111 |
Ik zal dus eerst mijn analogeInput naar een voltage om moeten rekenen als ik het goed interpreteer.
Aangezien 0V gelijk is aan 0 als input en 5V 1023 zal zijn dan, kun je dat toch gewoon uitrekenen? Daarom zit ik ook met die 1024 te delen.
[ Voor 4% gewijzigd door Boudewijn op 06-01-2009 18:07 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| void loop() { tSensorValue=analogRead(tempPin); Serial.println((int)tSensorValue); float voltage = 1024/tSensorValue; //<-- Uitkomst hiervan is volgens mij een int// Serial.println((int)voltage); float temp = ((voltage*200)*0.2222)-61.111; //<-- Uitkomst hiervan is volgens mij ook een int// Serial.println((int)(temp*100)); Serial.println(""); delay(1000); } |
If you do not change direction, you may end up where you are heading
Volgens mij zal de uitkomst van iedere som altijd dezelfde vorm aannemen van de simpelste vorm van getallen die erin staat.Boudewijn schreef op dinsdag 06 januari 2009 @ 20:25:
Hmm ik zal die ints eens casten naar floats (of er gewoon .0 achter zetten), en kijken wat hij dan doet.
Want als je een float neemt en die *2 doet of *2.0 geeft al heel andere uitkomst. Installeer anders even iets van dev c++ oid om wat met C te klooien in Windows, dat kost 30x minder tijd dan telkens die Arduino programmeren
If you do not change direction, you may end up where you are heading
Ik zit eigenlijk regelmatig programmas in C in elkaar te draaien, maar doe eigenlijk vrijwel nooit iets met floats.
* Boudewijn gaat snel weer haskell aanbidden.
Edit: zie je ik ben niet helemaal nuts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| int main() { float tSensorValue; tSensorValue=412; printf("%f\n", tSensorValue); float voltage = 1024/tSensorValue; //<-- Uitkomst hiervan is volgens mij een int// printf("%f\n",voltage); float temp = ((voltage*200)*0.2222)-61.111; //<-- Uitkomst hiervanis volgens mij ook een int// printf("%f\n\n",temp); } |
1
2
3
4
| boudewijn@think-twice:~$ gcc blaat.c && ./a.out 412.000000 2.485437 49.341816 |
Nu is het niet de MS C compiler, maar volgens mij klopt het ook wel redelijk.
Ik open wel een topic voor ik de barkroeg overneem
[ Voor 64% gewijzigd door Boudewijn op 07-01-2009 03:15 ]
Ik wil de volgende code in een 2313 gaan proppen;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| $regfile = "2313def.dat" ' specify the used micro $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space 'This program uses a AT90S2313, PORTB is used as the PCF8574 PORT 'The slave library needs INT0 and TIMER0 in order to work. 'SCL is PORTD.4 (T0) 'SDA is PORTD.2 (INT0) 'Use 10K pull up resistors for both SCL and SDA Config I2cslave = &B01000000 ' same as &H40 Config Portb = Input Portb = 255 'all pins high by default Do nop Loop I2c_master_needs_data: Config Portb = Input _a1 = Pinb Return I2c_master_has_data: Config Portb = Output ' make it an output since it could be an input Portb = _a1 Return |
En de master (een mega8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| $regfile = "m8def.dat" Config Sda = Portc.4 Config Scl = Portc.5 I2cinit Dim X As Byte , Slave As Byte X = &B11111111 Slave = &H40 Do I2csend Slave , X Waitms 100 '( I2cstart 'start condition I2cwbyte Slave 'slave address I2cwbyte X 'value to write I2cstop 'stop condition ') Loop |
Kan ik simpelweg zoals bovenstaand i2csend gebruiken, of moet ik onderstaande i2cstart etc gebruiken?
Je kunt het wel via oplossen door zelf een I2C implementatie te schrijven/kopiëren, hoe dat moet staat in de Elektor van januari 2009: http://www.elektor.nl/art...ny13-en-2313.772486.lynkx
van daar ook de i2c-slave library, dit is een commerciële addon waarmee i2c softwarematig wordt geimplementeerd._l_Arjan_l_ schreef op donderdag 08 januari 2009 @ 22:03:
De attiny2313 heeft geen hardwarematige I2C ondersteuning (Atmel noemt het TWI). De slave-code gaat dus niet werken.
Je kunt het wel via oplossen door zelf een I2C implementatie te schrijven/kopiëren, hoe dat moet staat in de Elektor van januari 2009: http://www.elektor.nl/art...ny13-en-2313.772486.lynkx
Het voorbeeld gaat ook uit van een 2313....
Ik heb bovenstaande code gister getest, maar nog niks werkend gekregen.
Pull-ups van 4,7K gebruikt, maar nog geen sjoegge, vanavond ff verder testen...
http://www.atmel.com/dyn/...rod_documents/doc4298.pdf
Zeer waarschijnlijk gaat er iets mis met je interrupts
If you do not change direction, you may end up where you are heading
2 fouten; in bovenstaande code staan portc 4/5 voor sda/scl op de atmega8, nu blijkt de code die ik gister geprogged heb portD 4/5 te gebruiken en daarbij compileerde ik de slave met 2313def.dat terwijl attiny2313.dat wss beter werkt.
Op het mcselec forum en diverse internet fora word de attiny toch werkend bevonden.
Vanavond weer wat te puzzelen, en anders om e.a. te leren een echte pcf8574 aanschaffen en van daaruit verder werken.
Stel je eens voor dat je software kunt schrijven voor een budget-dSLR van dat formaat. Er zit een fikse RAM-buffer in (64 MB voor de 1000D, 128 voor de 450D), ongetwijfeld een leuk stukje flash voor de firmware en anders kun je een deel van de programmacode vanaf een sd-kaartje laten lopen. Dan kun je dat ding configureren zoals je zelf wil. Elke willekeurige lens (ook andere merken) programmeren zodat je met de cheapste bajonet-converters een andere lens kunt gebruiken. Videomodus is zeker mogelijk, als compactcamera's met een hogere pixelcount en brakkere processor het ook kunnen. Als je zelf controle over het programma hebt kun je ongetwijfeld zelfs videomodus met veel betere uitwerking dan de 5DmarkII maken. High-speed cameramogelijkheden... En dat allemaal op een body van 300 euro. Zit niemand anders hierover te dromen?
En wie heeft zin om misschien eens te proberen de firmware te hacken?
Bij de 300D is het destijds ook gelukt dus waarom bij de 1000D niet.ssj3gohan schreef op vrijdag 09 januari 2009 @ 17:40:
Ik had het er nog even over met DaWan, maar ik ben van mening dat het mogelijk moet zijn om de firmware van de Canon EOS 1000D te hacken. Er zit een 32-bit ARM (arm9 oid) based microcontroller in, zowat alle beeldprocessing-hardware zit in de CMOS-chip dus dat moet makkelijk aan te sturen zijn, waarschijnlijk zitten peripherals zoals de lvds controller naar het scherm en sdhc gewoon in de microcontroller, en knoppen zitten ongetwijfeld ook gewoon direct op interrupts. Een beetje luisteren op de lens/spiegellijnen verraadt hoe je die moet aansturen (waarschijnlijk bestaan die protocollen al wel ergens).
Stel je eens voor dat je software kunt schrijven voor een budget-dSLR van dat formaat. Er zit een fikse RAM-buffer in (64 MB voor de 1000D, 128 voor de 450D), ongetwijfeld een leuk stukje flash voor de firmware en anders kun je een deel van de programmacode vanaf een sd-kaartje laten lopen. Dan kun je dat ding configureren zoals je zelf wil. Elke willekeurige lens (ook andere merken) programmeren zodat je met de cheapste bajonet-converters een andere lens kunt gebruiken. Videomodus is zeker mogelijk, als compactcamera's met een hogere pixelcount en brakkere processor het ook kunnen. Als je zelf controle over het programma hebt kun je ongetwijfeld zelfs videomodus met veel betere uitwerking dan de 5DmarkII maken. High-speed cameramogelijkheden... En dat allemaal op een body van 300 euro. Zit niemand anders hierover te dromen?
En wie heeft zin om misschien eens te proberen de firmware te hacken?
Het probleem is echter denk ik dat je te veel wil.Denk er ook aan dat er een Canon beeldbewerkingschip in zit... En de vraag is of die bijv. streaming voor video ondersteund... Verder vraag ik me af of de cmos/ccd-chip van een 1000D wel continuous sampling ondersteund. Ik kan me voorstellen dat de data paden van een 5DmkII anders zijn dan die van een 1000D. Misschien heb je de bandbreedte wel niet? En de shutter moet het ook aan kunnen (geen idee hoe dat bij een 5DmkII werkt, of ie met de shutter regelt of dat ie de cmos op een andere manier kan sturen. Dus ik denk dat je wel een beetje heel erg zit te dromen
[ Voor 3% gewijzigd door 0fbe op 09-01-2009 18:40 ]
Dit topic is gesloten.