Sina A. schrieb:
> vorweg... ich keine ahnung von arduino. das problem ist, dass ich
> nicht
> weiss wie der arduino von innen aufgebaut ist... daher kann ich nur gut
> spekulieren ;)
>
> ja... der code sollte so funzen, auch wenn er nicht wirklich schön ist
> und aufpoliert werden kann
>
> falls du das glueck hast einen oszi in der naehe zu haben wuerde ich als
> erstes gucken ob das chipselect signal sauber ist
>
> falls es das nicht ist, wuerd ich versuchen ohne die while bremse im
> loop auszukommen... vielleicht wirkt sich das auf hintergrundprozesse
> aus? somit funzt millis net mehr?
>
> wie gesagt... ist intelligentes raten meinerseits ;)
>
> lg
Code huebsch gemacht
1 | unsigned long start,i;
|
2 |
|
3 | void setup() {
|
4 | Serial.begin(115200);
|
5 | DDRD &= ~(1<<DDD5);
|
6 | start = 0;
|
7 | }
|
8 |
|
9 | void loop() {
|
10 | while( !(PIND & (1<<PD5)) ){}
|
11 | start = millis();
|
12 | while( (PIND & (1<<PD5)) ){}
|
13 | Serial.println(millis()-start);
|
14 | }
|
Gleiches ergebnis. Also wird es am ChipSelect Signal liegen.
Witzigerweise laufen an dem Bus schon drei Geräte, die das Signal
scheinbar nicht stört, nur der Mikrocontroller nimmt es wahr.
An das Oszi komme ich erst nächste Woche, aber damit ist dann wohl der
Fehler klar, wenngleich ich noch nicht weiß wie ich den behebe