mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit AVR-CTRL V 1.0


Autor: Chrisi01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

hab folgendes Programm:

#asm
    .equ __lcd_port=0x15
#endasm
#include <mega8535.h>
#include <lcd.h>

typedef unsigned char byte;

/* table for the user defined character

   arrow that points to the top right corner */
flash byte char0[8]={
0b0000000,
0b0001111,
0b0000011,
0b0000101,
0b0001001,
0b0010000,
0b0100000,
0b1000000};
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
void main(void)
{
DDRA = 0x00;
lcd_init(16);
define_char(char0,0);
lcd_gotoxy(0,0);
lcd_putsf("Enter Message");
lcd_gotoxy(1,1);
if (PINA.7)
{
lcd_putsf("7");
}
if (PINA.6)
{
lcd_putsf("6");
}
if (PINA.5)
{
lcd_putsf("5");
}
if (PINA.4)
{
lcd_putsf("4");
}
if (PINA.3)
{
lcd_putsf("3");
}
if (PINA.2)
{
lcd_putsf("2");
}
if (PINA.1)
{
lcd_putsf("1");
}
if (PINA.0)
{
lcd_putsf("0");
}
while (1);
}

leider klappt das nicht er sollte doch in der 2. Zeile auf dem 2 Platz 
den Buchstaben anzeigen von der Taste die gedrückt wird aber es tut sich 
eifnach nix es kommt nur Enter Message aber Tasten kann ich drücken wie 
ich will es tut sich nix wer weiß rat?

mfg

Chris

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich Prozessor wäre, würde ich nach dem Reset mal schnell durch die 
main() rennen, feststellen, das keine Taste dedrückt ist und mich dann 
ewig in der while(1); langweilen...

Gruß asu Berlin
Michael

Autor: Chrisi01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi danke bin ja sau dumm ;)

habs jetzt so gemacht:

#asm
    .equ __lcd_port=0x15
#endasm
#include <mega8535.h>
#include <lcd.h>
#include <delay.h>

typedef unsigned char byte;

/* table for the user defined character

   arrow that points to the top right corner */
flash byte char0[8]={
0b0000000,
0b0001111,
0b0000011,
0b0000101,
0b0001001,
0b0010000,
0b0100000,
0b1000000};
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
void main(void)
{
while(1)
{
DDRA = 0x00;
lcd_init(16);
define_char(char0,0);
lcd_gotoxy(0,0);
lcd_putsf("Enter Message");
lcd_gotoxy(1,1);
if (PINA.7)
{
lcd_putsf("7");
}
if (PINA.6)
{
lcd_putsf("6");
}
if (PINA.5)
{
lcd_putsf("5");
}
if (PINA.4)
{
lcd_putsf("4");
}
if (PINA.3)
{
lcd_putsf("3");
}
if (PINA.2)
{
lcd_putsf("2");
}
if (PINA.1)
{
lcd_putsf("1");
}
if (PINA.0)
{
lcd_putsf("0");
}
delay_ms(500);
}
}

neues problem:
sobald ich eine Taste gedrückt hab fehlen einige Buchstaben oder er 
verdreht sie anscheinend willkürlich. an was kann das liegen?

mfg

chris

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

gibt es einen geheimen Grund, weshalb Du jetzt in der while-Schleife 
jedesmal die Portrichtung festlegst, das Display initalisiertst, das 
selbstdefinierte Zeichen reinschreibst und den Begrüssungstext ausgibst?
So vergeßlich sind weder AVR noch Display, daß man die da dauernt 
erinnern muß...

Zu den falschen Zeichen:
a) ich kenne AVR-CTRL nicht
b) ich kenne das Display bzw. die benutzten Bibliotheken nicht
c) ich kenne die Taktfrequenz des AVR nicht
d) ich weiß also auch nicht, ob man die Bibliothek an Display und Takt 
von Hand anpassen muß (wäre normal) oder ob das irgend so ein 
"Programmierbaukasten ist.

Vermuten würde ich ein Timingprobkem bei der Display-Ansteuerung, da 
warte vermutlich eine Funktion nicht ordentlich, bis das Display soweit 
ist.

Gruß aus Berlin
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.