avr-gcc:schreiben eines unsigned chars an Port

R

R.Freitag

Guest
Hallo

ich möchte einen Port beschreiben, das habe ich wie folgt angefangen:

volatile unsigned const *char PORTA = >porta-adresse>

das nimmt aber der Compiler nicht, ausserdem hätte ich das lieber mit
putchar oder sowas ähnlichem. Wie sollte ich es machen?

Robert
 
In article <c6987q$li1$1@newsreader2.netcologne.de>,
R.Freitag <rfr-mailbox@gmx.de> wrote:
Hallo

ich möchte einen Port beschreiben, das habe ich wie folgt angefangen:

volatile unsigned const *char PORTA = >porta-adresse
Die Ports sind nicht direkt memory-mapped. Generic pointer, die mit
verschiedenen Adreßspaces umgehen können, sind dafür ziemlicher Overkill.

Der avr-gcc hat doch direkte Port-Unterstützung eingebaut - mit dem
passenden Includefile (ich vermute mal, es ist <avr/io.h>) reicht ein

PORTD = 0x55;

um Daten auf dem Port zu schreiben. Wenn Du unbedingt willst, kannst Du Dir
dafür auch ein putchar definieren, das dann halt nur aus
void putchar(char c) { PORTD = c; }

besteht.

cu
Michael
 
In article <c6agq7$1t9f$3@innocence.interface-business.de>,
Joerg Wunsch <joerg_wunsch@interface-systems.de> wrote:
Die Ports beim AVR /sind/ direkt memory-mapped. RTFdatasheet.
I stand corrected.

Daß am Ende statt MMIO dennoch IN/OUT Befehle (je nach Operanden)
herauskommen können, organisiert erst der Optimizer.
Hm - das hatte ich wohl übersehen.

cu
Michael
 
Michael Schwingen <rincewind@discworld.dascon.de> schrieb:

volatile unsigned const *char PORTA = >porta-adresse

Die Ports sind nicht direkt memory-mapped.
Die Ports beim AVR /sind/ direkt memory-mapped. RTFdatasheet.

Generic pointer, die mit verschiedenen Adreßspaces umgehen können,
sind dafür ziemlicher Overkill.
Hat der GCC sowieso nicht.

Der avr-gcc hat doch direkte Port-Unterstützung eingebaut - mit dem
passenden Includefile (ich vermute mal, es ist <avr/io.h>) reicht
ein

PORTD = 0x55;
Richtig, und wenn Du ins headerfile siehst, wirst Du feststellen, daß
das über MMIO funktioniert.

Daß am Ende statt MMIO dennoch IN/OUT Befehle (je nach Operanden)
herauskommen können, organisiert erst der Optimizer.
--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
Kristian Köhntopp, de.comp.os.unix.misc
 
R.Freitag schrieb:

ich möchte einen Port beschreiben, das habe ich wie folgt angefangen:

volatile unsigned const *char PORTA = >porta-adresse

das nimmt aber der Compiler nicht,
Eigentlich sollte PORTA schon definiert sein,
siehe io.h bzw ioxxxx.h des ausgewaehlten Controllers.

Zugriffsroutinen sind je nach verwendeter avr-gcc Version in
iomacros.h oder sfr_defs.h (werden AFAIK mit io.h includiert)

ausserdem hätte ich das lieber mit putchar oder sowas ähnlichem.
Wie sollte ich es machen?
outb(), inb()

http://www.nongnu.org/avr-libc/user-manual/group__avr__sfr.html
http://www.nongnu.org/avr-libc/user-manual/

Es gibt auch "A GNU Development Environment for the AVR Microcontroller"
von Rich Neswold. Ist jedoch nicht auf den aktuellsten Stand. (ca 280 kb)

servus thomas
Ť
--
"Der Himmel hat begonnen, die *wahren* Freunde auszuwählen."
'20th Century Boys' von Naoki Urasawa (Planet Manga)
Band #9 bei https://www.paninicomics.de/?gotoshop=ondemand;
Info zu 20CB: http://www.aniki.info/20th_Century_Boys
 
"Thomas Mozgan" <thomas.m@gmx.at.invalid> schrieb:

ausserdem hätte ich das lieber mit putchar oder sowas ähnlichem.
Wie sollte ich es machen?

outb(), inb()
Deprecated. Die werden mal irgendwann verschwinden. Die stammen noch
aus einer Zeit, da der AVR-GCC die direkte Zuweisung noch nicht
verstanden hat.

Es gibt auch "A GNU Development Environment for the AVR
Microcontroller" von Rich Neswold. Ist jedoch nicht auf den
aktuellsten Stand. (ca 280 kb)
Naja, alles Wesentliche daraus (insbesondere das Kapitel ``Installing
the GNU tools'') ist in das von Dir erwähnte Dokument integriert
worden.
--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
Kristian Köhntopp, de.comp.os.unix.misc
 

Welcome to EDABoard.com

Sponsor

Back
Top