Forum: Mikrocontroller und Digitale Elektronik lcd_init() setzt ICF1


von F. P. (pl504)


Lesenswert?

Habe das Problem, daß beim Aufruf von lcd_init() ICF1 = 1 gesetzt wird 
(im Simulator).

Die Testdatei beinhaltet lediglich:
1
// -------------------------------------------------------------------
2
// Projekt : LCD-Test
3
// Taktrate: 8 MHz
4
// Prozessor: ATtiny2313
5
// -------------------------------------------------------------------
6
7
#include <avr/io.h>    // Definitionen für den ATtiny2313
8
#include "lcd-routines.h"
9
10
int main(void) {
11
    lcd_init();        // LCD-Initialisierung
12
    lcd_setcursor(0,1);    // Cursor auf erstes Zeichen in der ersten Zeile
13
    lcd_string("Test: ");
14
15
    while(1);
16
}

Die LCD-Routinen habe ich 1:1 aus dem Tutorial hier übernommen. 
Lediglich die Pinkonfiguration ist in der .h angepaßt:
1
//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
2
#define LCD_PORT      PORTD
3
#define LCD_DDR       DDRD
4
#define LCD_DB        PD0
5
 
6
//  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
7
#define LCD_RS        PD4
8
 
9
//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
10
#define LCD_EN        PD6
Aber daran kann es doch nicht liegen?

Weiß jemand, was hier los ist?

von Peter D. (peda)


Lesenswert?

F. P. schrieb:
> Habe das Problem, daß beim Aufruf von lcd_init() ICF1 = 1 gesetzt wird
> (im Simulator).

Und warum ist das ein Problem?

Enable einfach nicht den dazu gehörenden Interrupt und gut is.

von F. P. (pl504)


Angehängte Dateien:

Lesenswert?

Das ist deshalb ein Problem, weil ich ICF1 schon anderweitig brauche.

Habe jetzt im Disassembler ein wenig debuggt und den Punkt gefunden, bei 
dem ICF1 gesetzt wird. Das Verhalten ist mir trotzdem völlig unklar. 
Beim mega8 gibt es das Problem nicht.

Kann jemand bitte mal in das Projekt schauen? Möglicherweise findet sich 
dann der Fehler.
Breakpoint im Disassembler bei Adresse 0x38. Beim nächsten Einzelschritt 
ist ICF1 gesetzt.

Compiler: WinAVR aktuellste Version
Umgebung: AVR Studio 4.13 528

von spess53 (Gast)


Lesenswert?

Hi

>Kann jemand bitte mal in das Projekt schauen? Möglicherweise findet sich
>dann der Fehler.

#define LCD_EN        PD6

PD6 ist auch ICP

MfG Spess

von F. P. (pl504)


Lesenswert?

Oh Mann, das ist ja wirklich peinlich. ;) Ich war die ganze Zeit auf PD5 
aus, aber mein Zähler-Eingang ist ja PD6! Danke für den Hinweis, 
manchmal sieht man den Wald vor Bäumen nicht. :)

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.