Hallo, funktioniert die UART Library von P. Fleury ohne Änderungen im Code mit dem AVR-GCC 4.1.2. Compiler? Sind SIGNAL() anstatt ISR() hierbei noch gültig? Ich erhalte die Warnung: c:/winavr-20070525/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." 9600 baud bei 16 MHz auf einem MEGA 8 sollten eigentlich funktionieren. Mit einem eigenen kleinen Testcode konnte ich Zeichen im HyperTerminal empfangen, mit der lib von Peter jedoch nicht. Grüße, Bastian
>funktioniert die UART Library von P. Fleury ohne Änderungen im Code mit >dem AVR-GCC 4.1.2. Compiler? Ja. >Sind SIGNAL() anstatt ISR() hierbei noch gültig? Ja. >Ich erhalte die Warnung: [...] Und? >9600 baud bei 16 MHz auf einem MEGA 8 sollten eigentlich funktionieren. Ja. >Mit einem eigenen kleinen Testcode konnte ich Zeichen im HyperTerminal >empfangen, mit der lib von Peter jedoch nicht. Ergo: verzichte auf die "lib".
Hallo, ich scheue mich einen neuen Thread auf zu machen, denn ich benutze ebenfalls P. Fleury's code mit AVR-GCC allerdings einem Mega32 und einem Mega128. Das_Problem : beim 32er kann ich zwar über das Hyperterminal Daten empfangen aber nicht an den µP senden.(mit P.Fleury code) Hier habe ich auch schon die SIGNAL() gegen ISR() ausgetauscht und auch die Vektorbezeichnungen selber geändert. kein Erfolg Der 128er macht mit den meißten Codes gar nichts(u.a. auch nichts mit P.Fleury) ich habe einen code gebastelt, der immerhin einzelne Ascii-zeichen senden kann allerdings keine strings. Eigentlich sollte es ja kein problem sein mit einer primitiven while schleife :
1 | //pseudocode
|
2 | uart_puts_(const char test[] const uint8_t i) |
3 | {
|
4 | uint8_t j; |
5 | while (j<=i) |
6 | {
|
7 | uart_putc(test[j]); |
8 | j++; |
9 | }
|
10 | }
|
dann auch stings zu senden, er tut es aber nicht. Kann mir bitte jemand helfen oder erklären was ich noch sonst wo einstellen muss(z.B. im makefile) bzw. für extra declarationen machen muss (a la: volatile). Oder mir sagen das ich einen ganz banalen Denkfehler mache irgendwo. Und ja, ich weiß, dass da noch codes fehlen. Ich habe die gerade nicht da, ich werde die heute Nachmittag noch nachreichen(samt makefile). @ bastian es wäre nett wenn du deinen code mit dem du es zum laufen bekommen hast für deinen mega8 mir nochmal zukommen lassen könntest. danke und Grüße Mats
Mats Burmester wrote: > ich scheue mich einen neuen Thread auf zu machen, ... Wäre aber besser gewesen. >
1 | //pseudocode
|
2 | > uart_puts_(const char test[] const uint8_t i) |
3 | > { |
4 | > uint8_t j; |
5 | > while (j<=i) |
6 | > { |
7 | > uart_putc(test[j]); |
8 | > j++; |
9 | > } |
10 | > } |
11 | >
|
Vom vergessenen Komma mal abgesehen: du solltest dringend Compilerwarnungen einschalten. Dann würde er dir nämlich sowas sagen wie `j ... possibly used uninitialized'. Wenn das aber normale C-Strings sind, braucht man die Längen- information gar nicht separat mitgeben, sondern nutzt das abschließende Zeichen '\0':
1 | uart_puts(const char *s) |
2 | {
|
3 | char c; |
4 | |
5 | while ((c = *s++) != 0) |
6 | uart_putc(c); |
7 | }
|
An manche der Kurzschreibweisen von C (Zuweisung innerhalb eines Vergleichs, Pre-/Post-Increment oder -Decrement) solltest du dich einfach lieber gewöhnen, da sie gängig sind und nicht unbedingt als `obfuscation' gelten. Auch die Dualität zwischen pointer und array sollte man verstanden haben.
hi, danke auf jenden Fall für deine schnelle Hilfe ich habe eben herausgefunden woran es lag, ich habe die chars falsch initialisiert man soltle sie über sowas initialisieren :
1 | char __attribute__ ((progmem)) inbuff[] = "none"; |
Grüße Mats
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.