PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umstieg von AT90S85 auf ATmega16 geht nicht, benötige Tipp



25.09.2004, 21:12
Hallo, vielleicht kann mir einer den Tipp geben, damit ich weiter komme.
Ich habe ein Entwicklungsbord ( Funkamateur, Reihe Bascom von Roland Walter ) und dieses für einen AT90S8535 angepasst. Die Baugruppe läuft mit dem AT90S8535 ohne Probleme. Da mir aber der Programmspeicher zu eng wurde, wollte ich auf den ATmega16 umsteigen. Die Unterschiede ( Interner Oszillator 1MHz, TWI fest auf PortC0 und 1 ) habe ich beachtet. Ich kann den M16 auch programmieren. Ein zweiter M16 schweigt auch.
Aber selbst ein 3-zeilen-Programm: nur die def-Instruktion, LCD-Konfigiration und eine Textausgabe auf das LCD-Display laufen nicht. Da ich den internen Oszillator benuze habe ich keine Instruktion zur Quarzfrequenz im Programm. Mit läuft es aber auch nicht.
Wo habe ich was Kleines aber Prinzipelles übersehen?
Im Moment weiss ich mir keinen Rat mehr.
Tschüss
Hannes

25.09.2004, 22:43
Ich, Hannes, bin es noch mal selbst.
Die Hardware ist in Ordnung. Der M16 arbeitet ( eine LED blinkt ). Das LCD-Display 20*4 ist auch in Ordnung ( nochmals den 8535 reingesteckt ) und das alte Prg geladen. Das Display liegt auf PC2 bis PC7. Beim 8535 läuft das Display als 20*4. Beim M16 habe ich auch die Variante 20*4A probiert. Das Display zeigt keinen Text nur zwei Zeilen alle Pixel und zwei Zeilen nichts.
Als Bascom habe ich 1.11.7.4.
Hat jemand noch eine Idee?
Tschüss
Hannes

Florian
25.09.2004, 22:46
Hi Hannes!
Wenn auf dem Display 2 Linien und 2 mal nichts zu sehen sind, dann heißt das, dass das Display keine Signale bekommt!

Florian
25.09.2004, 22:51
Also, wenn ich das richtig sehe sind die beiden µC's Pinkompatibel!
Hast Du vielleicht die interne Quarzfrequenz falsch eingestellt?

Michael
25.09.2004, 22:52
Hallo Hannes,
die 2 Zeilen alle Pixel zeigt das Display, weil es noch nicht initialisiert wurde.
Hast du die Ports in Options->Compiler->LCD richtig angegeben?
Die Taktfrequenz $crystal = 1000000 solltest du auch angeben. Sämtliche Zeiten hängen davon ab.
Gruß, Michael

26.09.2004, 09:38
Hallo Florian und Michael,
ist nett, dass Ihr mit überlegt. Es läuft noch nicht. Der M16 läuft noch mit seinem internen RC-Oszillator wie er ab Werk eingestellt ist. Ich habe auch nichts an den Fuse-Bits probiert und habe mehrer M16 vor Ort. Ich kann den 8535 ins Board stecken und im Programm die def-Zeile und die Quarzfrequenz anpassen. Dann läuft es: LED am Port PD6 blinkt und LCD ( PC2 bis PC7 ) zeigt den Text an. Für mich das sichere Zeichen, dass in der Hardware und im Syntax alles formal in Ordnung ist. Die LCD-Configurations-Zeile habe ich auch heraus genommen und nehme für beide Prozessorvarianten die Default-LCD-Konfiguration aus den Compiler-Optionen ( um Schreibfehler auszuschliessen ). Ich habe jetzt auch noch ein 16*1-Display geprobiert. Das gleiche Problem.
Ich stosse in der BASCOM-Hilfe aber immer wieder auf die Stelle, dass es bei 20*4a und 16*1a nBesonderheiten gibt. Mit den AT90S2313 bis 8535 habe ich schon reichlich Baugruppen realisiert und keine Probleme. Da dies hier mein erster versuch mit dem M16 ist, vermute ich einen Denkfehler bei mir. Beim M16 kann I2C ja nur an PC0 und PC1 angeschlossen werden. Gibt es beim M16 unter BASCOM eine ähnliche Einschränkung ?
Muss ich den Befehle $LCD=&Hadress benutzen? Mir ist da aber die Zuordnung der Adressen ( &H8 ... &H60 ) unklar. Da wird dann auch der Anschluss am Port D gefordert. Dies werde ich jetzt probieren.
Tschüss
Hannes

26.09.2004, 10:08
Display reagiert !!!
Ich ( Hannes ) habe jetzt die DB4 bis DB7 vom Display auf PD4 bis PD7 gelegt, wie es in der BASCOM-Hilfe unter dem Befehl $LCD angegeben ist. RS und E habe ich an PB0 und PB1 gelegt. Das Prg entsprechend angepasst und nun zeigt das 16*1-Diaplay den Text an.
Wenn mir noch jemand den Tipp zu den Adressen &H8 ... &H60 geben kann, dann sehe ich keine Probleme mehr.
Florian, Dein Hinweis, dass dann ( wenn nur alle Pixel ON bzw. OFF keine Daten zum LCD kommen ) keine Daten zum Display kommen, hat mir schon die richtige Richtung angedeutet, Danke.
So jetzt erst Mal Luft holen.
Tschüss
Hannes

Florian
26.09.2004, 11:07
Hi Hannes!
Herzlichen Glückwunsch! :o)
Dann kanns ja jetzt losgehen mit proggen, ne!? ;o)
Viel Spass!

harryup
26.09.2004, 14:38
hi,
an sich kannste deine software vom 85er ohne probleme auf den mega16 rübernehmen, aber beachte, dass portc im auslieferungszustand das (enablede) JTAG-interface belegt, also das fusebit jtagen aufgehoben wird.
dann funtzt's auch mit portc.
gruss, harry

Florian
26.09.2004, 14:45
Hi harry!
Was bitte ist das JTAG-Interface?

harryup
26.09.2004, 16:20
ist'n interface zum programmieren und/oder onchip-debugging, hast zugriff auf alle register, eeprom etc. wurde beim 'sprung' von mega160er serie auf mega16 implementiert, ist aber von werk aus auf portc enabled, weshalb der ganze kruscht, der portc anspricht, erstmal nicht läuft.
gruss, harry

Florian
26.09.2004, 16:26
Aha, danke!
Wusste ich noch garnicht!
Muss ich dann bei meinem mega16 auch mal umstellen! ;o)

Jonas2
28.09.2004, 10:37
Danke Harry,
so langsam hatte ich auch die Vermutung, dass ich in dieser Richtung im Datenblatt suchen muss. Natürlich steht fast alles und richtig im Datenblatt. Aber man liest dann doch von den 300+ Seiten zuerst die, die einem wichtig erscheinen.
Auch allen anderen nochmals Danke
Tschüss
Hannes

andysafe
22.10.2004, 11:15
Bei manchen 4 zZeilen Diplay sind aber auch 2 Controller drauf. d.h es gibt auch eine E2 Leitung.
In einem solchen Fall muß man in BASCOM die Variable "___lcdno" definieren als Bit
und bei Config LCD auch den E2 port mit angeben .
Programmiert wird dann wie folgt

___lcdno=0 '1. Controller
initlcd
LCD " Hallo"

___lcdno=1 '2. Contoller
initlcd
lcd "Welt"