*murmel* einfach ignorieren..... einfach iiiignorieeeeren */murmel*
Druckbare Version
*murmel* einfach ignorieren..... einfach iiiignorieeeeren */murmel*
Hallo
Kannst du denn an den Pins von Portc eine Spannung messen. Spannung an AVCC korrekt ? Kabelbruch ?
Ansonsten einfach mal ein kleines Testprogramm schreiben und jeden PIN einzel prüfen bis zum Display, ist ja nicht der Aufwand.
MFG
Dieter
es ist eine feststellung, das bascom unvollkommen ist.
der starke avr-fan hat nach einigen wochen keinerlei möglichkeiten mehr, den avr damit auszureizen, weil alles nur eine vorgebene stupide eingabe von basicworten sind die man im nachhinein nicht mehr beeinflussen kann wie bei winavr-c und fastavr-basic (erzeugt 100% asm-code für den assembler des entwicklerproduktes > avr-studio) .
durch bascom verliert der avr seinen inneren reiz und das ist schade.
mfg pebisoft
ich hab jetzt ein zweites display getestet, von dem ich weiss, dass es funktioniert. negativ. ich werde wohl mal alle pins einzeln testen, das wird das beste sein.
Ich fürchte, das ist der letzte verbleibende und erfolgversprechende Weg. Irgendwo hängt es nun mit Sicherheit an der Harware. Viel Glück!Zitat:
Zitat von Goblin
Grüße
Henrik
so, also ich hab 6 leds an den port gehängt (PC0..5) auf masse gehängt (ja, ich weiss, auf +5V kann ich mehr leistung hängen) und ein lauflicht geproggt, was VOR dem eigentlichen LCD-Prog abläuft. Hier der Code:
Die LEDS (bzw natürlich der controller) machen nun folgendes:Code:$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
'Config Portc = Output
'Config Portd = Output
'Config Portb = Output
Portc = 00000000
Wait 1
Portc.0 = 1
Wait 1
Portc.1 = 1
Wait 1
Portc.2 = 1
Wait 1
Portc.3 = 1
Wait 1
Portc.4 = 1
Wait 1
Portc.5 = 1
Wait 1
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 1
Config Lcd = 16 * 2
Config Lcdpin = Pin , E = Portc.1 , Rs = Portc.0 , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2
Config Lcdmode = Port ' LCDmode = Pin wurde auch mit negativem Resultat getestet
Config Lcdbus = 4
Initlcd
Wait 1
Cls
Lcd "hello world"
nach start des Programms blitzen ein paar von ihnen kurz auf. ich denke das ist die stelle wo das lcd initialisiert wird. dann leuchten alle mit 1 sec. verzögerunge dazwischen hintereinander auf. wenn alle an sind gehen später (ca 1 sec später) alle aus bis auf die an c3 und 4. . dann gehen eine sec später alle wieder an und verlöschen nach 10 sec flackernd. dann wird das prog neu gestartet.
fusebitz:
Bild hier
wie gehabt...
was hab ich an den bits falsch eingestellt?
ICh hab mir dein Programm mal angesehen, wegen der Interpretaion deiner LED:
Jetzt seh' ich mir nochmal genauer das LCD-Zeugs an, erwarte allerdings keine Weisheiten.Code:L_0x0026:
LDI r24,0x5F
OUT SPL,r24 ; Stack
LDI YL,0x20
LDI ZL,0xB8
MOV r4,ZL ; Frame
LDI r24,0x04
OUT SPH,r24 ; Stack
LDI YH,0x04 ; Softstack
LDI ZH,0x03 ; Softstack
MOV r5,ZH ; Frame
;-----------------------------------------------------------------
; clear SRAM
LDI ZL,0xFE
LDI ZH,0x03
LDI XL,0x60
LDI XH,0x00
CLR r24
L_0x0044:
ST X+,r24
SBIW ZL,0x0001
BRNE L_0x0044 ; clear SRAM
;-----------------------------------------------------------------
LDI r24,0x06
OUT UBRRL,r24 ; $BAUD
LDI r24,0x00
OUT UBRRH,r24 ; $BAUD
LDI r24,0x18
OUT UCSRB,r24
;-----------------------------------------------------------------
RCALL L_0x00D4 ; INITLCD
;-----------------------------------------------------------------
CLR r6 ; clear ERR
;-----------------------------------------------------------------
;
;-----------------------------------------------------------------
LDI r24,0x00
OUT PORTC,r24 ; Portc = 00000000
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
SBI PORTC,PC0 ; portc.0 = 1
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
SBI PORTC,PC1
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
SBI PORTC,PC2
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
SBI PORTC,PC3
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
SBI PORTC,PC4
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
SBI PORTC,PC5
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
; Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 1
;-----------------------------------------------------------------
LDI r24,0x87 ; URSEL
OUT UBRRH,r24
;-----------------------------------------------------------------
RCALL L_0x00D4 ; INITLCD
;-----------------------------------------------------------------
LDI ZL,0x01
LDI ZH,0x00
RCALL L_0x00C2 ; WAIT 1
;-----------------------------------------------------------------
RCALL L_0x00B8 ; CLS
;-----------------------------------------------------------------
LDI ZL,0xEA
LDI ZH,0x01
RCALL L_0x00AC ; LCD "hello wordl"
;-----------------------------------------------------------------
; END
;-----------------------------------------------------------------
CLI
L_0x00AA:
RJMP L_0x00AA ; loop
;----------------------------------------------------------------
Schreib einfach mal unter das Lcd "hello world"
Waitms 5000 und mach ne schleife in das Programm sonst kann das ganze doch nicht funzen! Denkt doch mal selbst drüber nach! Probieren geht über studieren!
Achso dein FUSEbits problem.... unter artikel hier im Forum steht wie man die Bits setzt. https://www.roboternetz.de/phpBB2/ze...trag.php?t=849
Hoffe du hast den Atmel nich schon kaputt geflasht...!
Achso uns hier mal nen ganz einfaches TUT für Bascom:
http://staff.ltam.lu/feljc/Documents/AVR_HowTo.doc
anschauen lohnt!
Mfg Timo
@ picnick: was wolltest du mir mit dem assemblercode sagen? :)
@ omit: was bringt mir ne schleife? ich meine warum sollte das lcd nicht ihne schleife funzen? das hat afaik nen ram, in das geschrieben wird und der text bleibt so lange, bis es nen neuen gibt oder der saft abgedreht wird.
fusebits: ja, die seite kenn ich schon auswendig... muss noch mal ein wenig mit den fb's experimentieren. sag mal bitte was ich AUF KEINEN FALL tun darf. (den reset-pin nicht als i/o-pin einstellen weiss ich. sonst ists vorbei mit isp).
das howto: habs gesaugt und werds mal anschauen! danke!
es gibt 4-zeilen-lcd, die 2 controller drauf haben und die dann einzeln aktiviert werden müssen.
mfg pebisoft
Ja, die haben dann aber auch zwei E Pins. Ist hier nicht der Fall.Zitat:
Zitat von pebisoft
Henrik
Bitte kontrolliert mich, aber ich glaube, das LCD über nimmt die daten an der falling edge von E, BasCom geht aber von rising aus
Wenn das wahr ist, kannst du einen Inverter dazwischen tun ?
ja, kann ich später mal probieren. nen einfachs cmos NAND sollte ja reichen
Nochmal nachgeschaut, nun bin ich vollkommen verwirrt. Ich glaub, das war Blödsinn. Aber egal, schlimmer kann's nicht werden.
ja, stimmt. gefunzt hats nicht. aber nette idee! ich könnte mich auch mal in einen eimer kernseife stellen, die zeilein den quelltext einfügen und britney spears dazu hören. vielleicht gehts dann? :)Code:'bubbidiblub
Entschuldige, tut mir leid :oops:
Letzter Versuch für's Erste: haben beide den gleichen GND ?
ja! :) sorry, wollt dich ned bashen, weiss es doch selber ned besser! :)
Hallo
Verpass dem AVR mal Stützkondesatoren 100 nF an VCC & AVCC, jeweils nach Masse.
Nächster Schritt. Stelle das LCD Display "von hand ein". ist ja auch nicht die große Sache. Schmeiß alle LCD Befehle raus.
MFG
Dieter
was meinst du mit "von hand einstellen"? die bitmuster am port quasi selber erstellen? das kann's doch auch ned sein.... das dauert doch ewig und 3 tage
Also du stellst die Fusebits genauso ein wie auf dem Bild.
Wenn du das gemacht hast dan kompilierst du diesen Code.
Dan schreibst du ihn in dein Avr. Und wenn es dan nicht geht liegt es entweder daran das du die Ports falsch hast oder es falsch verkabelt hast.
http://www.mikrocontroller.net/tutorial/lcd
genau nach diesem schema und nicht anders.
Und dan funzt das Display mit diesem Code.
mfg TimoCode:'$LCD1
$crystal = ???????? 'Das is das einzige was du noch einstellen musst.
Config Lcd = 16 * 2
Config Lcdpin = Pin , E = Portc.1 , Rs = Portc.0 , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2
Config Lcd = 20 * 2 ' Ist das die richtige größe?????????????
Cls ' CLS = Clear and Reset LCD-Display!
Cursor Blink ' CURSOR blinkt!
Lcd "Hello world!" ' erste Zeile!
Locate 2 , 1 ' Cursor auf 2 Zeile, erstes Zeichen!
Lcd "LCD-Test"
End
@Omit
so langsam reißt mir hier der Gedulsfaden. Das haben wir doch schon alles durchgekaut bis zum Erbrechen. Da wir (fast alle) hier wissen, daß diese Metthode zum Erfolg führt und Goblin nach anfänglicher Forenkonfusion ja auch, soweit sich das aus der Ferne beurteilen läßt. ganz brav umgesetzt hat, bleibt nur noch anzunehmen, daß es hier ein Fehlerteufelchen gibt, daß sich nicht per "Ratschlag" auschalten läßt.
Mein letzter Rat ist: Alles auseinander rupfen, einmal um den Block spazieren gehen und dann ausgeruht mit einer Minimalkonfiguration neu zusammenstöpseln. Hat bei mir bisweilen in solchen Situationen geholfen.
Viele Grüße
Henrik
@hrei
Mhh... wende meinst...!
Manchen leuten kann mans nicht oft genug sagen.
Und wenn man von so einem wie dir für hilfe angeblafft wird (siehe oben),
dan sieh zu wie du dir alleine hilfst falls du mal nen problem haben solltest.
Ich haben fertig.
also ich glaub ich gebs dann erstmal auf. kommt mir zwar alles komisch vor aber was solls. vielleicht liegts ja am steckbrett... whatever. ich bau mir sowieso irgendwann wenn mein gesichtsbräuner endlich da is ne experimentierplatine und dann wird das prob entweder verschwunden sein oder immer noch da sein. und letzteres is mir dann auch egal! :)
danke für eure hilfe und einigen für ihr verständnis. hab ehrlich alle eure tipps und ratschläeg befolgt. leider isses nix geworden.
So, ich bin wieder am Ball. Ich hab das Experimentierboard so weit fertig, der Atmega lässt sich brav brennen und so. (Auch meinen alten verfuseten hab ich per quarzoszi wieder hinbekommen). Nur das LCD macht immernoch die gleichen Mucken. Kann mal einer von euch nen LCD durchmessen. Interessieren würd mich der Widerstand zwischen RS und DB 4 - DB 7 und zwischen E und DB 4 - 7. Weil da bei mir IMHO einige Anomalitäten sind.... Ich mess da teilweise nen nicht gerade hohen Widerstand..