Wieder mal ein Neuer (nicht der Manuel)

Wie gesagt, war nur ein möglicher Vorschlag. Mit Deinen 2 Schwellwerten hast Du ja auch schon 'ne Hysterese, das Gehäuse des Controllers (zugfrei und schattig verbaut) wirkt ja auch nochmal als "thermischer Tiefpaß" - da wäre eine Zusätzliche Hysterese über Mehrfachmessungen usw vielleicht nicht mehr nötig.

So wie Du das jetzt hast, weist Du den I/O-Registern (ADCSRA, DDRB usw) konstante Werte zu, also alle Bits in einem Register mit einem Schlag. Dem Kontroller ist es dabei egal, ob Du die Konstante mit 0b10001111 oder 0x8F oder 143 vorgibst, ist egal - das Studio baut die entsprechenden Bits des Bytes fest in den Opcode ein. (klar)
Über die eingebundene Prozessordefinitionsdatei kennt das Studio aber auch den Bitwert eines jeden Bitnamens aus den Registern. (Schau mal im Studio im Solution Explorer unter Dependencies, da steht (nach dem ersten Compilieren) die Definitionsdatei, mit den ganzen Definitionen der Bit- und Registernamen...)

Deswegen konntest Du vorher zB "DDRB |= (1<<PB1); " schreiben - DDRB und PB1 sind Konstanten.
mit "DDRB = (1<<PB1); " erhielte DDRB die Bitmaske "1 PB1-oft nach links geschoben" zugewiesen, also einmal, also 0b00000010.
Worauf ich hinaus will ist, daß das Studio Dir auf der Rechten Seite des "=" die Konstante auch zusammenrechnen kann, also mehrere Einsen je unterschiedliche Bitnamen weit geschoben logisch miteinander verknüpft.
Ob die Syntax bei C jetzt so stimmt, kann ich nicht sagen, aber eigentlich sollte es so sein:
"DDRB=(1<<PB1)|(1<<PB5);" weist DDRB dann 'n Byte zu, wo nur Bit1 und Bit5 gesetzt sind, also 0b00100010

noch übersichtlicher ist das dann bei der ADC-Konfiguration: statt "ADMUX = 0b10001111" schreibst Du: "ADMUX=(1<<REFS1)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0)"
Ok, länger aber übersichtlicher. Zumindest weiß man jetzt, daß es um die Voltage Reference Selection (REFS) und den Eingangsmultiplexer geht.
 
Guten Morgen

Hallo LotadaC

Du hast natürlich recht, daß die Mehrfachzuweisung in einem String mit den Bitnamen noch übersichtlicher ist, aber ich habe das Datenblatt (-blätter) vor mir liegen und sehe das Register mit den Bezeichnungen so vor mir, wie ich es dann mit der Bitmaske auch definiere (Notfalls mit Zettelchen). Ich habe immer noch Probleme mit der Syntax in Strings. Entweder verwende ich die falschen Operatoren oder ich "klammere" zuviel oder zu wenig. Wenn mir die Bedeutung der Operatoren klarer ist und ich mit der Syntax sicherer bin, wird sich sicher eine übersichtlichere und einheitlichere Schreibweise herausbilden. Da ist von Vorteil, daß der Mensch grundsätzlich faul ist, was auch das Tippen anbelangt.

Nun aber eine andere Frage: Ich habe in Deinem Profil gelesen, daß Du auch Bascom "sprichst". Da ich ein Progrämmchen in Bascom gefunden hatte, was ich mir gerne näher angesehen hätte, habe ich mir Bascom-AVR installiert, was ja auch mit dem STK500 laufen soll. Ich bekomme, trotz Com-Zuweisung und Verwendung der STK500.exe jedoch keine Verbindung zwischen Programm und Board. Jeder Zugriff verschwindet ohne Fehlermeldung im Nirvana. Kannst Du mir da noch einen Tip geben, wo ich ansetzen kann?

Gruß Moe.
 
