Forum: Mikrocontroller und Digitale Elektronik Hat der Atmega8 die selbe Pinbelegung wie der Atmega328p?


von int 21h (Gast)


Lesenswert?

Moin,

ich habe einen Atmega328p vor mir liegen, besser gesagt einen Arduino 
Uno rev3.
Ich würde diesen Chip ganz gerne mit meinem LCD verbinden und das 
Programm aus dem AVR-Tutorial, womit man deinen LCD ansteuert, 1 zu 1 
übernehmen.
Ich weiß dass das nicht Sinn der Sache ist, aber das sei erstmal 
dahingestellt.
Da ich nun endlich mal was auf die Reihe bringen möchte, wollte ich mich 
nicht gleich an beide Datenblätter und es nach längerer Recherche selber 
herausfinden. Für mich ist das ganze noch neuland und ich würde dabei 
wahrscheinlich auf Unklarheiten stoßen.
Vielleicht kann mir einer von euch sagen ob ich das Programm so 
übernehmen kann, damit ich mir die restliche Zeit erstmal sparen kann.

Danke schonmal

von Hubert G. (hubertg)


Lesenswert?

Ist zwar Pin-Kompatibel, das Programm musst du aber neu kompilieren und 
Registernamen und so ändern / anpassen.

von int 21h (Gast)


Lesenswert?

Hubert G. schrieb:
> Ist zwar Pin-Kompatibel, das Programm musst du aber neu kompilieren und
> Registernamen und so ändern / anpassen.

Neu kompilieren weiß ich, aber welche Registernamen meinst du?
Also muss ich mich wohl doch in beide Datenblätter reinarbeiten...

von Hubert G. (hubertg)


Lesenswert?

Wirst du wohl müssen.
Du kannst ja mal kompilieren und nach den Fehlermeldungen vorgehen.

von int 21h (Gast)


Lesenswert?

Hubert G. schrieb:
> Wirst du wohl müssen.
> Du kannst ja mal kompilieren und nach den Fehlermeldungen vorgehen.

ok danke

von Einer K. (Gast)


Lesenswert?

int 21h schrieb:
> wollte ich mich
> nicht gleich an beide Datenblätter und es nach längerer Recherche selber
> herausfinden.
Das ist ein sehr seltsamer Charakterzug...
(aus meiner Sicht)

int 21h schrieb:
> und ich würde dabei
> wahrscheinlich auf Unklarheiten stoßen.
Nicht lesen, aber doch schon wissen, was du vorfindest...
Eigentlich noch seltsamer...

int 21h schrieb:
> Also muss ich mich wohl doch in beide Datenblätter reinarbeiten...
Durchaus!

von Horst (Gast)


Lesenswert?

Von Atmel gibt es eine AN mit dem direkten Vergleich aller Bezeichnungen 
der beiden Familien für Umsteiger.
Das dürfte genau das sein, was Du suchst.
Allerdings hab ich das bei Microchip auf Anhieb nicht gefunden, mußt 
selber mal suchen.

von S. Landolt (Gast)


Lesenswert?

"replacing" dürfte das Stichwort sein, also "replacing atmega8 by 
atmega88" o.ä.

von Horst (Gast)


Lesenswert?

Ich hab die zumindest noch bei mir gefunden:

AVR094: Replacing ATmega8 by ATmega88

