Hallo Leute, ich habe den Sprung zum XMEGA gewagt. Jetzt kämpfe ich gerade mit der Initialisierung des ADCs. Leider werden die (vermutlich) gesetzten Bits in den ADC-Register im IO-Viewer nicht angezeigt. Die Anzeige funktioniert im Simulator nicht und auch nicht auf der Hardware über PDI. Zum Beispiel: ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc; ADCA.REFCTRL = ADC_REFSEL_INT1V_gc; ADCA.PRESCALER = 0x03; Die Bits werden einfach nicht gesetzt oder nur nicht angezeigt?! Verliere langsam echt die Lust an dem XMega. Vielen Dank für Eure Hilfe. VG, Michael Atmel-Studio: 6.1.2730 - Service Pack 2 AVR-Dragon: aktuelles Update
Hallo. Ich bin jetzt nicht sicher. Aber ggf. muss das CCP Register voerher beschrieben werden. Wenn du total ahnunglos bist, waere das eine Richtung in die du recherchieren koenntes. MfG
Naja was erwartest du auch. Schau dir mal an wie ADC_RESOLUTION_12BIT_gc und ADC_REFSEL_INT1V_gc definiert ist... richtig ist beides "0".
1 | typedef enum ADC_RESOLUTION_enum |
2 | {
|
3 | ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ |
4 | ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ |
5 | ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ |
6 | } ADC_RESOLUTION_t; |
7 | |
8 | typedef enum ADC_REFSEL_enum |
9 | {
|
10 | ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ |
11 | ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6 */ |
12 | ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ |
13 | ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ |
14 | ADC_REFSEL_VCCDIV2_gc = (0x04<<4), /* Internal VCC / 2 */ |
15 | } ADC_REFSEL_t; |
Prescaler erscheint bei mir auch im Simulator als "3". Stephan B. schrieb: > Hallo. > > Ich bin jetzt nicht sicher. Aber ggf. muss das CCP Register voerher > beschrieben werden. Wenn du total ahnunglos bist, waere das eine > Richtung in die du recherchieren koenntes. > > MfG Nein CCP ist nicht notwendig. Nur bei Clock etc.
:
Bearbeitet durch User
Meine Güte lies das Datenblatt gründlich und machs dann in Assembler. Ist schon ziemlich mühsam durch dieses Meer an Bezeichnern zu rudern- in Asm sprichst Du kürzestmöglichen Klartext! Moby
Hallo zusammen, vielen Dank für Eure Unterstützung. Also ich habe jetzt noch folgenden Code aus dem ASF hinzugefügt: sysclk_enable_module(SYSCLK_PORT_A, SYSCLK_ADC); Erklärung: Ich benutze zum Programmstart die ASF-Funktion sysclk_init(). Diese Funktion disabled erstmal alle Peripherial Clocks und dann funktioniert natürlich nichts mehr! Sorry Atmel, aber das ASF ist wirklich das Letzte. Vorallem keine Beschreibung in den Header-Files. So dass man erstmal den Quellcode sichten muss. VG, Michael @Moby: Manchmal sehne ich mich nach den Assembler-Zeiten zurück. Aber USB in Assmebler zu initialisieren und zu handeln entspricht einfach nicht mehr dem Zeitgeist, oder doch?
Michael schrieb: > Sorry Atmel, aber das ASF ist wirklich das Letzte. Vorallem keine > Beschreibung in den Header-Files. So dass man erstmal den Quellcode > sichten muss. Dann lass das mit dem ASF doch einfach bleiben. Den xmega kann man auch "ganz normal" programmieren und das ziehe ich auch vor.
> @Moby: Manchmal sehne ich mich nach den Assembler-Zeiten zurück. Aber > USB in Assmebler zu initialisieren und zu handeln Ging doch hier nur um den ADC... Ok mit dem USB hab ich mich just noch nicht befasst weil ich generell drahtlose Verbindungen bevorzuge. So schlimm wird das doch auch nicht sein !???
Drahtlos vielleicht nicht (je nach Modul), aber USB ist schon etwas umfangreicher. Da würde ich dann doch eher zu ASF und CDC greifen (was übrigens hervorragend funzt). Aber du wirst so oder so nicht darum herum kommen mal das Datenblatt zu lesen. Wenn du jetzt schon an so popeligen Sachen wie ADC und Clock scheiterst, dann wirst du beim USB, Funk und was du nicht alles noch vor hast sowieso scheitern.
:
Bearbeitet durch User
ist doch einfach, geh auf asf.atmel.com und da hast du die gesamte beschreibung, mit quick start guides, example codes und schritt-für-schritt erklärungen wie man was einbindet. du kannst auch eines der beispielprojekte nehmen und dir den code abgucken. http://asf.atmel.com/docs/latest/xmegaau/html/group__udi__cdc__group.html steht alles drin: Related Project(s) In this section you can find all the projects related to the USB Device Interface (UDI) for Communication Class Device (CDC). Quick Start Guide(s) In this section you can find a list of all Quick Start guides related to the USB Device Interface (UDI) for Communication Class Device (CDC). Interface with USB Device Core (UDC) Structures and functions required by UDC. Implementation of UDI CDC Class internal implementation. USB interface descriptors The following structures provide predefined USB interface descriptors. ... klickst nun auf den quick start guide, kommst du zu: http://asf.atmel.com/docs/latest/xmegaau/html/udi_cdc_quickstart.html also einfacher geht es nicht du kannst dir auch eines der vielen videos auf atmel.com ansehen, da wird auch in ein paar min gezeigt wie man sowas einbindet--- oder du startest erst mal mit einer einführung in asf: http://www.atmel.com/Images/Atmel-8431-8-and32-bit-Microcontrollers-AVR4029-Atmel-Software-Framework-User-Guide_Application-Note.pdf
Hallo zusammen, vielen Dank für den vielen Input. @Stefan: vielen Dank für die Linksammlung. Genau was ich benötige :-) @Timmo: Keine Sorge ich scheitere nicht am ADC. Aber es ist schon etwas gemein, wenn Dir eine Funktion im "Hintergrund" alle Clocks abschaltet und man das auf den ersten Blick nicht gleich erkennen kann (z.B. Header Description). VG, Michael
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.