Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   106 / 118
(#) potyo válasza Dempsey hozzászólására (») Feb 22, 2015 /
 
Miért nem nézed meg az adatlapot?
(#) sysy válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
A 16F887 Timer2-nek sincs 5-ös utóosztója. Sőt, semelyiknek sincs. Általában a 2 egésszámú hatványaival operálnak. A Timer2-nek konkrétan vagy nincs (1), vagy 16 az utóosztója.
(#) sysy válasza Dempsey hozzászólására (») Feb 22, 2015 /
 
A tények makacs dolgok Virág elvtárs! A Timer2-nek nincs utóosztója a /16-on kívül. Lehet, hogy egyes egzotikus PICekben van, de eddig nem találkoztam velük.

Egyébként ahogy a Potyó forumtársunk ajánlotta, érdemes néha belekukkantani az adatlapokba is. Csuda dolgok vannak bennük.
A hozzászólás módosítva: Feb 22, 2015
(#) Dempsey válasza sysy hozzászólására (») Feb 22, 2015 /
 
Aha értem. Köszi az infót.
(#) Dempsey válasza sysy hozzászólására (») Feb 22, 2015 /
 
Akkor a képen lévő postscale értékeket hogyan kell értelmezni, mert én azt látom hogy 1:1-től 1:16 ig állítható.

postscale.png
    
(#) potyo válasza sysy hozzászólására (») Feb 22, 2015 / 1
 
Ne vezessük már itt félre az olvasókat. 16F887-nek (adatlap) igenis van 1:5 arányú utóosztója. 82-es oldal, T2CON regisztert tessék nézni. Meg ahogy nekem rémlik, amivel összefutottam 8 bites PIC kontrollerrel, és volt benne Timer2, abban mindben volt 1:1 és 1:16 között egyesével állítható utóosztó.
A hozzászólás módosítva: Feb 22, 2015
(#) potyo válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Pedig ez a beállítás jó, hacsak a fordító nem ront el valamit. Állítsd meg a program futását a szimulátorban, és nézd meg, hogy mi van a T2CON és a PR2 regiszterekben.
(#) potyo válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Ennél a 45536 helyére a szimuláció alapján be kell lőni, hogy mit adj hozzá a get_timer1() eredményéhez, hogy pontosan 10ms-ot kapj. Attól függ, hogy hány utasításból áll ez a számítás, ASM-ben meg lehetne pontosan mondani, C-nél már nehezebb, legjobb a szimulátor alapján belőni.
(#) sysy válasza potyo hozzászólására (») Feb 22, 2015 /
 
És tényleg! Mea culpa. Én csak a sematikus ábrát néztem meg amin 1 to 16 érték volt feltüntetve.
Jobban megnézve 4 biten lehet állítgatni ezek közötti értékeket.
Na, ezzel beégtem nagyon. Bocsánat mindenkitől, akit ezzel tévútra vittem.
Ezek szerint minden PIC egzotikus.
A hozzászólás módosítva: Feb 22, 2015
(#) potyo válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Közben gondolkoztam, és itt inkább 249 lenne a jó érték.
(#) Dempsey válasza sysy hozzászólására (») Feb 23, 2015 /
 
Nincs gond előfordul az ilyesmi. Az 1 to 16 pont azt jelenti hogy 1-től 16-ig
(#) kurucz_peter hozzászólása Feb 23, 2015 /
 
Hahó!

16F685-re írtam egy programot és 4.104-es fordítóval fordítottam. Tökéletesen megy.
Majd mindezt megpróbáltam a legújabb demo compilerrel: 5.0.26. egyáltalán nem működik az interrupt handling.
Valaki tapasztalt már ilyet?
Az a gáz, hogy szeretnék 16F1509-re fordítani, de azt a 4.104 nem támogatja.
Van valami megoldás?

Köszi!

Üdv:
P
(#) sysy hozzászólása Feb 23, 2015 /
 
Látni kéne a programot.
(#) kurucz_peter válasza sysy hozzászólására (») Feb 23, 2015 /
 
már nagyon kibeleztem és így sem megy:


#include <16F685.h>
#device *=16
#device ADC=8

#fuses HS,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)

#INT_RB
void detect_rb_change(){
// ide soha sem jutunk el
}

void init(){
init_timer_0();
init_timer_1();

set_tris_a(0b1111011);
set_tris_b(0b11111111);
set_tris_c(0b0000000);

enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
}


void main(){
setup_oscillator(OSC_4MHZ | OSC_INTRC);
delay_ms(1000);
init();

while(TRUE){
....
}
}
A hozzászólás módosítva: Feb 23, 2015
(#) sysy válasza kurucz_peter hozzászólására (») Feb 23, 2015 /
 
Hirtelen annyi látszik, hogy a Fuses-okban külső high speed oszcillátor van beállítva, a mainban pedig belső RC oszcillátor. LED villogtatás működik ilyen beállítások mellett?
(#) kurucz_peter válasza sysy hozzászólására (») Feb 23, 2015 /
 
igen, led villogtatás megy. A megszakításkezelés az ami totál süket.
(#) Tas84 válasza kurucz_peter hozzászólására (») Feb 23, 2015 /
 
Azokban a régebbi verziókban van olyan hiba, hogy printf után nem billen vissza a GIE, de úgy látom te nem használsz ilyet. Nézd meg a C/ASM list-ben, hogy mi történik a GIE bittel!
(#) potyo válasza kurucz_peter hozzászólására (») Feb 23, 2015 /
 
RB megszakítás esetén nem árt kiolvasni a PORTB-t, hogy megszűnjön a "mismatch condition", és ezzel törlődjön az RBIF bit.

Úgy rémlik, nemrég róla szó itt, hogy ezt CCS-ben hogyan lehet kivitelezni, próbáld megkeresni.
A hozzászólás módosítva: Feb 23, 2015
(#) kurucz_peter válasza potyo hozzászólására (») Feb 24, 2015 /
 
megoldás: IOCB = 0xFF;
A PORTB kiolvasás megvolt, csak elfelejtettem bemásolni ide. Elnézést érte!
A GIE bitet és az egész INTCON regisztert helyesen kezeli a fordító.
Na mindegy, lényeg h működik.

köszi!
P
(#) sysy válasza kurucz_peter hozzászólására (») Feb 24, 2015 /
 
Mi is ez az IOCB=0xFF?
Mert nem ismerős ez a regiszter név.
A hozzászólás módosítva: Feb 24, 2015
(#) kurucz_peter hozzászólása Feb 24, 2015 /
 
Four of the PORTB pins are individually configurable as
an interrupt-on-change pin. Control bits IOCB<7:4>
enable or disable the interrupt function for each pin.
(#) sysy válasza kurucz_peter hozzászólására (») Feb 24, 2015 /
 
A 16F1509 nem rendelkezik ilyen regiszterrel.

Jaaaaa! A 16F685-nek van ilyen. Értem már.
(#) Lamprologus hozzászólása Márc 4, 2015 /
 
Egy kis segítség kellene ...

Kinéztem mondjuk egy speciális karakter bináris kódját az LCD kijelző karakterkészletéből, akkor azt hogyan tudom kiiratni az LCD-vel?

printf(lcd_putc,"valami szoveg ? más szöveg");

a kérdőjel helyére kéne a spec karakter.
(#) vicsys válasza Lamprologus hozzászólására (») Márc 4, 2015 /
 
  1. lcd_gotoxy(1,2);
  2.                   printf(lcd_putc, "%3.1f",temperature);
  3.                   lcd_putc(223);
  4.                   lcd_putc("C  ");

Itt a 223, a fok jel.
(#) Dempsey válasza vicsys hozzászólására (») Márc 4, 2015 /
 
Pont ezt akartam elküldeni
(#) Dempsey válasza Lamprologus hozzászólására (») Márc 4, 2015 /
 
Itt tudsz kalkulálni. A sor és oszlop számait összeadod és azt írod be a 223 helyére.
(#) vicsys válasza Dempsey hozzászólására (») Márc 4, 2015 /
 
Vagy binárisan is beírhatja, ha az úgy átláthatóbb neki...
(#) Dempsey válasza vicsys hozzászólására (») Márc 4, 2015 /
 
Az is igaz
(#) Lamprologus válasza vicsys hozzászólására (») Márc 4, 2015 /
 
Na, ez a tipikus "gooomba" esete!
És még le is buktam, egyből tudtátok, hogy a fokot akarom kiiratni!
Köszönöm a segítséget (természetesen mindenkinek)!
(#) Lamprologus hozzászólása Márc 6, 2015 /
 
NTC-vel kellene megoldanom hőmérséklet mérést, mondjuk 1 tizedesjegy pontossággal. Ahogy elnézem a karakterisztikáját nem nagyon látok más lehetőséget mint a katalógusból kinézni és beírogatni az értékeket a programba.... de pl -20 ... +40C tartományban ez már 600 érték lenne ...
Túrtam a netet, találtam egy PIC + NTC-s hőmérőt annál is ezt a módszert haszálták, de csak 1 fokos felbontás volt.
Létezik valami képlet amivel lehetne számolni?
Következő: »»   106 / 118
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem