Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Tor Nov 22, 2005 10:21 am Naslov sporočila: delayms(100); |
|
|
Živjo!
Za programiranje picev uporabljem prevajalnik hi-tech. Uporabljam program
mplab ide.
Vse lepo deluje razen ukaza delayms(100)
Primer za zakasnitev 2 sekund:
delayms(250);
delayms(250);
delayms(250);
delayms(250);
delayms(250);
delayms(250);
delayms(250);
delayms(250);
vendra mi ledica utripa enako kot če bi napisal samo 1x delayms(250)
za odgovor se vam že vnaprej zahvalujem. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Tor Nov 22, 2005 11:23 am Naslov sporočila: |
|
|
Za odgovor moras postaviti tudi vprasanje
Moja nadcutna zaznava pravi, da te zanima, zakaj LEDica blinka hitreje kot z 1/2 Hz. Odgovor na to vprasanje se glasi: napisi cel relevantni del kode - ne moremo vedeti, kako ti to LEDico prizigas in ugasas (ce to recimo naredis s PWM, potem tvoji delayi sploh ne vplivajo nanj). Ko bos ze pri tem, objavi tudi assembly listing tega dela tvojega programcka, ce slucajno prevajalnik pocne kaksne neumnosti. |
|
Nazaj na vrh |
|
 |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Sre Nov 23, 2005 9:22 am Naslov sporočila: |
|
|
Moj program:
Koda: |
/*
ledica naj bi utipalala z frekvenco 1/2 Hz.
vendar utipa enako hitro kot če bi namesto da sem 8x napisal delayms(250)
napisal samo 1x delayms(250).
ledico sem priključil na pin RB3 z preduporom na +5V.
*/
#include <pic.h>
#include <delay.h>
#define led RB3
void main(){
TRISA=0;
TRISB=0;
begin:
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
led=!led;
goto begin;
}
|
Nevem kaj je to "assembly listing". Upam da sem dal pravo datoteko:
test.lst:
Koda: |
HI-TECH Software PICC Macro Assembler V8.05PL2
Wed Nov 23 08:32:46 2005
1 processor 16F84A
2 opt pw 79
3 psect text0,local,class=CODE,delta=2
4 psect text1,local,class=CODE,delta=2
5 0000
6 0000
7 0000
8 0000
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15
16 psect text0
17 03E9 _main
18 ;test.c: 12: TRISA=0;
19 03E9 1683 bsf 3,5
20 03EA 0185 clrf 5 ;volatile
21 ;test.c: 13: TRISB=0;
22 03EB 0186 clrf 6 ;volatile
23 03EC l2
24 ;test.c: 14: begin:
25 ;test.c: 15: DelayMs(250);
26 03EC 30FA movlw -6
27 03ED 1283 bcf 3,5
28 03EE 23DC call _DelayMs
29 ;test.c: 16: DelayMs(250);
30 03EF 30FA movlw -6
31 03F0 23DC call _DelayMs
32 ;test.c: 17: DelayMs(250);
33 03F1 30FA movlw -6
34 03F2 23DC call _DelayMs
35 ;test.c: 18: DelayMs(250);
36 03F3 30FA movlw -6
37 03F4 23DC call _DelayMs
38 ;test.c: 19: DelayMs(250);
39 03F5 30FA movlw -6
40 03F6 23DC call _DelayMs
41 ;test.c: 20: DelayMs(250);
42 03F7 30FA movlw -6
43 03F8 23DC call _DelayMs
44 ;test.c: 21: DelayMs(250);
45 03F9 30FA movlw -6
46 03FA 23DC call _DelayMs
47 ;test.c: 22: DelayMs(250);
48 03FB 30FA movlw -6
49 03FC 23DC call _DelayMs
50 ;test.c: 23: RB3=!RB3;
51 03FD 3008 movlw 8
52 03FE 0686 xorwf 6
53 ;test.c: 24: goto begin;
54 03FF 2BEC goto l2
55
56 psect text1
57 0000
58 0000
59 0000
60 0000
61 0000
62 0000
63 0000
64 0000
65 0000
66 0000
67 0000
68 0000
69 0000
70 0000
71 0000
72 0000
73 0000
74 0000
75 0000
76 0000
77 0000
78 0000
79 0000
80 0000
81 0000
82 0000
83 0000
84 0000
85 0000
86 0000
87 0000
88 0000
89 0000
90 0000
91 0000
92 0000
93 0000
94 0000
95 0000
96 0000
97 0000
98 0000
99 0000
100 0000
101 0000
102 0000
103 0000
104 0000
105 0000
106 0000
107 0000
108 0000
109 0000
110 0000
111 0000
112 0000
113 0000
114 0000
115 0000
116 0000
117 0000
118 0000
119 0000
120 0000
121 0000
122 0000
123 0000
124 0000
125 0000
126 0000
HI-TECH Software PICC Macro Assembler V8.05PL2
Symbol Table Wed Nov 23 08:32:46 2005
l2 03EC _DelayMs 03DC _main 03E9 start 0004 status 0003
|
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Sre Nov 23, 2005 12:14 pm Naslov sporočila: |
|
|
Nenavadno, da je delayms() izrezana iz listinga, ali pa jaz to berem narobe.
Ce das delayms(250) samo enkrat, potem preverjeno utripa enako hitro kot z osmimi delayms(250) ? |
|
Nazaj na vrh |
|
 |
