www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Komisches Verhalten ATmega16 + Fleury LCD (ständig reset?)


Autor: B-Box (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich suche den ganzen Tag schon an einem Fehler bei meiner Schaltung oder 
im Programm. Ich habe an einem ATmega16 ein LCD an PORTA angeschlossen. 
Ich bekomme aber keine Ausgabe und anscheinend immer einen reset des 
AVR!
Resetpin ist mit 10k gegen Vcc=+5V angeschlossen. Beide GND-pins sind 
auf GND gelegt.

Folgend die Anschlussbelegung:

PA0 -- D4
PA1 -- D5
PA2 -- D6
PA3 -- D7
PA4 -- RS
PA5 -- R/W
PA6 -- E

Das Diplay liegt an 5V, Kontrast maximal (GND), D0-D3 auf GND.
ATmega16 ist mit einem 8MHz Quarz + 22pF Kondensatoren versehen.

An PC7 ist eine LED angeschlossen, sobald ich das Programm auf den 
Controller lade, fängt die LED an zu blinken! Auf dem Diplay erscheint 
nur ein Balken über die ganze Zeile.
Ich nehme mal an, dass das Blinken durch einen Reset zu erklären ist. 
das komische, sobald ich Vcc vom Display trenne, hört das Blinken auf, 
verbinde ich das Display wieder, blinkt die LED auch wieder. ???


Auszug aus der lcd.h von Fleury:
#define XTAL 8000000              /**< clock frequency in Hz, used to calculate delay timer */


/**
 * @name  Definition for LCD controller type
 * Use 0 for HD44780 controller, change to 1 for displays with KS0073 controller.
 */
#define LCD_CONTROLLER_KS0073 0  /**< Use 0 for HD44780 controller, 1 for KS0073 controller */

/** 
 *  @name  Definitions for Display Size 
 *  Change these definitions to adapt setting to your display
 */
#define LCD_LINES           2     /**< number of visible lines of the display */
#define LCD_DISP_LENGTH    16     /**< visibles characters per line of the display */
#define LCD_LINE_LENGTH  0x40     /**< internal line length of the display    */
#define LCD_START_LINE1  0x00     /**< DDRAM address of first char of line 1 */
#define LCD_START_LINE2  0x40     /**< DDRAM address of first char of line 2 */
#define LCD_START_LINE3  0x14     /**< DDRAM address of first char of line 3 */
#define LCD_START_LINE4  0x54     /**< DDRAM address of first char of line 4 */
#define LCD_WRAP_LINES      0     /**< 0: no wrap, 1: wrap at end of visibile line */


#define LCD_IO_MODE      1         /**< 0: memory mapped mode, 1: IO port mode */
#if LCD_IO_MODE
/**
 *  @name Definitions for 4-bit IO mode
 *  Change LCD_PORT if you want to use a different port for the LCD pins.
 *
 *  The four LCD data lines and the three control lines RS, RW, E can be on the 
 *  same port or on different ports. 
 *  Change LCD_RS_PORT, LCD_RW_PORT, LCD_E_PORT if you want the control lines on
 *  different ports. 
 *
 *  Normally the four data lines should be mapped to bit 0..3 on one port, but it
 *  is possible to connect these data lines in different order or even on different
 *  ports by adapting the LCD_DATAx_PORT and LCD_DATAx_PIN definitions.
 *  
 */
#define LCD_PORT         PORTA        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    0            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    1            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    2            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    3            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       4            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       5            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        6            /**< pin  for Enable line     */

Die Main:
#include <avr/io.h> 
#include <stdlib.h>
#include "lcd.h"

int main(void)
{
  
  DDRC=0xFF;
  PORTC |= (1<<PC7);
  
  lcd_init(LCD_DISP_ON);
  lcd_clrscr();
  lcd_home();
  lcd_puts("Line 2");
   
  while(1);
}

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
B-Box schrieb:
>
>
>   DDRC=0xFF;
>   PORTC |= (1<<PC7);
>
>


wozu ist das gut ? LCD hast du an PORTC oder PORTA ?

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas R. schrieb:
> B-Box schrieb:
>>
>>
>>   DDRC=0xFF;
>>   PORTC |= (1<<PC7);
>>
>>
>
>
> wozu ist das gut ? LCD hast du an PORTC oder PORTA ?

ahh, ich sehe, es sollte für die LED sein - klemm die mal da ab, 
kommentiere auch die zwei zeilen weg und teste nochmal

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für seine LED......

Reicht das Netzteil - wie sieht dies aus?

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Otto schrieb:
> Für seine LED......
>
> Reicht das Netzteil - wie sieht dies aus?

deswegen meinte ich er soll die led auch abklemmen, und die display 
beleuchtung

Autor: B-Box (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Fehler gefunden!!! :-)

Es lag wohl daran, dass ich den AVccPin nicht angeschlossen hatte. Jetzt 
liegt er auf 5V und das Display funktioniert jetzt!

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.