Schulprojekt: Hochregallager
Hi,
hab mal wieder eine Frage die aber nur gering mit Robotik zu tun hat ;)
Wir sind grad dabei (kleine Gruppe) in der Schule ein 1m x 1m Modell-HRL zu programmieren.
Funktioniert auch alles soweit allerdings gibts Probleme mit der Sensorik. Irgendwie bekommen wir keine Ergebnisse von 2 Lichtsensoren am Anfang und Ende des Fliesbands (Einlagerung bis zum "Kran").
Also mal kurz eine Frage da ich auf dem Schlauch stehe:
damit ich an die Sensoren kommen muss ich dem µC erst sagen zu welchem µC ich will (insgesamt 4 hinter dem µC an dem Motoren, Sensoren etc angschlossen sind.) Das mache ich dann mit:
Code:
/* Strobe auf High */
PORTB |= (1<<PB1);
/* Adresse auf Datenport */
PORTA = 4;
/* Init mit Delay zur Uebernahme */
PORTA |=(1<<PA0);
_delay_us(10);
PORTA &= ~(1<<PA0);
/* Richtungsregister setzen */
DDRA = 0x00;
/* Strobe wieder auf low */
PORTB &= ~(1<<PB1);
/* und jetzt die eigentliche Frage */
if(PINA & 0x01) xyz=128; //<<< Geht das? ;)
Funktioniert die Abfrage am Ende so?
Denke alzu viel kann man mit dem Code nicht anfagen aber das kompl. Programm wäre noch undurchschaubarer da es nicht kommentiert ist ;)
Danke im Vorraus
Re: Schulprojekt: Hochregallager
Zitat:
Zitat von facile
Code:
if(PINA & 0x01) xyz=128; //<<< Geht das? ;)
Funktioniert die Abfrage am Ende so?
Hi!
Also die Abfrage funktioniert, ich weis nur nicht ob das das ist was du programmieren wolltest. :-)
Wenn am PA0 ein High-Pegel anliegt wird der Variable xyz der Wert 128 zugewiesen.
Soll das denn auch passieren?
Falls immer nur ein High-Pegel gemessen wird: Sind die Pull-ups aktiv?
Gruß
Re: Schulprojekt: Hochregallager
Zitat:
Zitat von error41
Falls immer nur ein High-Pegel gemessen wird: Sind die Pull-ups aktiv?
Code:
PORTA &= ~(1<<PA0);
Dadurch sollte der entsprechende Pull-Up nicht gesetzt sein, wenn das DDR auf Input steht.
Ist denn auch gewährleistet, dass direkt nachdem Strobe auf Low gesetzt wird, am PinA der gewünschte Wert anliegt?