von EloGuy (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Das ist ein sehr seltsamer Charakterzug...
> (aus meiner Sicht)

Kannst du auch mal ohne Stänkern?

von Manfred (Gast)


Lesenswert?

EloGuy schrieb:
> Arduino Fanboy D. schrieb:
>> Das ist ein sehr seltsamer Charakterzug...
>> (aus meiner Sicht)
> Kannst du auch mal ohne Stänkern?

Wieso "Stänkern"?

Arduino Fanboy D hat sehr freundlich zurückhaltend formuliert, dass der 
Fragesteller ein fauler Hund ist.

Wie heißt das doch gleich "soll ich mir denken" oder "mich denken" - ach 
nee, "lass Andere denken"!

von int 21h (Gast)


Lesenswert?

Manfred schrieb:
> Arduino Fanboy D hat sehr freundlich zurückhaltend formuliert, dass der
> Fragesteller ein fauler Hund ist.

Wieso das den jetzt?
Ich bemühe mich schon seit heute Nachmittag das LCD zum laufen zu 
bringen.
Es ist halt nur so, das mir zu viel Input an einem Tag einfach 
durcheinander bring, habe schon genug Tabs offen (11 um genau zu sein) 
und alle handeln irgendwie vom dem, was ich vor habe... aber egal.

Ich habe mich sowieso erstmal dazu entschlossen das ganze über die 
Arduino IDE zum laufen zu bringen.
Habe bereits alles korrekt am LCD angeschlossen, LCD Datenblatt 
gecheckt, Programm ins Flash rauf gespielt, aber die 16*2 Chars leuchten 
alle schwarz, mehr passiert da nicht.

Edit: hat die Pins am LCD noch einmal gecheckt und neu gelötet.
Den Rest erledige ich dann morgen.

von Manfred (Gast)


Lesenswert?

int 21h schrieb:
> Manfred schrieb:
>> Arduino Fanboy D hat sehr freundlich zurückhaltend formuliert, dass der
>> Fragesteller ein fauler Hund ist.
>
> Wieso das den jetzt?
> Ich bemühe mich schon seit heute Nachmittag das LCD zum laufen zu
> bringen.

Vielleicht hast Du es einfach ungeschickt formuliert:

int 21h schrieb:
> wollte ich mich nicht gleich an beide Datenblätter und es nach längerer 
Recherche selber herausfinden.

Sehe es mir / uns nach, das klingt so, als dass Du keine Lust hast, die 
Datenblätter selbst durch zu arbeiten.

von Toni Tester (Gast)


Lesenswert?

int 21h schrieb:
> Ich bemühe mich schon seit heute Nachmittag das LCD zum laufen zu
> bringen. Es ist halt nur so, das mir zu viel Input an einem Tag einfach
> durcheinander bring, habe schon genug Tabs offen (11 um genau zu sein)
> und alle handeln irgendwie vom dem, was ich vor habe

Huiuiui!
Hast du schon mit Amnesty ob dieser groben Verletzung deiner 
Menschenrechte Kontakt aufgenommen?
Alternativ empfiehlt sich auch eine Bewerbung um die Auszeichnung zum 
Helden der Arbeit.

Ernsrhaft: Was erwartest du? Strukturiertes sinnvolles Vorgehen ist 
Basis jeder Entwicklung - und ja, das kostet Zeit. Wenns schnell gehen 
soll, am besten gleich fertig kaufen spart auch die Arbeit und Mühe.
Und im forum zu fragen, ob ein IC pinklmpatibel ist, kann man zwar 
machen, aber im Zweifelsfall würde zumindest ich mich nicht auf Aussagen 
von Fremden im Internet verlassen wollen, sondern selbst beim Hersteller 
recherchieren.
Aber gut...

von int 21h (Gast)


Lesenswert?

Toni Tester schrieb:
>
> Ernsrhaft: Was erwartest du? Strukturiertes sinnvolles Vorgehen ist
> Basis jeder Entwicklung - und ja, das kostet Zeit. Wenns schnell gehen
> soll, am besten gleich fertig kaufen spart auch die Arbeit und Mühe.
> Und im forum zu fragen, ob ein IC pinklmpatibel ist, kann man zwar
> machen, aber im Zweifelsfall würde zumindest ich mich nicht auf Aussagen
> von Fremden im Internet verlassen wollen, sondern selbst beim Hersteller
> recherchieren.
> Aber gut...

Hast natürlich absolut Recht.
Ich werde es mir für das nächste mal vorbehalten.

von Veit D. (devil-elec)


Lesenswert?

Warum möchte man überhaupt als Anfänger zu Beginn gleich den Controller 
wechseln? Programmiere doch erstmal den Uno mit seinem 328P. Damit bist 
du eine Weile beschäftigt. Du benötigst zur Zeit keine zusätzlichen 
Fehlerquellen. Ein Nachmittag als Zeitspanne anzugeben ist ehrlich 
gesagt nichts. Manche Fehlersuche dauert länger.

von EloGuy (Gast)


Lesenswert?

Veit D. schrieb:
> Warum möchte man überhaupt als Anfänger zu Beginn gleich den Controller
> wechseln? Programmiere doch erstmal den Uno mit seinem 328P.

Er will den Controller nicht wechseln. Er will das Tutorial für den M8 
am M328P verwenden und frägt nach Kompatiblität.

von Wolfgang (Gast)


Lesenswert?

int 21h schrieb:
> Ich habe mich sowieso erstmal dazu entschlossen das ganze über die
> Arduino IDE zum laufen zu bringen.
> Habe bereits alles korrekt am LCD angeschlossen, LCD Datenblatt
> gecheckt, Programm ins Flash rauf gespielt, aber die 16*2 Chars leuchten
> alle schwarz, mehr passiert da nicht.

Was sagt die Kontrastspannung und wie steht es um die Hintergrund-LED?

EloGuy schrieb:
> Er will den Controller nicht wechseln. Er will das Tutorial für den M8
> am M328P verwenden und frägt nach Kompatiblität.

Wenn das LCD am Arduino Uno nicht mit dem Arduino Code funktioniert, 
gibt es erstmal ein ganz anderes Problem.
Der Übertragung des Tutorials auf einen anderen Prozessor ist eine ganz 
andere Baustellt.

von Stefan F. (Gast)


Lesenswert?

int 21h schrieb:
> Es ist halt nur so, das mir zu viel Input an einem Tag einfach
> durcheinander bringt

Man migriert ein Projekt auch nicht an einem Tag auf einen anderen 
Mikrocontroller. Was hast Du Dir dabei gedacht? Hast du diese Teile 
überhaupt schon einmal selbst programmiert, oder ist das eine copy/paste 
Arbeit?

> aber die 16*2 Chars leuchten alle schwarz, mehr passiert da nicht.

Häufigste Ursache dafür ist zu hohe Kontrastspannung (relativ zu VCC).

Solange das Display noch nicht initialisiert ist (also nur 
Stromversorgung hat) soll die obere Reihe hellgraue Blöcke anzeigen und 
die untere Reihe soll gar nichts anzeigen. Da musst du erstmal hin 
kommen, bevor du dem Display Kommandos schickst.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

int 21h schrieb:
> Ich bemühe mich schon seit heute Nachmittag das LCD zum laufen zu
> bringen.
>. ..
> gecheckt, Programm ins Flash rauf gespielt, aber die 16*2 Chars leuchten
> alle schwarz, mehr passiert da nicht.
>
Hi,
da ich auch recht viel Zeit mit LCDs verbracht habe, um diese zur 
Mitarbeit zu bewegen, lassen sich meine Erfahrungen in etwa so 
zusammenfassen:
Es empfiehlt sich also, erst einmal die Checkliste abzuhaken:

1.) Pinout des LCD (oft sind sogar Powersupplyanschlüsse verdreht.)
    Zeig mal ein Foto. Sieht das so aus wie im Bild?
