Search Results

Search results 1-20 of 54.

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Portpinzugriff über Array

    laase - - Hauptforum BASCOM-AVR

    Post

    ok, seufz, dann ist das eben so. Bei mir geht es jetzt nämlich nicht nur um die vier Relais, sondern auch noch um 4x4 Portpins, die ich für die Ansteuerung von Multiplexern brauche. Und dann noch 8 ADC-Eingänge für Ströme und Spannungen, die auch noch munter durcheinander verteilt sind - es wird langsam unübersichtlich ...

  • Portpinzugriff über Array

    laase - - Hauptforum BASCOM-AVR

    Post

    Hallo @six1, ok, Byte in einzelne Bits aufgelöst, insoweit verstanden. Aber wie kriege ich es hin, daß diese Einzelbits des Bytes "Relais" dann auch stets die oben genannten Portpins H.6, H.5, A.0 und A.2 ansprechen? Geht es auch OHNE eine "Dekodierung", also beispielsweise ohne das "Umswitchen" von Michael und ohne das "Select", das ich jetzt gerade verwende? Geht irgendein "Relais.0 at Porth.6 overlay : Relais.1 at Porth.5 overlay : usw." ? Am liebsten würde ich halt mit "Relais(kanal); wobei …

  • Portpinzugriff über Array

    laase - - Hauptforum BASCOM-AVR

    Post

    Hi Michael, alles klar, danke! Ein "(bitweises) Overlay von Arrayelementen auf Portregister(pins)" geht also nicht. In meinem Fall werde ich es dann so machen ("händisch umswitchen"): Config Porth.6 = Output : Relais_ch1 Alias Porth.6 Config Porth.5 = Output : Relais_ch2 Alias Porth.5 Config Porta.0 = Output : Relais_ch3 Alias Porta.0 Config Porta.2 = Output : Relais_ch4 Alias Porta.2 ... For Kanal = 1 to 4 if Spannung(Kanal) >= 1000 then Select Case Kanal Case 1 : Relais_ch1 = 1 Case 2 : Relais…

  • Portpinzugriff über Array

    laase - - Hauptforum BASCOM-AVR

    Post

    Liebe Bascom-Jünger, das ist für euch wahrscheinlich eine ganz einfache Sache: ich möchte per Variable in einem Array auf spezielle Pins zweier Ports zugreifen. In etwa so: Dim Relais_ch(4) As Byte ' ... as Bit geht ja leider nicht, oder? Config Porth.6 = Output : Relais_ch(1) Alias Porth.6 Config Porth.5 = Output : Relais_ch(2) Alias Porth.5 Config Porta.0 = Output : Relais_ch(3) Alias Porta.0 Config Porta.2 = Output : Relais_ch(4) Alias Porta.2 Ziel ist jedenfalls, später in Schleifen so etwas…

  • Danke Michael! Das mit der längeren Suche und der Auswirkung auf die Speicherzeit mehrerer zu öffnender und "weiterzuschreibender" Dateien muß ich nochmal prüfen. @Pluto25: ich habe die vesetzte Speicherung (bei Sekunde 60 die Dateien 1 und 3, bei Sekunde 120 die Dateien 2 und 4) umgesetzt. Hierfür den Sekundenzähler für die 1 und 3 von Bginn an auf 60 "vorgespannt". Es funktiniert gut und die beiden Dateien werden minütlich in nur 175ms (statt vorher vier in knapp 500ms) geschrieben. So lasse i…

  • Hi Pluto, es hat nicht funktioniert. AVR-DOS ist offenbar nicht ohne Weiteres dafür geschaffen, vier demnächst zu schreibende Dateien gleichzeitig "offen zu halten". Eine ja, vier aber nein. Ich habe meinen Code vorerst so gelassen, wie er war und nur nach dem jeweiligen Schreiben der Kopfzeilen die 4x "Close #Channel" rausgenommen. EBenso das Setzen der /SS Leitung. Beim 128-sekündlichen Dateien Schreiben habe ich dann ebenfalls alle "Open #channel" (und "Close #Channel") herausgenommen. Er hät…

  • Hi Tobias, nein, ob groß oder klein spielte bei meinen 5 Exemplaren von 250MB bis 32GB (SDHC) bisher keine Rolle. Auf den Ramps 1.4 LCD 2004 SD Encoder boards ist halt schon alles drauf, neben dem Pegelwandler auch schon ein Linearregler extra für die SD-Karte. Bei dem Preis und der kompakten Anordnung sinnvoller Elemente für ein fertiges Gerät konnte ich nicht widerstehen ... Den Mega2560 muß ich schon mit 5V versorgen, allein schon wegen des 2004 LCDs. Aber auch der 16MHz Quarz geht glaube ich…

  • Habe mal weiter recherchiert: an den SD's liegt es schonmal nicht, deren Standard-Geschwindigkeit ist 25MHz. Die sind mit 4 oder 8MHz also allesamt "unterfordert". Der Pegelwandler Chip ist bei mir ein 74HC4050. 8MHz heißt 125ns Periodendauer. In dieser Zeit muß er einen LH-Übergang, eine H-Haltung, einen HL-Übergang und eine L-Haltung ausführen und das Signal soll noch annähernd rechteckig aussehen und nicht wie irgendein Spitzgebirge mit Rundkuppen. Angesichts einer "propagation delay time" vo…

  • Das SPCR-Byte lautet: 01011100. Demnach sind die Bits SPR1 und SPR0 Null. Das Register beinhaltet das Bit SPI2x, womit die Taktgeschwindigkeit noch einmal verdoppelt wird. Dieses Register lautete bei mir: 00000000, das letzte Bit (SPI2x) ist also auch 0; D.h. laut Datenblatt läuft das SPI derzeit mit fosc/4 (4MHz). Ich könnte den SPI-Takt noch auf fosc/2 verdoppeln, wenn ich hier das letzte Bit auf 1 setze. Verträgt das System (Das AVR-DOS, der CMOS-Chip zur Pegelwandlung und die SD-Karte selbst…

  • Hallo Pluto, Quote from Pluto25: “Er hat genug Sram um sie offen zu lassen? ” Davon gehe ich aus, weiß es aber letztlich auch nicht wirklich. Ich habe dem Atmega2560 $hwstack = 150 $swstack = 150 $framesize = 250 gegeben. Das finde ich "üppig", wüßte aber auch nicht, wo ich mehr bräuchte und wo ggf weniger. Quote from Pluto25: “Wie wärs den Wert nicht in Array zu sammeln sondern gleich in die Sd zu legen. Er sammelt dann in den SD Buffer und schreibt wenn er voll ist. ” Ich habe natürlich darübe…

  • ich habe mir die Option mit dem 32.768kHz Uhrenquarz übrigens noch einmal angeschaut: das Arduino Mega2560 Board hat die Pins Osc2 und Osc1 (PG.3 und PG.4) nicht beschaltet. SIe sind komplett "offen" und auch nicht rausgeführt. (Ist das auf den neuerdings auch günstig angebotenen "Mini MEGA 2560 Pro" vielleicht anders, weiß das jemand? Zumindest haben die interessanterweise einen "echten" 16MHz Quarz!) Wer natürlich trotzdem mit zwei Haar-Drähtchen dort einen Quarz anschließen möchte: wenn die C…

  • ich habe bei mir jetzt einmal die vier Kanäle "erstellt": ich speichere sekündlich zwei Word-Variablen in zwei SRAM-Arrays, Spannung [mV] und Strom [mA] und das für jeweils vier Kanäle. Alle 128 Durchläufe (128s) überschreibe ich "kanalweise nacheinander" diese Arrays in vier Dateien auf die SD-Karte: BASCOM Source Code (142 lines)Die Dateien gehen sauber auf die SD-Karte (auch mit "echter Uhrzeit und Datum"!), hinter ein paar Kopfzeilen (Code dafür hier nicht dargestellt, ähnlich wie bei Riedle…

  • Hi @Jogi, (hatte die Antwort schon vor einer Weile erstellt, dann aber aus irgendeinem Grund nicht auf "Absenden" gedrückt ...) Quote from Jogi: “mit Left die gewünschten Stellen extrahieren ” cool! Genau DAS suchte ich! Danke! @Michael: Ja, es geht mathematisch betrachtet zwar um die 4 Stellen, also zB 999.9, 99.99, 9.999 usw, aber der Breite des Ausdrucks geschuldet hätte ich doch gern immer exakt 5 alphanumerische Zeichen, würde mich also ab 0.999 notgedrungen mit nur noch 3 Stellen begnügen.…

  • Guten Morgen Michael, Guten Morgen Pluto, Resonator: die, dich ich bisher schon x mal verbaut (ich glaube, es war die CST(?)-Serie von Murata) hatten kein Metallgehäuse. Und man brauchte auch die externen ca. 18pF Kondensatoren nicht. Deshalb dachte ich, auf dem Mega2560 sei es eher kein Resonator. Aber klar, das Ding ist superklein. Gibt es vielleicht neuartige Quarze in sehr viel kleinerer Bauform? Günstiger und "schlechter" als die großen? Warum bauen die ausgerechnet auf den für anspruchsvol…

  • Nach jetzt 25min Lauf und weniger als einer Sekunde Abweichung bleibt es bei OCR1A=1241 ! Zwischendurch war der Mega2560 mal ein ganz klein wenig "führend" (wahrscheinlich war der Kaminofen da gerade etwas kälter), jetzt aber hängt er ca. eine viertel bis halbe Sekunde hinterher. Ist also +-0 und damit optimal.

  • So, jetzt Dein 'OCR1A=....' in den obigen Code direkt hinter dem Config DCF77 eingesetzt. Es funktioniert tatsächlich! Danke! Erst habe ich, wie oben beschrieben, nicht 15625 (wie von AVRTimer.exe vorgeschlagen) eingesetzt, sondern 15522 (siehe oben). Als es damit scheinbar überhaupt nicht ging, habe ich den Inverswert genommen, also 50014. Damit ging es scheinbar auch nicht, bis ich merkte, daß es einfach nur tierisch lange dauerte, bis die erste Sekunde umschaltete. Dann OCR1A ohne Neuzuweisun…

  • Habe nochmal nachgeschaut: auf den "Mega2560" boards ist übrigens ein 1x4mm großes Bauteil mit Metallkappe drauf. Da zwei Kondensatoren daneben aufgelötet sind, tippe ich doch auf Quarz und nicht auf Resonator, denn dort sind sie ja meist schon integriert. Vielleicht ist die Abweichung von 0.67% ja normal für einen Quarz, ich weiß es nicht. Wenn ich es "wegtrimmen" kann, wäre es für mich in Ordnung. Auf allen "Uno" boards bei mir (aus mehreren Entwicklungsstufen der letzten ca. 10 Jahre) ist dag…

  • Hallo Pluto, aber ist ocr1a nicht das "output compare register" für die PWM-Generierung? Kann ich damit auch den Timer dauerhaft "vorspannen", damit er schneller überläuft und einen Interrupt erzeugt? Ohne das Setzen weiterer Register? Ich probiere es nachher mal. Momentan läuft noch ein Vergleichstest mit der "alten Uhrzeit", ohne DCF77 und nur mit Timer-Interruptroutine, manueller Zeitfortzählung usw. Klar ist bisher schon, daß der Takt auch damit zu langsam ist. Auf 100 Realminuten fehlen dem…

  • ein Problem bleibt allerdings: der ungenaue Quarz. Nach 18min ca. 10s zu langsam. Das ist mir dann doch etwas viel bzw. zu ungenau. Mit dem Timer1reload hätte ich eine Trimm-Möglichkeit gehabt. Gibt es so etwas zufälligerweise auch bei der Config DCF77? Eine library-interne Variable vielleicht, die ich einfach überschreiben kann? Wenn das nicht geht, muß ich wohl nach boards mit "echtem Quarz" Ausschau halten. Könnte nämlich auch ein Resonator sein, der da auf dem chinesischen Board verbaut ist …

  • @djmsc: doppelt danke!!! (und natürlich auch @Pluto25!) Beides geht, Aufruf "meiner" ISR und die Zuweisung direkt an die _sec usw. Variablen! Jetzt kann ich mit Timer1 klarkommen und brauche nicht noch einen weiteren bemühen! Für Nachnutzer erwähnenswert wäre, daß die gosub unbedingt 'sectic' heißen muß. 'gosub Timer1_ISR' wurde nicht akzeptiert und es kam eine Fehlermeldung. Hier nochmal der jetzt funktionierende Code: (für alle, die KEINE real time clock (RTC) haben und auch KEINEN Uhrenquarz …