ma73 Član

Pridružen-a: Ned 04 Jan 2004 21:56 Prispevkov: 49 Aktiv.: 0.21
|
Objavljeno: Sre Nov 23, 2005 2:26 pm Naslov sporočila: |
|
|
Smiselno bi bilo uporabiti FOR zanko, kjer jo pokličeš osemkrat namesto, da pišeš
delayms tolikokrat. Zakaj pa jo obravnava samo kot enkrat nimam ideje. |
|
Nazaj na vrh |
|
 |
<ales> Član

Pridružen-a: Čet 17 Mar 2005 19:59 Prispevkov: 28 Aktiv.: 0.12
|
Objavljeno: Čet Nov 24, 2005 11:10 pm Naslov sporočila: |
|
|
Sem praktično preizkusil pa mi normalno dela, le pri kodi sem še dodal
__CONFIG (XT & WDTDIS & PWRTEN )
Koda: |
#include <pic.h>
#include <delay.h>
#define led RB3
__CONFIG (XT & WDTDIS & PWRTEN )
void main(){
TRISA=0;
TRISB=0;
begin:
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
led=!led;
goto begin;
}
|
Lp, Aleš |
|
Nazaj na vrh |
|
 |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Sre Nov 30, 2005 8:30 pm Naslov sporočila: |
|
|
Še vedno mi noče delovati.Kaj naj naredim glede tega? Zanima me še nekaj.
Ali nebi mogel naslednji program preklapljati ledico na vsake 15 sekund?
Koda: |
#include <pic.h>
#include <delay.h>
#define led RA2
int a;
void main(){
TRISA=0;
TRISB=255;
begin:
for (a=0;a<=255;a++){
for (a=0;a<=255;a++){
DelayUs(230);
}
}
led=!led;
goto begin;
}
|
|
|
Nazaj na vrh |
|
 |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Čet Dec 01, 2005 4:14 pm Naslov sporočila: |
|
|
A mi lahko kdo pošlje ali pripne datoteko *.hex za utripanje ledice na vsake 10 sekund. Za pic 16f84a. Da vidim ali je težava v prevajalniku ali v picu. |
|
Nazaj na vrh |
|
 |
igor_k Član

Pridružen-a: Pon 19 Jul 2004 11:44 Prispevkov: 1011 Aktiv.: 4.27 Kraj: Rače
|
Objavljeno: Čet Dec 01, 2005 4:58 pm Naslov sporočila: |
|
|
V programu ni videti napake. Povej na koliko časa utripa LEDka. |
|
Nazaj na vrh |
|
 |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Čet Dec 01, 2005 5:00 pm Naslov sporočila: |
|
|
Pribljižno 2x na sekundo. |
|
Nazaj na vrh |
|
 |
igor_k Član

Pridružen-a: Pon 19 Jul 2004 11:44 Prispevkov: 1011 Aktiv.: 4.27 Kraj: Rače
|
Objavljeno: Čet Dec 01, 2005 6:01 pm Naslov sporočila: |
|
|
Kaj pa Watchdog?! |
|
Nazaj na vrh |
|
 |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Čet Dec 01, 2005 7:29 pm Naslov sporočila: |
|
|
Vse sem že probal. Ali je možno da je XT oscilator zanič ali pic? Ali pa da imam zanič prevajalnik ali delay.h datoteko. |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Čet Dec 01, 2005 8:01 pm Naslov sporočila: |
|
|
Če bi bil kristal zanič, potem procesor sploh nebi deloval? Razen če bi nihal z neko čudno frekvenco.
Sam bi najprej poizkusil prevedno kodo potegniti v MPLAB, in sprožiti simulacijo. Potem lahko pogledaš kaj se dogaja v simulatorju.
Sam pred peko PICa vedno sprožim simulacijo, ker se mi velikokrat zgodi, da pozabim kje kakšno zadevo. Samo jaz se trudim z asemblerjem.
PIC je drugače pravilno sprogramiran? Sam lahko program tudi preberem iz procesorja, če ni zaščiten. _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
 |
mrsmoke Član

Pridružen-a: Sob 26 Feb 2005 23:22 Prispevkov: 47 Aktiv.: 0.20
|
Objavljeno: Pet Dec 02, 2005 1:11 am Naslov sporočila: |
|
|
Jutri downloadam nov mplab in hitech-ov prevajalnik. Videl sem da mi tudi
v programu pic simulator ide dela narobe. Če pa še to ne pomaga se bom lotil programirati atmele v c-ju, ker imam dosti ze [cenzurirano]. V pice sem vložil že veliko truda. Asamblerja se mi pa brezvezno zdi učiti. Prosim če mi kdo pošlje *.hex datoteko za utripanje ledice na 10 sekund. |
|
Nazaj na vrh |
|
 |
ma73 Član

Pridružen-a: Ned 04 Jan 2004 21:56 Prispevkov: 49 Aktiv.: 0.21
|
Objavljeno: Pet Dec 02, 2005 11:47 am Naslov sporočila: |
|
|
na katerem pinu želiš utripanje na 10skeund? Ti jest pošljem!
Zakaj 2sekundi, pa so dve varianti nisi napisal kateri kvarc uporabljaš ali
pa sem spregledal?
Pa jest bi v for zanki raje uporabil enkrat spremenljivko A drugič B.
 |
|
Nazaj na vrh |
|
 |
|