Hallo Community, ich habe meinen ATmega328P neu geflasht, sodass er mit einem internen Takt von 8MHz läuft. Der Sinn dahinter war, dass ich den µC unabhängig vom Arduino Uno Board betreiben kann. Das hat auch soweit funktioniert und er reagiert auf digitale Signale etc. Das Arduino Uno Board benutze ich dabei als ISP, um meine Programme auf den geflashten µC zu laden. Nun möchte ich analoge Spannungswerte von einem Spannungsteiler an 2 der 6 ADC's einlesen. Dies konnte ich auf dem Arduino Uno Board problemlos realisieren, da für die ADC's standardmäßig eine Referenzspannung von 5V vordefiniert ist. Wie ist das nun bei dem geflashten µC? Reicht es, wenn ich ein Programm hochlade, in dem der Befehl analogReference(EXTERNAl) steht, oder muss ich das spezifisch mit Register setzen machen, also z.B.: void setup() { // Select Vref=AVcc ADMUX |= (1<<REFS0); //set prescaller to 128 and enable ADC ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN); } Und falls ich die Register so setzen muss, kann ich dann diese Befehke in die setup-Funktion der Arduino IDE schreiben, oder muss ich dafür noch Bibliotheken includen? Vielen Dank.
Simon H. schrieb: > Wie ist das nun bei dem geflashten µC? Also DU hast den Bootloader entfernt beim flashen und den Takt verändert. Das Ändert an der Hardware ja erstmal nichts und analogReference(EXTERNAl) sollte ausreichen / lässt sich ja auch einfach testen. Nur mal INteressehalber, weil ich ein paar R3-Clones rumliegen habe: Wie flasht Du denn jetzt Dein Programm .hex auf den Chip? Mit einem externen ISP?
Rainer U. schrieb: > analogReference(EXTERNAl) Wieso EXTERNAL ? Beim UNO ist es auch nicht EXTERNAL sondern DEFAULT. Also intern zu AVcc geschaltet.
Hallo Rainer, Rainer U. schrieb: > Nur mal INteressehalber, weil ich ein paar R3-Clones rumliegen habe: Wie > flasht Du denn jetzt Dein Programm .hex auf den Chip? Mit einem externen > ISP? Ich verwende das Arduino Board als ISP. Ich habe mich dabei an die Anleitung auf folgender Seite gehalten: https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard Auf dieser Seite ist einmal das Flashen beschrieben, woraufhin der µC mit einem externen 16 MHz Quarz betrieben werden kann und einmal das Flashen, woraufhin der µC mit einem internen Takt von 8MHz läuft. Das Problem ist nur, dass einem diese Vorgehensweise wenig Eigenspielraum zur Verfügung stellt, da man auf diese zwei Optionen festgesetzt ist, obwohl ja der ATmega328 mit einigen anderen internen oder externen Takten laufen könnte. Rainer U. schrieb: > analogReference(EXTERNAl) sollte ausreichen / lässt sich ja auch einfach > testen. Hättest du eine Idee, mit der man überprüfen kann, ob die Einstellungen übernommen wurden?
Arduino F. schrieb: > Beim UNO ist es auch nicht EXTERNAL sondern DEFAULT. Ja beim Uno ist DEFAULT eingestellt. Das ist richtig. Das Problem ist nur, dass die DEFAULT-Einstellung eine 5V-Referenzspannung für ADC-Funktionen festlegt. Wenn der ATMega-Chip vom Board getrennt und "selbstständig" läuft, dann kann allerdings maximal 1,1V als chipinterne Referenzspannung gewählt werden. Wenn ich nun 5V Referenzspannung haben möchte, muss ich diese extern hinzuschalten (am Besten von AVCC auf AREF). Deshalb brauche ich den Code zur Einstellung einer externen Referenz.
Simon H. schrieb: > Arduino F. schrieb: >> Beim UNO ist es auch nicht EXTERNAL sondern DEFAULT. > > Ja beim Uno ist DEFAULT eingestellt. Das ist richtig. Das Problem ist > nur, dass die DEFAULT-Einstellung eine 5V-Referenzspannung für > ADC-Funktionen festlegt. Wenn der ATMega-Chip vom Board getrennt und > "selbstständig" läuft, dann kann allerdings maximal 1,1V als chipinterne > Referenzspannung gewählt werden. Wenn ich nun 5V Referenzspannung haben > möchte, muss ich diese extern hinzuschalten (am Besten von AVCC auf > AREF). Deshalb brauche ich den Code zur Einstellung einer externen > Referenz. Du sprichst in Rätseln.... Warum tut es DEFAULT nicht? Deine Begründung verstehe ich nicht... Tipp: Wenn der µC auf 3,3V o.ä. läuft, solltest du Aref keinesfalls mit einer höheren Spannung beaufschlagen. Also keine 5V anklemmen.
Wer sucht, der wird im Datenblatt fündig, meinst Du nicht? Ich, an Deiner Stelle, würde mich schnellstens von der Arduino-IDE entfernen und das Atmel Studio mit AVR-GCC nehmen. Du hast dann zwar keine schicken Bibliotheken mehr, bist aber auch nicht auf die Funktionalitäten dieser "festgenagelt". Du kannst Dir für sämtliche Funktionalitäten selbst Deine Bibliotheken schreiben. Nach einiger Zeit hast Du auch den Dreh raus, dass Du die Bibliotheken so schreibst, dass sie nur noch irgendwo eine external Timer-Variable oder ähnliches brauchen und mit ein paar Defines die Anschlüsse festgelegt werden. Nicht irgendwelche Tutorials oder Webseiten sind Dein Hauptnachschlagewerk im Umgang mit dem Controller, sondern das Datenblatt und die Application Notes zum Controller. Dort steht wirklich alles sehr gut beschrieben. Viele Grüße! Sven
Sven L. schrieb: > Ich, an Deiner Stelle, würde mich schnellstens von der Arduino-IDE > entfernen und das Atmel Studio mit AVR-GCC nehmen. > > Du hast dann zwar keine schicken Bibliotheken mehr, bist aber auch nicht > auf die Funktionalitäten dieser "festgenagelt". Hier hast du ein "Projektionsproblem". Mit der Arduino IDE ist man keinesfalls auf die Nutzung der Arduino Libs festgelegt. Mit einem "Fingerschnipps" hat man der IDE beigebogen, den Kram draußen zu halten. Also: Es gibt auch mit der IDE ein Leben neben delay() und digitalXXXX().
Hallo Fanboy! ;) Ja, das ist mir schon klar! Aber die Arduino-IDE als "IDE" zu bezeichnen ist ja schon fast eine L*ge! Das ist ein Texteditor mit Syntax-Highlighting, mehr nicht! Von einer IDE erwarte ich einfach viel mehr Dinge! Mit einer vernünftigen IDE, sei es Atmel Studio oder Eclipse, bist Du einfach deutlich produktiver. Viele Grüße! Sven
Sven L. schrieb: > Mit einer > vernünftigen IDE, sei es Atmel Studio oder Eclipse, bist Du einfach > deutlich produktiver. Teil 1: DU vielleicht. Für mich gilt dein DU nicht. Teil 2: Zum Thema "Arduino bashing"... Wenns dich glücklich macht, weiter so.. ---------------------- Wenne auch sonst etwas verbohrt erscheinst, in einem haste recht: Welche IDE auch immer, wenns ans Eingemachte geht, sollte man schon Datenblätter lesen können. ---------------------------- Sven L. schrieb: > ist ja schon fast eine L*ge! Hast du nicht gerade gelogen?
Simon H. schrieb: > Hättest du eine Idee, mit der man überprüfen kann, ob die Einstellungen > übernommen wurden? Ja, ganz einfach - Du legst an den ADC eine Spannung von 1V an und misst. Wenn Du ungefähr 205 (1024 / 5) erhältst, ist Deine Referenz 5V. Wenn Du irgendwas > 800 erhältst, ist Deine Referenz 1.1V
Simon H. schrieb: > Ich verwende das Arduino Board als ISP. Ich habe mich dabei an die > Anleitung auf folgender Seite gehalten: > https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard Ach so meinst Du, ich dachte Du lässt den Chip auf dem Board - ja dann musst Du noch den ARef -Pin beschalten, wie oben schon erwähnt. Aber warum soll man das tun - auf dem Arduinp ist doch schon ein Quarz fertig mit drauf?
Rainer U. schrieb: > Aber warum soll man das tun - Da kann ich nur für mich sprechen.... Der Aufbau des UNO ist für Prototypaufbauten schon nicht schlecht. Nutze ich gerne. Am Ende kommt dann meist ein Standalone ATMega, mit internem Takt zum Einsatz. Oder ein Pro Mini, denn der ist meist billiger, als einzelne ATMegas.
Rainer U. schrieb: > Ja, ganz einfach - Du legst an den ADC eine Spannung von 1V an und > misst. Wenn Du ungefähr 205 (1024 / 5) erhältst, ist Deine Referenz 5V. > Wenn Du irgendwas > 800 erhältst, ist Deine Referenz 1.1V Cool hat funktioniert vielen Dank.
Rainer U. schrieb: > Aber warum soll man das tun - auf dem Arduinp ist doch schon ein Quarz > fertig mit drauf? Das ist richtig, aber wie Fanboy schon sagt Arduino F. schrieb: > Am Ende kommt dann meist ein Standalone ATMega, mit internem > Takt zum Einsatz. So ist es bei mir auch. Erstens ist das Arduino Uno Board viel zu groß, um es in das Gehäuse meines Projektes zu integrieren und zweitens verbraucht der µC deutlich weniger Strom (ca. 20mA), als auf dem Arduino Board (ca. 120 mA).
Arduino F. schrieb: > Der Aufbau des UNO ist für Prototypaufbauten schon nicht schlecht. Nutze > ich gerne. Am Ende kommt dann meist ein Standalone ATMega, mit internem > Takt zum Einsatz. Oder ein Pro Mini, denn der ist meist billiger, als > einzelne ATMegas. Ich setze den Nano ein, na gut, kostet 50ct mehr als ein Pro Mini. Dafür habe ich USB permanent verfügbar und kann diesen bei Bedarf auch am Gerät verfügbar machen: http://www.aliexpress.com/item/5PCS-Mini-USB-5pin-Male-to-USB-B-Female-panel-mount-type-Cable-20cm-with-screws/32375947985.html Simon H. schrieb: > So ist es bei mir auch. Erstens ist das Arduino Uno Board viel zu groß, > um es in das Gehäuse meines Projektes zu integrieren Der Uno hatte zu Zeiten des DIL-Gehäuses noch einen Sinn, aber das versetzte Raster der Steckverbinder ist eine Unverschämtheit. Mit dem (China-SMD) habe ich meine ersten Gehversuche gemacht, mehr nicht. > und zweitens > verbraucht der µC deutlich weniger Strom (ca. 20mA), als auf dem Arduino > Board (ca. 120 mA). Was machst Du verkehrt? Ich klemme meinen China-Uno samt 16x2-Display ans Labornetzteil und bekomme unter 35mA, nix 120mA. Vom ProMini habe ich die Power-LED und den Spannungsregler abgelötet, da bleiben mir 15mA, wenn der mit Nichtstun in der Loop rennt - Deine 20mA passen also.
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.