mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ein paar AT-Mega48 Fragen


Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab letztens ein paar M48 bekommen. Die neusten Modelle von Atmel.
Allerdings wirft das Ding so einige Fragen auf, die ich mir selbst nich
erklären kann.

1. Die M48/88/168 Reihe hat angeblich einen Taktverdoppler. Nen Fusebit
dafür hab ich nicht gefunden. Nur eins um den Takt durch 8 zu teilen :-)
Wie aktivier ich den Taktverdoppler?

2. Das Ding hat ja 2 USARTs. Ein ganz "normalen" und ein "USART in
SPI-Mode". Nun frage ich mich, wie passt das zur Hölle zusammen?!
Rs232+SPI ? Wenn ich das richtig verstehe, wird das ganze nur wie ein
Software UART angesprochen, ist aber in wirklichkeit ein ganz normaler
SPI-Master ? Oder gibts da irgndnen neues Protokoll ? Ist das etwa
RS232 auf 3 Drähten?

3. PonyProg kann den M48 nicht programmieren, dabei fand ich das
Programm eigentlich recht gut. Ich mach das im Moment mit dem BASCOM
Programmer (schlagt mich, aber der funktioniert wenigstens ;))

4. Wo kann ich eine Übersicht finden, welche Register im erweiterten
Bereich liegen? Diese, die nur mit STS und LDS angesprochen werden
können? Raten kommt meist nich so gut.. :/

5. Warum ist da kaum ein kompletter Port dran, nur PORTD und PORTB sind
komplett. Allerdings ist in PORTB genau das Quarz angeschlossen und an
PORTD ist RxD und TxD für die serielle. ;)

Letzte Frage nich ganz so ernst nehmen ;)

Hoffe auf Antworten, danke im Vorraus

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

zu 1.
Da kann ich nichts dazu im Datenblatt finden. Wo steht denn da was von
Taktverdopplung?

zu 2.
Das Ding hat WIDRS nur einen UART. Dieser kann entweder als ganz
normaler UART oder aber als Master SPI-Schnittstelle arbeiten.

zu 3.
Und deine Frage war jetzt?

zu 4.
Endlich darf ich wieder mal -> RTFM ;-) kleiner Tip: Ab Seite 334 wirst
du fündig.

zu 5.
Weil mehr als 2 komplette Ports garnicht möglich sind wenn man noch 5
Signale (Vcc, GND, AVcc, AGND, AREF) im DIP28 unterbringen muß?

Matthias

Autor: DirkD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Die einfache Antwort wäre: Datasheet lesen

Die ausführlichere:

1. Wo hast Du das gelesen?

Es gibt einen Precaler mit dem sich die Sys-Clk "teilen" läßt. (2er
Potenzen 2^0 bis 2^8)

2. Dazu gibt es extra eine Application Note von Atmel
Using the USART on the ATmega48/88/168 as a SPI master

Das sollte Deine Fragen beantworten.

Im Datasheet gibt es auch einen Beitrag dazu. Wenn ich das richtig
verstehe, bekommst Du einfach einen weiteren SPI-Master. Dazu wird der
USART "mißbraucht".

TX wird zu MOSI
RX wird zu MISO

Die Clk liegt auf Pin PD4 (Nr. 6 im DIP) Und ChipSelect mußt Du Dir
selbst bauen.

3. Autor von PonyProg fragen ;-)

4. Auch im Datasheet. Kapitel 28 "Register Summary"

5. Es ist eigentlich klar, daß erst einmal die Spezial-Pins
"rausgeführt" werden und nur wenn etwas übrig bleibt wird noch ein
General-IO Port auf Pins "gelegt".

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Im Datenblatt steht:

– Up to 20 MIPS Throughput at 20 MHz
– On-chip 2-cycle Multiplier

Das hab ich dann mal ganz frech als Taktverdoppler angesehen ;)

2. Einen ganz einfachen SPI-Master ? Ist ja langweilig! :-)

3. Die Frage war eigentlich, warum der Mega48 nicht mehr unterstützt
wird. Klar, er ist neu, aber im Forum sind schon recht alte Beiträge,
wo nach Unterstützung gefragt wurde :( Habt ihr ne Alternative dazu?

4. Ich könnte schwören vorhin schonmal unter "Register Summary"
geguckt zu haben. Naja so ist das, wenn man keine Zeit hat ;)

5. Nunja, wenn ich jetzt unbedingt nen 8-Bit breiten Bus brauche,
müsste ich ja beispielsweise ein byte in seine Nibbles zerlegen und an
2 verschiedenen Ports ausgeben. Quasi 2 Ports "zusammenführen".
Braucht aber mehr Rechenleistung.

Naja, gut. Was ist denn nun dieser On-Chip 2cycle Multiplier ? Die
dritte Grundrechenart, die nur 2 Takte braucht?

Das "up to 20Mhz" heißt, ich kann da ein 20Mhz Quarz dran hängen?
Auch gut.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

