Ich begrüsse alle in diesem tollen Forum recht herzlich. Ich bin kein grosser Schreiber deswegen werde ich mich kurz fassen, da ich ein blutiger Anfänger bin Wolde ich mal klein an fangen und habe mir Vorgenomen ein Bausatz den ich gekauft habe der ein PIC10F200 erhellt nach zu bauen. Es Handelt sich da um das (Electronic Tealight Candle von Velleman-kit ) Mein Problem ist es die LED mit dem I/O Ausgang am Pin 5 Flackern zu lasen das es wie eine Kerzen flamme rüber kommt brauche ich ein Programm und da komme ich nicht wieder … Kann ich das mit einem schnellen ein und aus schalten mit den Program Code: LATB = 1; Delay10KTCYx(100); LATB = 0; Delay10KTCYx(100); Realisieren wenn ich das genug oft widerhole und der Delay Wert von 100 verengere um den schalt in puls erhöbe wie ein schneller Strobo umso zum Erfolg zu kommen oder gibt es eine bessere möglichkeilt? Die Schaldung ist auf 3V:
Hi, grundsätzlich bist Du schon mal auf dem richtigen Weg. Informiere Dich mal über PWM (PulsWeitenModulation) allgemein und PWM + lED. Gibt's sicher auch mehr als genug hier im Forum. G Manni PS: Bitte die Bilder nächstes mal richtig herum :)
Handelt es sich wirklich um ein pic10F200 ? Dieser hat kein LAT Register und auch die pic18 Routinen funktionieren nicht. Es gibt, bzw soll es Pic18 in 6Pin Gehäusen geben, diese fangen aber ab 10F3xx an, darunter sind es meines wissens nur pic12.
Hier ein Code, welchen du anpassen könntest: ; Candle Simulation ; 6/04 Luhan Monat ; ; Simulate flicker of candle using incandescent lamp ; device PIC10F200,intrc_osc,pwrte_on,wdt_off org 20h del1 ds 1 del2 ds 1 pcnt ds 1 temp ds 1 lev1 ds 1 lev2 ds 1 level ds 1 rbuf ds 5 #define LAMP GPIO,0 org 0 start movwf OSCCAL movlw 1 TRISW GP bsf rbuf,0 ;seed random number movlw 127 movwf lev1 ;initial light level movwf lev2 ; Main Loop ; Create hi and low power levels ; Switch between levels candle movf lev1,w movwf level call power ;do lev1 power call rando andlw 7 btfss z goto run ;skip 7 out of 8 call rmid ;generate new hi and low levels movwf lev1 sublw 0 movwf lev2 run movf lev2,w ;do lev2 power movwf level call power goto candle ; PWM power control power movlw 100 ;set flicker rate: higher=slower movwf pcnt ;set loop count p1 movf level,w ;get target level movwf del1 ;set 1st delay sublw 0 movwf del2 ;set 2nd delay bsf LAMP ;power on p3 nop decfsz del1 ;do 1st delay goto p3 bcf LAMP ;power off p4 nop decfsz del2 ;second delay goto p4 decfsz pcnt goto p1 ; find sum of 4 random numbers ; skews results around 127 rmid call rando andlw 3fh movwf temp call rando andlw 3fh addwf temp call rando andlw 3fh addwf temp call rando andlw 3fh addwf temp,w ret ; Pseudo Rando Number ; "Chop Suey Machine" rando movf rbuf,w addwf rbuf+1,w movwf rbuf+1 addwf rbuf+2,w movwf rbuf+2 addwf rbuf+3,w movwf rbuf+3 addwf rbuf+4,w movwf rbuf+4 bcf c rlf rbuf+4 btfsc c bsf rbuf+4,0 movf rbuf+4,w addwf rbuf ret end
Der genannte PIC hat 6 PINs, wieso ist in der Bezeichnung dann der Pin 7 und 8? ;) 1 und 6 Fehlen, warum auch immer diese, da die nichtmal gegenüber sind. Abgesehen davon hat der PIC10F200 kein PWM-Modul (also PWM in Software) und hat nur 384Byte an Flash-Platz, wo das Programm ist und evtl auch eine PWM-Tabelle. Die 14 Byte RAM sind ja auch eher unbrauchbar. Alternativ, solange du einen wirklichen 8pinner benutzen magst/kannst (DIP [wohl zu groß], SOIC8 oder DFN), würde ich den PIC12F1822 oder PIC12F1840 empfehlen. Der hat nicht nur genug Luft im Flash, sondern hat auch ein PWM-Modul. Das heißt, einmal Konfigurieren und dann nur noch Bytes aus der Tabelle/Array in das Register schreiben und das Modul macht den Rest. Und das mit 10bit (PWM). Dazu kommt, dass der PIC10F200 einen internen 4MHz-Generator hat, also 1MHz Befehlstakt und der PIC12F1822/1840 32MHz, also 8MHz Befehlstakt. Somit kannst du ggf. sogar Zufallszahlen "berechnen" (evtl sogar durch einen offenen AD-Eingang, den der PIC10F200 auch nicht hat), damit das Flackern nicht so "absichtlich" aussieht, und deine PWM läuft nebenbei einfach weiter..
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.