Das mit der Faulheit ist der entscheidende Punkt! Konsequenterweise müßte man sogar statt der verwendeten Port-Bits (PB2 usw) eigene Namen für die verwendete Funktion in der Hardware verwenden/definieren (also zB ".equ BlaueLED=PB2" oder .equ Klappe1=PB3", und dann im Programm konsequent die neuen Namen (hinter denen sich dieselbe Konstante verbirgt) is natürlich wieder ASM, ob und wie das in C ist...kA.) nutzen. Hintergrund ist, daß man bei einer eventuellen Änderung der Schaltung dann lediglich die Definition anpassen muß, und nicht im ganzen Code rumsuchen...

Inzwischen versuche ich das so, aber wie das eben mit der Faulheit ist...;)
Ja ja, die ganze rumgemoddel mit den Typen und den Klammern und so - ich weiß schon, warum ich bei Assembler bleibe. Da gibts auch nur'ne Hand voll (höchstens 131 oder so) sauber dokumentierter Instruktionen - allerdings muß man sich um jeden Kleinkram selbst kümmern. Egal...
Mit Bascom hatte ich damals mit den AVR angefangen, bin dann aber beizeiten auf ASM umgestiegen. Wenn ich mich recht erinner, habe ich aber immer das Studio (damals noch die 3er oder 4er Version) zum brennen genutzt. Insbesondere die Übersicht zu den Fuses fand ich dort übersichtlicher.
Also mit Bascom programmiert und compiliert, und dann die so erstellten HEX-Dateien mit dem Studio gebrannt. Hilft Dir jetzt sicher nicht viel.

Inzwischen nutze ich das STK selbst als Programmer (mangels echter serieller Schnittstelle) kaum noch - wenn, dann stecke ich den AVRISP MKII (als externen Programmer) auf den verwendeten ISP-Header. Folglich gehen mir damit die Einstellmöglichkeiten der Spannungen (Vtg und ARef), sowie des vom STK generierten Takt verloren.

Hmm... die COM-Nummer durfte nicht über 9 liegen, der Frequenz der ISP-Clock max 1/4 des Target-Taktes. Das Studio meckert da ggf, bei Bascom weiß ich's nicht.

Mein Vorschlag wäre, das mal im Unterforum Entwicklungsumgebungen als neues Thema zu erstellen. Möglicherweise lesen die dafür "kompetenteren Köpfe" inzwischen hier wegen der C-lastigkeit gar nicht mehr mit...

Zu Bascom wird sicher Cassio mehr sagen können, zum Zusammenspiel unterschiedlicher IDEs untereinander und mit den Programmern Dino...
(ohne jetzt irgendwem anders auf den Schlips treten zu wollen;))
 
Schnell noch antworten, bin schon wieder fast im Garten

Das mit dem Thema werd ich mir merken, wenn ich wieder mal den Bascom-AVR am Wickel habe.

Ich denke, Assembler wird mir auch mehr liegen, da mir im Zuge des "Damitbeschäftigens" immer mehr Erinnerungen an die gute alte Maschinencode/Assembler/Basic-Zeit kommen. Mir ist ja auch aufgefallen, daß in Allen C-Tutorials immer steht: "Der Kurs richtet sich an Anwender, welche Erfahrungen mit C aber keine Erfahrungen mit AVR's und Hardware haben". Ich denke, das sagt schon ne Menge.

Bevor ich weiter mache, muß aber erstmal Holz klein gemacht und die Solarversorgung für den Teichspringbrunnen auf das, endlich mal eingebuddelte, Erdkabel umgelegt werden. Anschließend harrt noch mein NRD525 (KW-Empfänger) auf die Nachrüstung des gestern gekommenen 1kHz-Filters. Naja, und dann ab Montag wieder die Malloche.

Trotzdem möchte hier mal anmerken, daß die AVR-Technik großen Spass macht, besonders wenn man im Netz Gleichgesinnte findet, da in meinem Bekanntenkreis leider solche Hobbyisten fehlen.

Also Danke nochmals für die herzliche Aufnahme und die prompte Hilfe.

Moe

@LotadaC: Grüße in meine alte Heimat, wenn Du mal hin- oder dran vorbeifährst:D
 
...Trotzdem möchte hier mal anmerken, daß die AVR-Technik großen Spass macht, besonders wenn man im Netz Gleichgesinnte findet, da in meinem Bekanntenkreis leider solche Hobbyisten fehlen...
Dafür liegste mit der Nase bei Dino vor der Haustür, wennst bei Dir an der Schwelle stolperst... (und Cassio ist auch nicht weit).
(Ich fahre da fast 'n halben Tag, zu den Forentreffen;))
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)