Forum: Mikrocontroller und Digitale Elektronik Neuling suche die Erleuchtung!


von Daniel (Gast)


Lesenswert?

undefine Symbol delay_us(1000);

Folgender Fehler ist bei meinen Code!

Der Compiler ist CodeVison!

Kann mir bitte einer Helfen!

Vielen Dank

Daniel

/*********************************************
This program was produced by the
CodeWizardAVR V1.0.2.1b Evaluation
Automatic Program Generator
© Copyright 1998-2001
Pavel Haiduc, HP InfoTech S.R.L.
http://infotech.ir.ro
e-mail:dhptechn@ir.ro , hpinfotech@xnet.ro


Chip type : AT90S8535
Clock frequency : 8.000000 MHz
Memory model : Small
Internal SRAM size : 512
External SRAM size : 0
Data Stack size : 128
*********************************************/

#include <90s8535.h>

// Declare your global variables here
/* void delay() {
unsigned char ch1,ch2;
for(ch1=0;ch1=255;ch1++)
for(ch2=0;ch2=255;ch2++);
} */
void main(void)
{
// Declare your local variables here
unsigned char sec=0,min=0,hour=12,d;
// Input/Output Ports initialization
// Port A
PORTA=0x00;
DDRA=0xFF;

// Port B
PORTB=0x00;
DDRB=0xFF;

// Port C
PORTC=0x00;
DDRC=0xFF;

// Port D
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Output Compare
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0xFF;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Output Compare
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x1E;
TCNT1L=0x84;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

while (1)
{
// Place your code here

again:
delay(1000);

if(sec>=59)
{ min++; sec=0;

}
else
sec++;
if(min>=59)
{ hour++; min=0;
}
if(hour>=23) hour=0;
PORTA=sec;
PORTB=min;
PORTC=hour;
goto again;
};
}

von Tishima (Gast)


Lesenswert?

Moin!

Wie waers wenn Du die delay routine fuer den Compiler zugaegig machst.
Ist anscheinend "auskommentiert".

gruß,
Bjoern

von Dalai Lama (Gast)


Lesenswert?

>undefine Symbol delay_us(1000);
undefine Daniel!

>Folgender Fehler ist bei meinen Code!
Wo folgt der Fehler!

>Der Compiler ist CodeVison!
Persönliches Pech!

>Kann mir bitte einer Helfen!
Nein!

>Vielen Dank
Bitte! Gern geschehen!

von crazy horse (Gast)


Lesenswert?

#include <delay.h>
dürfte das Problem beheben :-)

von Daniel (Gast)


Lesenswert?

Danke! Für eure Hilfe!

Nur für den Dalai Lama habe ich keine Erleuchtung übrig! :D

von Power (Gast)


Lesenswert?

Wird die Delay-Funktion bei CodeVision anders geschrieben? Bei GCC hieße 
es _delay_us(1000); (mit Unterstrich am Anfang) und der maximale Wert 
beträgt 765.

von Falk (Gast)


Lesenswert?

@ Power

>es _delay_us(1000); (mit Unterstrich am Anfang) und der maximale Wert
>beträgt 765.

Nöö, stimmt nicht. Das gilt bei 1 MHz Prozessortakt. Bei 10 MHz sind es 
nur noch 76, bei 100kHz sind es 7650. Aber DIESE Funktion gibte es SO 
nur in der libc des WINAVR. Beim Codevision Compiler ist das 
wahrscheinlich anders.

MfG
Falk


von Power (Gast)


Lesenswert?

@Falk:
Laut der Lib des WINAVR heißt es:
"The maximal possible delay is 768 us / F_CPU in MHz."
Das interpretiere ich so, dass 768 / 1MHz = 768µs sind.
Mehr als 786µs bei 1MHz geht nicht, alles was höher eingetragen wird, 
wird auf 768µs begrenzt.

von Power (Gast)


Lesenswert?

>wird auf 768µs begrenzt.
Nachtrag: deshalb macht es keinen Sinn höhere Werte anzugeben.

von Tobias Paul (Gast)


Lesenswert?

Da wären wir schon wieder beim alten Thema: The maximal possible delay 
is ...

von let (Gast)


Lesenswert?

Beim Codevision heißt die Funktion 'delay_us()' und ist
in der <delay.h> deklariert.
Die Funktion akzeptiert Werte bis 65535 und wartet auch
dementsprechend.

 - Michael


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.