mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Neuling suche die Erleuchtung!


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
};
}

Autor: Tishima (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

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

gruß,
Bjoern

Autor: Dalai Lama (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: crazy horse (Gast)
Datum:

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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke! Für eure Hilfe!

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

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Power (Gast)
Datum:

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

Autor: Tobias Paul (Gast)
Datum:

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

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.