meloun
September 12, 2012, 1:15pm
1
Zdravím
Trochu se chci ponořit do tajů HI-TECH compileru a narazil jsem na tento problém.
#include <htc.h>
void main ()
{
_delay(1); // jak dlouho to trvá při 4 MHz ?
DDRG |= 1<<GPIO,1; // jak nastavit pin jako výstup?
GPIO |= 1<<GPIO, 1;
}
a výsledek po kompilaci
Clean: Deleting intermediary and output files.
Clean Warning: File “C:\Program Files\Microchip\casovac.p1” doesn’t exist.
Clean: Done.
Build C:\Program Files\Microchip\casovac for device 12C509A
Using driver C:\Program Files\HI-TECH Software\PICC\9.80\bin\picc.exe
Executing: “C:\Program Files\HI-TECH Software\PICC\9.80\bin\picc.exe” --pass1 “C:\Program Files\Microchip\casovac.c” -q --chip=12C509A -P --runtime=default,+clear,+init,-keep,+osccal,-download,-resetbits,-stackcall,+clib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 --double=24 --float=24 --addrqual=ignore -g --asmlist “–errformat=Error %n] %f; %l.%c %s” “–msgformat=Advisory%n] %s” “–warnformat=Warning %n] %f; %l.%c %s”
Error [192] C:\Program Files\Microchip\casovac.c; 6.1 undefined identifier “DDRG”
********** Build failed! **********
díky všem
administrator: přejmenováno z "PIC 12C509 vs HI-TECH compiler"
MiloPS3
September 12, 2012, 4:09pm
2
Cau, v cem je problem ? vzdit to tam mas napsany
odkdy ma PIC DDRG
a u PICu si nejdriv musis nastavit TRIS …(jak nastavit pin jako výstup? )
vrtas se v tom uz 3 roky a nedokazes si nastavit ani I/O ?
B0sc0
September 12, 2012, 4:44pm
3
Myslíš něco takovýho! Je to na 16F690, ale princip je stejnej.
[code]#include <htc.h>
#define _XTAL_FREQ 4000000
void main(void)
{
TRISC = 0b00000000; //nastavení I/O 0-out 1-in
while(1)
{
__delay_ms(1); //zpoždění 1 ms
PORTC= 0b11111111; // celý portc v H
__delay_ms(1); //zpoždění 1 ms
PORTC= 0b00000000; // celý portc v L
}
}[/code]
Build D:\BMAM\CV2\CV3_LED\1\1 for device 16F690
Using driver C:\Program Files (x86)\HI-TECH Software\PICC\9.83\bin\picc.exe
Make: The target “D:\BMAM\CV2\CV3_LED\1\1.p1” is out of date.
Executing: “C:\Program Files (x86)\HI-TECH Software\PICC\9.83\bin\picc.exe” --pass1 D:\BMAM\CV2\CV3_LED\1\1.c -q --chip=16F690 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist “–errformat=Error %n] %f; %l.%c %s” “–msgformat=Advisory%n] %s” “–warnformat=Warning %n] %f; %l.%c %s”
Executing: “C:\Program Files (x86)\HI-TECH Software\PICC\9.83\bin\picc.exe” -o1.cof -m1.map --summary=default --output=default 1.p1 --chip=16F690 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist “–errformat=Error %n] %f; %l.%c %s” “–msgformat=Advisory%n] %s” “–warnformat=Warning %n] %f; %l.%c %s”
HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.83
Copyright © 2011 Microchip Technology Inc.
(1273) Omniscient Code Generation not available in Lite mode (warning)
Memory Summary:
Program space used 22h ( 34) of 1000h words ( 0.8%)
Data space used 3h ( 3) of 100h bytes ( 1.2%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
Configuration bits used 0h ( 0) of 1h word ( 0.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Running this compiler in PRO mode, with Omniscient Code Generation enabled,
produces code which is typically 40% smaller than in Lite mode.
See microchip.htsoft.com/portal/pic_pro for more information.
Loaded D:\BMAM\CV2\CV3_LED\1\1.cof.
********** Build successful! **********
meloun
September 12, 2012, 6:22pm
4
B0sc0:
Myslíš něco takovýho! Je to na 16F690, ale princip je stejnej.
[code]#include <htc.h>
#define _XTAL_FREQ 4000000
void main(void)
{
TRISC = 0b00000000; //nastavení I/O 0-out 1-in
while(1)
{
__delay_ms(1); //zpoždění 1 ms
PORTC= 0b11111111; // celý portc v H
__delay_ms(1); //zpoždění 1 ms
PORTC= 0b00000000; // celý portc v L
}
}[/code]
To chápu jak nastavit klasický port ale není mi jasné jak to nastavit u GPIO když tam napíši TRIS GPIO tak to kompiler neskousne
i když jsem to našel v dašítu k PIC12C509A díky
B0sc0
September 12, 2012, 7:13pm
5
Tak to ti nepomůžu, jsem to vždycky dělal jenom přes TRIS a zatím jsem si vystačil.
Zkus tohle, v simulaci(Isis Proteus) to funguje bez problému.
Zkoušel jsem s PIC12C509A
#include <htc.h>
#define _XTAL_FREQ 4000000UL
#include <pic.h>
__CONFIG(OSC_IntRC & WDT_OFF & CP_OFF & MCLRE_OFF);
//======================================================
void main(void)
{
OPTION = 0b11000000;
TRISGPIO = 0b00000000;
//===============================
while(1)
{
GPIObits.GP0 = 1;
__delay_ms(500);
GPIObits.GP0 = 0;
__delay_ms(500);
}
}
MiloPS3
September 13, 2012, 10:43am
7
hmm ,to mas asi nejakej divnej DS…
radsi se koukni jakej vyznam ma registr GPIO a registr TRIS, pak pochopis jak nastavit klasickej port ,a abys nemohl rict ze neumis anglicky tak tady mas ceskej preklad
B0sc0 ti to napsal ,akorad pro jinej typ…
zapis do TRISTRIS = 0b00111110; // 0x3E / 62
nebo
TRISGPIO=0b00111110; // 0x3E / 62
zapis do GPIOGPIO = 0b00000001; // 0x1 / 1
nebo
GPIObits.GP0 = 0; // 1
GPIObits.GP1 = 0; // 1
.
PIC12F675CZ.pdf (2.32 MB)