Stránka 1 z 2

Problem s picem v C

Napsal: 02 dub 2010, 21:09
od bluepatch
Zdravim, mam problem s timto programem:

Kód: Vybrat vše

void main() {
USART_init(9600);
PORTA = 0;
TRISA.F1 = 1;
ANSEL = 1;
ANSELH = 1;
 USART_Write(48);
 PRINT:
   if (PORTA.f1 == 1) {

       USART_Write(49);

     }
   Delay_ms(1000);
   goto PRINT;
}

Je to jen jednoduchy priklad, kdy ma po privedeni napeti na portA pin 1 zacit poslat jednicky pres uart.. v pohode zkompiluju, hodim do pic simulatoru, tam to frci presne tak jak ma, pak to nahraju do picu a uz to co chci nedela..posila to ty jednicky porad jako by tam zadna podminka nebyla.. nechapu. Nesetkal se s timto uz nekdo? Pic pouzivam 16F690 a pisu to v mikroC. Uz fakt zacinam premyslet ze je vadnej pic a ne ja..

A jeste mam jeden dotaz, da se nejak naprogramovat, aby pic spojil dva piny? Udelal je po nejakou dobu pruchozi, pak ze zas odpojil..

Dik za rady.

Napsal: 02 dub 2010, 21:24
od ZdenekHQ
Nebude to třeba tím, že nezapojenej pin je z principu v LOG1, čili přivedením napětí se nic nezmění ?

Napsal: 02 dub 2010, 21:35
od bluepatch
No to sem si rikal taky jestli sem to neprohodil.. ale v pic simulatoru to jede, to je jedna vec. Ono to v realu zapnu a zacne to po sekundach hazet jednicky..takze by to mohlo byt prohozeny, ale po privedeni napeti to neprestane..

Napsal: 02 dub 2010, 22:03
od Mendor
Celý porta máš nastaven jako A/D vstup, Nastav ANSEL = 0;

Napsal: 02 dub 2010, 22:08
od bluepatch
To jsem mel taky a stejne to neslo..potom sem googlil a v jednom foru sem nasel: ANSEL = 0 makes the I/O digital

Napsal: 02 dub 2010, 22:13
od bluepatch
jeste jeden dukaz z datasheeetu:

bit 7-0 ANS<7:0>: Analog Select bits
Analog select between analog or digital function on pins AN<7:0>, respectively.
1 = Analog input. Pin is assigned as analog input(1).
0 = Digital I/O. Pin is assigned to port or special function.

Napsal: 03 dub 2010, 08:46
od Andrea
Co furt řešíš, vždyť ti to Zdenda už řekl. Na nezapojeném pinu je log.1, když ho připojíš na 5V, tak tam taky bude log.1, takže ho uzemňuj, tím tam uděláš log. 0 a přestane to vysílat.

Napsal: 03 dub 2010, 11:55
od Bernard
Omluvte o/t, ale tohle mě překvapilo, že zas vidím "goto" v programu. Po skončení éry bejziků se to považovalo za téměř smrtelný hřích. Tak jestli ten come-back nebude tím všeobecným úpadkem mravů. :(

Napsal: 03 dub 2010, 12:15
od rnbw
Tu je to prasacina ako hrom, ale obcas sa to pouziva.

Napsal: 03 dub 2010, 12:41
od bluepatch
Dobry, diky..bylo to tim, ale vecer uz sem to nemoh zkusit.. Vim ze goto je prasarna, ale tohle je jen testovaci program a timto jsem to nejrychleji zacyklil..

Btw, odpoved na moji otazku s propojenim dvou pinu 'natvrdo' nikdo nevi? Dik.

Napsal: 03 dub 2010, 12:50
od rnbw
Neviem, o co je to rychlejsie ako toto:

Kód: Vybrat vše

while (1) {
        something();
}

Napsal: 03 dub 2010, 13:11
od Atlan
goto skor najskor pretecie zasobnik...spravit to na PC tak sapadne win..teda teoreticky.....

Napsal: 03 dub 2010, 13:13
od rnbw
:?:

Napsal: 03 dub 2010, 14:04
od Andrea
bluepatch píše:Btw, odpoved na moji otazku s propojenim dvou pinu 'natvrdo' nikdo nevi? Dik.

Natvrdo, zkus tvrdou pájku milej Lojzo.

Napsal: 03 dub 2010, 15:29
od bluepatch
a jak udelam if neco, rozletuj spoj ? hmhm