Nö, er würde das senden, was im Speicher an Adresse 65 steht.
Art: Beiträge; Benutzer: sternst
Nö, er würde das senden, was im Speicher an Adresse 65 steht.
Und dir kommt es nicht irgendwie merkwürdig vor, dass der Kommentar sagt, dass etwas mit der Variable a getan werden soll, diese aber gar nicht in der Code-Zeile vorkommt?
Das ist das, was im Kommentar steht. Es sorgt dafür, dass bei der Integer-Division eine Rundung stattfindet. Aus X/Y wird (X+Y/2)/Y gemacht, so wird das Ergebnis von (z.B.) 9/5 zu 2 statt 1.
- - -...
Nö, 4000 Elemente wäre richtiger (übrigens 8000 Byte in diesem Fall).
Nö, es wären ja noch 192 Bytes frei.
static const char sinusdaten[92] PROGMEM =
^^^^
... pgm_read_word(&sinusdaten[winkel]));
^^^^
Die falsche Funktion zum Umwandeln des Variableninhalts in einen String zu benutzen, und dir so einen Überlauf vorgaukeln zu lassen, der in Wirklichkeit gar nicht da ist.
Deine ISR gibt doch gar kein 36kHz-Signal aus, statt dessen ist der Pin jeweils 880µs lang 0 oder 1. Die ISR müsste eher so aussehen:
ISR(TIMER1_COMPA_vect)
{
if ((rc5_state & 0x40) == 0x40)...
OCR0A = 125;
Wenn du im CRC-Modus eine Teilung durch 125 haben möchtest, ist 124 der richtige Wert für OCR0A. Das wäre dann schon mal ein Fehler von ca. 2,5 Min pro 5 Std. In einem früheren Code...
Was passiert, wenn im Puffer nicht mehr genug Platz für den zu sendenden String ist? Dann wartet die Lib bis wieder Platz ist. Da du aber aus einem Interrupt heraus sendest, sind Interrupts zu...
Vermutlich daran, dass du eine UART-Lib verwendest, die mit einem Puffer und Interrupt gesteuertem Senden arbeitet (Fleury?).
Es SIND aber Definitionen.
Natürlich, so muss das auch sein.
Include-Guards verhindern das mehrfache Einbinden in ein und dieselbe Datei. Das hat mit deinem Problem nicht das geringste zu tun.
Und genau dieses "Definitionen" ist hier das Problem. Die...
Ja. Es wird ja über <avr/io.h> automatisch eingebunden. Du sollst es nur nicht selber direkt einbinden, weil es nicht nur unnötig ist, sondern schlimmstenfalls andere Fehler überdeckt (wie eben einen...
Dann kompilierst du nicht für den richtigen Controller (in den Projekt-Einstellungen einstellen). Das erklärt dann auch die nicht funktionierenden Interrupts.
Nochmal: Du inkludierst immer nur...
Debug -> Options and Settings -> Tools -> Tool Settings -> Mask interrupts while stepping
BTW:
#include <avr/iom64.h>
Dies hat in deinem Code nichts zu suchen. Du inkludierst immer nur...
uint8_t SlaveAddress = 15;???
Du hast einen PWM-Modus mit variablem TOP-Wert ausgewählt, lässt diesen TOP-Wert dann aber auf 0. Wie soll da dann auch irgendein PWM-Signal raus kommen.
Ich sehe zwei Probleme:
1) Du hast den UART auf 6 Bit eingestellt.
2) Bei 9600 Baud und 1 Mhz liegt der Fehler nur dann im erlaubten Bereich, wenn man U2X benutzt, was du nicht tust.
Das Verlassen von main() ist eine ziemlich deutliche Willensbekundung des Programmierers, dass das Programm enden soll. Und daher macht der exit-Code der AVR-Libc auch genau das. Die Interrupts...
Mit dem oben gezeigten aber nicht.
Niemand sagt, dass du auf dein u16/s16 verzichten sollst. Aber wenn du es so schreibst
typedef uint16_t u16;
typedef int16_t s16;
müssen deine...
Und wie soll dieses Low zustande kommen?
Im Schaltplan sehe ich weder einen Pull-Down, noch ist der zweite Kontakt von S2 an Masse angeschlossen.
Was genau bedeutet "in die Bootsection schreibe"?
Nein, sie liegen im RAM (gut, du wirst sie natürlich auch im Flash wiederfinden, denn von irgendwo her müssen sie ja ins RAM kommen).
Ja, fragt sich nur weiterhin, warum MNUnm2 überhaupt ein...
Beim gcc kann das Verhalten über eine Option festgelegt werden, und viele Makefiles enthalten ein "-funsigned-char". Es ist schlicht ziemlich unklug im Code von "char = signed char" auszugehen. Wenn...
Nein, ist es nicht. Du hast doch selbst richtig geschrieben:
Klar muss sich letzten Endes ein "char" entweder genauso verhalten wie "signed char" oder "unsigned char". Aber was von beiden wird vom...