2.) Controller der LCD-Type.
    Ist meistens bei den 16 x 2 nach dem Hitachi HD44780-Standard
3.) Die MCU ist wie mit welchem Port verbunden.
    Gerade beim Vierbit-Modus die Zuordnung der Bits im Port muss mit 
dem   Programm   übereinstimmen. Die "swap" Befehle müssen 
dementsprechend richtig gesetzt werden. Das Prog im Tutorial hier weist 
auch darauf hin.
Wenn man möchte, kann man sich einen Adapter bauen, der richtig herum 
verbindet, wenn man eine geänderte Portpinbelegung nicht softwaremäßig 
abändern möchte. (letztes Bild)
4.) Der Enable Impuls ist zu erzeugen. Das ist nicht nur ein statisches 
Setzen von Portbits. Sondern muss getoggelt werden. Also Setzen, no 
operation Befehle je nach CPU Takt mehr oder weniger, Rücksetzen.

5.) Die Pausen zwischen den Befehlen beim Initialisieren müssen 
ausreichend lang sein. Dazu müssen Zeitschleifen programmiert werden. 
Dafür sollte man nicht dieselben Temporärregister nehmen, bei denen auch 
andere Operationen ausgeführt werden, ohne diese Register auf Stack mit 
"push" zu sichern und anschließend mit "pop" wieder zurückzuholen. Es 
empfiehlt sich auch, das SREG zu sichern.

Das Portieren der Programme ist bei entsprechender Anpassung nicht 
gänzlich ausgeschlossen. Aber zum Beispiel ein Programm für den 
ATtiny2313 unangepasst auf einem ATMEGA32U4 laufen zu lassen, geht 
nicht. Vor allem, weil viele Register "memory mapped" sind. Um diese 
ansprechen zu können, müssen andere Befehle genommen werden, die der 
ATtiny mit "no such instruction" quittiert.

Also, bleib erst einmal beim ursprünglichen Prozessor.

ciao
gustav

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Karl B. schrieb:
> LCD_AVR_conn.jpg

Was versprichst du dir von der 8-Bit Verdrahtung für die Daten. Bei den 
Update-Raten, die für ein Display sinnvoll sind, ist das nur unnötiger 
Verdrahtungsaufwand und Pin-Verschwendung am µC.
Sicher funtionierende Beispiele zur Initialisierung des 4-Bit Modus vom 
LCD-Controller gibt es mehr als genug.

