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
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
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".
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.
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
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
@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
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...
"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.
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
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
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... ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.