1. Nein. Das ist der Hardware-Multiplizierer der die Multiplikation von
zwei 8 Bit Werten zu einem 16 Bit-Wert in gerade mal zwei Taktzyklen
erledigt. Das ist so richtig schnell für einen so einfachen Kern wie
den des AVR.

3. Frage das doch den Entwickler von PonyProg. Eine Alternative wäre
z.B. AVRDUDE. Da kannst du dir deine Prozessoren selber definieren.

4. Aber für einen Forenbeitrag hats gereicht?

Siehe 1.

Ja. 20MHz sind wohl kein Problem. Aber ob man das unbedingt braucht?

Matthias

Autor: DirkD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

@Simon:
Nur eine kleine Anmerkung:

Normalerweise fällt einem nicht plötzlich ein, daß man einen Bus
braucht. Erst die Anforderungen an die Anwendung ermitteln, dann das
Bauteil auswählen.

Wenn man es trotzdem allgemeiner will, dann nimmt man sich besser eine
AVR-Version mit mehr Pins.

Und nicht jeder braucht einen Quarz oder RS232 oder eine der anderen
Spezial-Funktionen. Man kann sich auch mit dem Mega48 einen Port
"freihalten".

Gruß

    Dirk

Autor: Andi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Simon Küppers: Damit Du nicht mehr raten mußt, im Anhang ein
Include-File mit IN- und OUT-Macros.
Habe alle mir erdenklichen Möglichkeiten reingepackt (siehe Anhang).
Ist die Register-Adresse > 0x3F werden STS- oder LDS-Befehle verwendet
ansonsten OUT oder IN.

MfG
Andi

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Andi...

Ich bezweifle, dass Simon schon bereit für Macros ist, da scheint es
noch an Grundlagen zu fehlen, z.B. am Verständnis der Adressbereiche
und der unterschiedlichen Zugriffsmöglichkeiten.

Mal davon abgesehen, dass beim Mega48 und seinen Brüdern die Verteilung
der I/O-Register auf die verschiedenen I/O-Bereiche nicht gerade optimal
gewählt wurde.

Vielleicht wäre ja ein 2313 oder Mega8 für den Einstieg in die
AVR-Technik besser geeignet. Da wären wenigstens erprobte
Programmbeispiele verfügbar gewesen.

Frohen Rest vom Osterfest...
...HanneS...

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ich bezweifle, dass Simon schon bereit für Macros ist, da scheint es
noch an Grundlagen zu fehlen, z.B. am Verständnis der Adressbereiche
und der unterschiedlichen Zugriffsmöglichkeiten."

Nönö. Da is alles in Butter.
Mensch, nur gebt mir doch auch ma Zeit. Ich hab die Dinger gestern
bekommen und wie üblich mit OUT losprogrammiert ;) bis ich den Fehler
sah und hab mich hier mal informiert. Wollte nur wissen welche Register
mit STS geladen werden. wenn das alle über 0x3F sind, is doch gut,
dankeschön.

Das is nich mein Einstieg.. Ich hab vorher erfolgreich programmiert in
Assembler, auch wenn dies nicht so zu vermuten ist..

Das Makro brauch ich aber tatsächlich nicht. Ich mach das lieber per
Hand.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, ob er dazu bereit ist oder nicht weiß er vermutlich am besten.
Er muß ja das Include-File nicht nutzen und wenn jemand damit nicht
klar kommt dann einfach nur fragen (Sinn eines Forums).
Zumindest erleichtert das Include die Zugriffe auf die Register
erheblich bei Verwendung eines AVR mit Register-Adressen bis 0xFF.
Statt dem normalen OUT oder IN verwendet man einfach OUTR oder INR.
Bei Ausgabe von Konstannten (feste Werte) OUTI (Byte) oder OUTIW (Word,
z. B. für Timer1).
Ob OUT, STS, IN oder LDS entscheiden dann die Macros.

MfG
Andi

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist die Lesbarkeit, ich programmiere nur Ab und Zu in
Assembler (sonst garnicht) und hab keine Lust auf so nen Stress mit
Makros ;)

Ach Übrigens, Auf die Frage mit den Portpins hatte ich auf etwas mehr
Ironie gehofft :-) So ernst war die Frage natürlich nicht. Es ist mir
natürlich zu 100% bewusst, dass man den AVR nach Anwendung auswählt
und nicht andersrum (entspräche sonst ja auch keiner gesunden
Menschen-Logik)

Bei mir ist es im Moment so, dass ich die nur etwas austesten will und
ein paar Standardanwendungen drauf laufen lassen will, wobei ich beim
Programmieren schon wieder so meine Probleme hab (siehe andern ATMEGA48
Thread).

Dann is ja alles OK. Danke soweit

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben...

Das meinte ich mit (noch) fehlenden Grundlagen.

Übrigens suche ich mir den Controllertyp nicht nur nach der Anwendung
aus, sondern auch nach der Verfügbarkeit.

Frohen Rest vom Osterfest...
...

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.