von Alexander S. (alesi)


Lesenswert?

Horst schrieb:
> Allerdings hab ich das bei Microchip auf Anhieb nicht gefunden, mußt
> selber mal suchen.

Horst schrieb:
> AVR094: Replacing ATmega8 by ATmega88

http://ww1.microchip.com/downloads/en/AppNotes/doc2553.pdf

von Einer K. (Gast)


Lesenswert?

Eigentlich ist das Dokument nicht ausreichend.
Denn es soll ja der 328P ausgetauscht werden.

Hier eine Sammlung Features, auf die man beim ATMega8 dann verzichten 
muss:
http://ww1.microchip.com/downloads/en/appnotes/doc8349.pdf

von Karl B. (gustav)


Lesenswert?

Wolfgang schrieb:
> Was versprichst du dir von der 8-Bit Verdrahtung für die Daten.

Hi
Schau doch mal genauer hin:
Ist doch schon rausgeixt.
Die Leitungen zu den Rs fallen doch auch weg.


ciao
gustav

von int 21h (Gast)


Lesenswert?

Karl B. schrieb:
> Hi,
> da ich auch recht viel Zeit mit LCDs verbracht habe, um diese zur
> Mitarbeit zu bewegen, lassen sich meine Erfahrungen in etwa so
> zusammenfassen:
> Es empfiehlt sich also, erst einmal die Checkliste abzuhaken:
> ...

Tut mir Leid das ich dir/euch jetzt zu viele Umstände bereitet habe, es 
ist nämlich so das, das ich beim LCD nicht alle 12 Pins die ich 
gebrauche, richtig verlötet hatte, das war halt das Problem.
Das merkte ich halt zufällig, als ich die Pins am LCD angetastet habe 
und es durch den Wackelkontakt dann doch funktionierte.
Das war halt das Problem.
Das mit der Kontrastspannung habe ich mit einem Potentiometer gelöst, 
habe den aber dann durch einen 2k Widerstand ersetzt.

Deine Checkliste habe ich aber vorsichtshalber mal bei mir 
abgespeichert, falls es zu anderen Komplikationen kommen sollte, danke 
dafür :)

von Stefan F. (Gast)


Lesenswert?

int 21h schrieb:
> Das mit der Kontrastspannung habe ich mit einem Potentiometer gelöst,
> habe den aber dann durch einen 2k Widerstand ersetzt.

Ein Poti wäre schon besser, denn der Kontrast ändert sich mit der 
Temperatur und Zeit.

von Wolfgang (Gast)


Lesenswert?

Karl B. schrieb:
> Schau doch mal genauer hin:

Das habe ich schon vorher getan ;-)

> Ist doch schon rausgeixt.
> Die Leitungen zu den Rs fallen doch auch weg.

Ich sehe im Schaltplan vier durchgeixte Widerstände und ansonsten viele 
Leitungen an Stellen, wo das Datenblatt für den 4-Bit Modus sagt: "Bus 
lines DB0 to DB3 are disabled", m.a.W. Drähte sind da sinnlos.
Und Flachbandkabel ist da auch angelötet.

von Karl B. (gustav)


Lesenswert?

Wolfgang schrieb:
> m.a.W. Drähte sind da sinnlos.
> Und Flachbandkabel ist da auch angelötet.

Ja, genau weil es so vom Hersteller geliefert wurde am Display.
Die unnötigen Drähte einfach so herumschlackern lassen?

Und der Hersteller weiß ja nicht, ob man doch im 8-Bit-Modus fahren 
möchte.
16-polig bleibt die mitgelieferte Steckverbindung so oder so.

Es ist jedem unbenommen, die Verdrahtung seinen Vorstellungen 
anzupassen.
Das Bildchen erhebt ja auch keinen Absolutheitsanspruch, nur ein kleiner 
Denkanstoß, wie man es vielleicht machen könnte.


ciao
gustav

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

Stefanus F. schrieb:
> Ein Poti wäre schon besser, denn der Kontrast ändert sich mit der
> Temperatur und Zeit.

ich hatte einen PWM Ausgang gewählt mit 2 Dioden R und etwas C

dann kann man den Kontrast per SW einstellen

https://www.holger-klabunde.de/dcdc/picdcdc.htm

R C und F muss man für das vorhandene optimieren

von Veit D. (devil-elec)


Lesenswert?

Ich würde dafür keinen großen Ruß machen. 2 Widerstände, Transistor, 
100Hz (ggf. etwas mehr) PWM Takt.

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.