Jak přistupovat v HI-TECH compileru na GPIO

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
markoni
Příspěvky: 2312
Registrován: 30 říj 2006, 00:00
Bydliště: Poblíž Zlína
Kontaktovat uživatele:

Jak přistupovat v HI-TECH compileru na GPIO

#1 Příspěvek od markoni »

Zdravím
Mám takový zdrojový program

Kód: Vybrat vše

#include <htc.h>
#define _XTAL_FREQ 4000000
#include <PIC.h>

void main ()
{
TRIS = 0b0000;   
GPIO;   
 unsigned  int i;
 while (1)
 {
GP1='1';
GP0='0';
for (i=0;i<36000;i++) __delay_ms(1000);
GP1='0';
GP0='1';   
for (i=0;i<2;i++) __delay_ms(1000);

}
}

na simulátoru ISIS 7 mě to funguje ale v reálu PIC10F206 ne kde dělám chybu? díky
Čím víc dál se snažím se učit tím poznávám že nic nevím .Poslední 2 roky mám kvadruparézu
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#2 Příspěvek od frpr666 »

Zjednoduš program a vyzkoušej zda naměříš na pinu +5V.
Dále se podívej po kompilaci do *.lst souboru na TRIS a GPIO, zda se tam zapisuje hodnota.

Kód: Vybrat vše

void main()
{
TRIS = 0x00;
GPIO = 0x0f;
for(;;)
{
};
}
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#3 Příspěvek od Andrea »

markoni píše:for (i=0;i<36000;i++) __delay_ms(1000);

delay_ms(1000) počká jednu sekundu a to celé se opakuje 36000-krát, to znamená, že program nastaví dva piny a pak 10 hodin nic nedělá. A co ti to nedělá v reálu? :) Nemáš třeba v reálu oscilátor 1MHz a nečeká to 40 hodin?
Uživatelský avatar
markoni
Příspěvky: 2312
Registrován: 30 říj 2006, 00:00
Bydliště: Poblíž Zlína
Kontaktovat uživatele:

#4 Příspěvek od markoni »

Zdravím
Mě jde o nahození logické 1 na GP1 aby si mi rozsvítila ledka co mám na začátku toho programu.Pochopitelně když to dávám na simulátor tak do cyklu for dám menší hodnotu díky
Čím víc dál se snažím se učit tím poznávám že nic nevím .Poslední 2 roky mám kvadruparézu
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#5 Příspěvek od Andrea »

No určitě tam nemá být GP1='1'; '1' je ASCII znak 1 tj. 0x31, takže správně tam bude spíš GP1=1;
A co asi udělá GPIO; ? Nechybí tam něco? A není potřeba vypnout komparátor aby fungovaly GP0 a GP1?
A základní předpoklad je správně zvolený procesor v konfiguraci projektu.
Uživatelský avatar
markoni
Příspěvky: 2312
Registrován: 30 říj 2006, 00:00
Bydliště: Poblíž Zlína
Kontaktovat uživatele:

#6 Příspěvek od markoni »

Možná jsem už otravný koukal jsem se do datašítu ale nevím jak se vypne komparátor v jakém registru? díky
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#7 Příspěvek od MiloPS3 »

staci si najit "COMPARATOR MODULE" a pak "COMPARATOR IS ON /OFF"
diky

me to v simulatoru funguje , kdyz vypnu komparator a spravne nastavuju log. hodnotu
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#8 Příspěvek od frpr666 »

hele zkus toto:

Kód: Vybrat vše

main()
{
CMCON0 = 0xf7; //0b11110111 default settings+comparator off
TRIS = 0x00;    // all I/O are outputs
GPIO = 0x0f;  // set I/O
for(;;){};       // do nothing forever
}
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“