ja, habe ich, werde ich versuchen einzubinden...
danke
ja, habe ich, werde ich versuchen einzubinden...
danke
gruß inka
also das mit der 2.7 asuro lib hat nicht geklappt, habe mich also "mit der rechten hand hinterm linken ohr gekratzt":
jetzt sind drei einser in der mitte. Eigetlich dachte ich ich kann unter char"z" den asci-code des - zeichens so ausgeben lassen, hat aber auch nicht funktioniert...Code:char z; z = 111; Init(); SerWrite("\n\r --- Line Sensor Test ---",28); ... SerWrite("\n\r Phototransistorwerte links/rechts: ",39); PrintInt(data[0]); PrintInt(z); //SerWrite("\n\r !",1);
gruß inka
Hallo inka,
schade.Zitat von inka
Hier liegt der Grund für die drei 1er, Du hast PrintInt() verwendet ......Code:z = 111; ... PrintInt(z);
Flashe doch mal flogendes Programm auf Deinen Asuro und poste den Output, es werden alle ASCII-Zeichen (ohne Steuerzeichen) ausgegeben:
Die Verwendung von _UartPutc_() geschieht hier nur, um unabhängig von irgendwelchen Library-Versionen zu sein ... (ist die umbenannte Version aus der AsuroLib v270rc3)Code:#include <asuro.h> void _UartPutc_ (unsigned char zeichen) { UCSRB = 0x08; // enable transmitter UCSRA |= 0x40; // clear transmitter flag while (!(UCSRA & 0x20)) // wait for empty transmit buffer ; UDR = zeichen; while (!(UCSRA & 0x40)) // Wait for transmit complete flag (TXC) ; } int main(void) { unsigned char u; Init(); for(u=0x20; u<0x80; ++u) { _UartPutc_(u); if ((u&0x0F)==0x0F) { _UartPutc_('\r'); _UartPutc_('\n'); } } while (1); return 0; }
So sieht der Output meines Asuro aus:
Code:!"#$%&'()*+,-./ 0123456789:;<=>? @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_ `abcdefghijklmno pqrstuvwxyz{|}~
hi hermann,
ich habe ein paar zeilen aus deinem programm - gleich für das "-" zeichen angepasst - in meines reinkopiert, ich gebe zu nicht alles verstanden zu haben von dem was da in deinen zeilen stand (die komentare halfen aber immerhin um die funktion der zeile zu erahnen)
das "-" zeichen wird jetzt ausgegeben, die zweite hälfte des satzesCode:#include "asuro.h" // Prüfung der Phototransitoren /* ------------ Line Sensor Test ---------------- */ /* Left Sensor -> Left Break LED ON when Light on Left Phototransistor bright enough */ /* Right Sensor -> Right Break LED ON when Light on Right Phototransistor bright enough */ void _UartPutc_ (unsigned char zeichen) { UCSRB = 0x08; // enable transmitter UCSRA |= 0x40; // clear transmitter flag while (!(UCSRA & 0x20)) // wait for empty transmit buffer ; UDR = zeichen; while (!(UCSRA & 0x40)) // Wait for transmit complete flag (TXC) ; } int main(void) { unsigned char tmp[2] = {OFF,OFF}; unsigned int data[2]; unsigned char z; z = 0x2D; Init(); SerWrite("\n\r --- Line Sensor Test ---",28); StatusLED(OFF); FrontLED(ON); do } */ LineData(data); if (data[0] > 400) tmp[0] = ON; else tmp[0] = OFF; if (data[1] > 400) tmp[1] = ON; else tmp[1] = OFF; BackLED(tmp[0],tmp[1]); SerWrite("\n\r Phototransistorwerte--",35); PrintInt(data[0]); _UartPutc_(0x2D); //PrintInt(z); //SerWrite("\n\r !",1); //SerPrint(" "); PrintInt(data[1]); // SerWrite("\f",1); //Seitenvorschub EDIT 2: bringt Fehler bei der Ausgabe } while(1); return 0; } /* END Line Sensor Test ------------------------- */
"\n\r Phototransistorwerte : links/rechts",39"
wurde durch irgendwelche weisen rechtecke überschrieben, deshalb habe ich es abgekürzt...
fängt die funktion
_UartPutc_(0x2D);
nicht dort an auszugeben wo die vorhergehende zeile aufgehört hat?
gruß inka
Hi inka,
da hat sich der Fehlerteufel beim ersten do eingeschlichen!Zitat von inka
Dann habe ich noch \n\r geändert in \r\n, und dieses kompilierbare Programm funktioniert:Und hier Output von myIrAsuro:Code:#include "asuro.h" // Prüfung der Phototransitoren /* ------------ Line Sensor Test ---------------- */ /* Left Sensor -> Left Break LED ON when Light on Left Phototransistor bright enough */ /* Right Sensor -> Right Break LED ON when Light on Right Phototransistor bright enough */ void _UartPutc_ (unsigned char zeichen) { UCSRB = 0x08; // enable transmitter UCSRA |= 0x40; // clear transmitter flag while (!(UCSRA & 0x20)) // wait for empty transmit buffer ; UDR = zeichen; while (!(UCSRA & 0x40)) // Wait for transmit complete flag (TXC) ; } int main(void) { unsigned char tmp[2] = {OFF,OFF}; unsigned int data[2]; unsigned char z; z = 0x2D; Init(); SerWrite("\r\n --- Line Sensor Test ---",28); StatusLED(OFF); FrontLED(ON); do { LineData(data); if (data[0] > 400) tmp[0] = ON; else tmp[0] = OFF; if (data[1] > 400) tmp[1] = ON; else tmp[1] = OFF; BackLED(tmp[0],tmp[1]); SerWrite("\r\n Phototransistorwerte--",35); PrintInt(data[0]); _UartPutc_(0x2D); //PrintInt(z); //SerWrite("\n\r !",1); //SerPrint(" "); PrintInt(data[1]); // SerWrite("\f",1); //Seitenvorschub EDIT 2: bringt Fehler bei der Ausgabe } while(1); return 0; } /* END Line Sensor Test ------------------------- */Code:--- Line Sensor Test --- Phototransistorwerte-- 982-976 Phototransistorwerte-- 424-783 Phototransistorwerte-- 264-350 Phototransistorwerte-- 236-217 Phototransistorwerte-- 236-203 Phototransistorwerte-- 234-198 Phototransistorwerte-- 235-199 Phototransistorwerte-- 235-199 Phototransistorwerte-- 234-197 Phototransistorwerte-- 229-190 Phototransistorwerte-- 233-194 Phototransistorwerte-- 233-197 Phototransistorwerte-- 233-202 Phototransistorwerte-- 232-225 Phototransistorwerte-- 228-205 Phototransistorwerte-- 229-182 Phototransistorwerte-- 231-200 Phototransistorwerte-- 243-256 Phototransistorwerte-- 297-618 Phototransistorwerte-- 981-975
Hallo Hermann
ich habe dein programm ausprobiert jedoch tritt beim compilieren immer dieser error auf:
> "C:\Asuro_src\Progs\Drei\Test-all.bat"
C:\Asuro_src\Progs\Drei>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=Linie.lst Linie.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > Linie.d; \
[ -s Linie.d ] || rm -f Linie.d
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=Linie.lst Linie.c -o Linie.o
In file included from ./asuro.h:34,
from Linie.c:25:
c:/winavr/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
Linie.c: In function 'main':
Linie.c:58: error: 'LEFT' undeclared (first use in this function)
Linie.c:58: error: (Each undeclared identifier is reported only once
Linie.c:58: error: for each function it appears in.)
Linie.c:58: error: 'RIGHT' undeclared (first use in this function)
Linie.c: In function 'RaceStart':
Linie.c:114: warning: implicit declaration of function 'Msleep'
make: *** [Linie.o] Error 1
> Process Exit Code: 2
was mache ich denn falsch???
mfg
Christian
Hi Chris,
Du brauchst die Lib2.7.
_HP_
hi hermann,
das programm lässt sich kompilieren und auch flashen aber...
die ausgabe im kombiflash wie auch im hypertherminal sieht so aus:ist schon komisch...Code:Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988 Phototransi‡‹œ˜‹‡`à987-988
gruß inka
ah ok thx
muss ich dann einfach die alte lib durch die neue ersetzen oder noch was anderes machen???
danke für die schnelle Hilfe
Christian
Lesezeichen