Beste leden,
Ik ben momenteel bezig met het ontwikkelen van men eigen canbus node. Ik heb al een printje gemaakt en alle spanningen kloppen, hij staat in een kring met de afsluitweerstanden van 120ohm en dit in verbinding met een proefbordje van eblocks met canbus. Nu heb ik alles nagemeten met de scoop en alles spanningen kloppen! Echter wanneer ik probeer te zenden zie ik niet verschijnen.
Schema kan je vinden op:
En voor het programma:
www.ggdesign.eu/canbus_node.zip (gemaakt met mplabv8.20)
Ik maak gebruik van een pic12F675 ,MCP2551 en een MCP2515 (ter vervanging van de MCP2510). ALs voorbeeld heb ik de AN215 van www.microhip.com gebruikt! Mensen met info of dingen die ik mss verkeerd doe is altijd welkom!!
Bedankt op voorhand!
controleer eens of je UART uberhaupt zend...
zit jumper J12 erop?
als dat zo is, moet het wel werken als je alleen die 120 ohm eraan hebt. (controleer ook even voeding van de transceiver)
kan zijn dat je transceiver defect is.. heb dat zelf ook al eens gehad.
[Bericht gewijzigd door High met Henk op (60%)]
Jij hebt het over de E-block zeker maar mij probleem bevindt zich niet op dit blocken gedoe maar eerder op het gene wat ik zelf ontwikkelt heb. Toch bedankt al voor de snelle reply!
E-block??
ik heb het over dit schema:
ehhmm zie alleen dat je van 1 of andere vage controller gebruik maakt: MPC2515..
dat ding ken ik niet, maar die zal een CAN uart hebben..
kan er ook geen datasheet van vinden...
waarom heb je niet een PIC met CAN uart genomen.. Of zelf iets gefabriekt. Veel handiger.
[Bericht gewijzigd door High met Henk op (13%)]
Ja die zit er inderdaad op kon even niet volgen. Als ik een paar maanden geleden meer info had gehad had het anders uitgedraaid. Ben ook nog niet volledig mee met de terminologie van het programmeren! Das eigelijk het ergste stuk. Maar krijg er in elk geval niet uit! Ookal maak ik gebruik van 2node en afsluitweerstanden enzo. En dit schema werkt via een 3-draads spi interface weet ni of dat tot uart behoord. Heeft u mss meer info over een schema met de 18F2580 of de 18f4850? Vooral dan het programma want daar snapk nu net de balle van...
Merci voor de reply
je gaat dus nu via een SPI naar een CAN controller: die stuurt CAn data serieel uit (gelijk een RS-232 op TTL) En dan naar de transceiver naar CAN.
hoezo via de afsluitdijk naar de buren?
Ik kan je geen info geven, omdat ik:
.1 niets met PIC's ken: neem gewoon een atmel met CAN uart on board!
.2 ik je code niet heb
.3 geen datasheet van dat component kan vinden.
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Je gaat gewoon via SPI naar een CAN controller, die toevallig een externe transceiver heeft. Ik zie het probleem niet zo, eigenlijk.
Persoonlijk zou ik ook een AVR of PIC met ingebouwde CAN controller hebben gebruikt, simpelweg omdat ik die niet in mijn voorraadbak heb liggen (wel CAN controllers en transceivers), en omdat je dan andere opties moet inleveren.
Bij mijn weten zijn er bijvoorbeeld geen controllers met zowel CAN als USB ingebouwd. Ik blijf zelf ook het liefst bij generieke controllers. In plaats van een CAN bus kun je er dan ook een keer een andere veldbus aan knopen.
Idd dat weetk! Dat het met een pic18F2580 ook kan maar het probleem is eigelijk de code die erin moet want ik hebt nog 3 pic18f2580 liggen. Dusja ik heb al gedacht om dit te doen maar dan zitk terug vast met het programmeren!!
Voor de datasheets 
Pic12F675:
http://ww1.microchip.com/downloads/en/DeviceDoc/41190E.pdf
MCP2515:
http://ww1.microchip.com/downloads/en/DeviceDoc/21801e.pdf
MCP2551:
http://ww1.microchip.com/downloads/en/DeviceDoc/21667E.pdf
Ik prog in C, nu maakt deze ook een ASM file aan.
Wie weet heb je hier iets aan.
Hierbij de ASM file:
(ik zal deze code binnenkort verwijderen, want deze code is erg lang
)
[Bericht gewijzigd door Henry S. op (99%)]
Ik heb de code gekopieerd voor zover al zeer bedankt!! Nu morgen het schemake maken van de 18F2580 en zien dak da me mplab kan omvormen mor da moet wel lukken denkk! Of gewoon nor hex omzetten en ineens downloade nor de pic zal wsl nog gemakkelijker zijn! Uiteindelijk zal u programma gewoon den input(data) op de canbus sturen?
Ik heb er ook nog even het Ontvangen bij gezet, copieer deze ook even.
Nu moet ik wel zeggen dat het hier ook nog niet perfect werkt, maar ik kan wal data over zenden.
Alleen als het druk is op de Bus, dan komt er soms bepaalde data niet aan...
Op mijn site staat ook een werkend CAN project http://members.lycos.nl/mmsoft/Elektronica-index.html
Daarbij controleer ik ofdat de data aan gekomen is, als dat niet zo is dan wordt deze nog een keer verstuurd.
Nu dacht ik altijd dat deze controle, en het eventeuul opnieuw zenden van deze data automatische ging bij een CAN bus...
[Bericht gewijzigd door MMSoft op (41%)]
Da bedoeling is eigelijk dat ik enkele sensoren binnenlees die dan hun waarde op de canbus zet. Ik heb een usb_can interface besteld van national instruments en deze zou deze canbus berichten terug moeten omzetten naar een waarde op de pc! Dus in principe moet ik niet ontvangen op de nodes!! Nu maar hopen dat het werkt! Als vast bedankt want ik zag het echt nimeer zitten!!
Kijk in dat geval ook eens naar de: CAN-Bus_IO_Module_PC
Daarmee kan je de data op de Bus weergeven op de PC.
Ook dit werkt niet perfect, als er erg veel data op de bus is, dan kan deze adapter het niet bij houden er wordt er wel eens iets gemist...
Ook ik heb er erg veel tijd ingestopt, en wie weet leer ik hier ook weer iets van 
[Bericht gewijzigd door MMSoft op (15%)]
opzich maakt dit niet veel uit omdat het gaat om een carrousel dus alles komt terug dus als het eens niet door komt komt het de volgende ronde mss wel door
!! Kzal het eens bezien maar bedoele bij national instruments zelf dan of algemeen op google 
Op 25 februari 2009 22:14:14 schreef MMSoft:
(ik zal deze code binnenkort verwijderen, want deze code is erg lang)
Waarom post je niet gewoon een link?
Code is verwijderd.
Zou het ook mogelijk zijn om met deze configuratie een analoogsignaal door te sturen via de canbus?? Want dat is ook een van de bedoelingen of ik moet er een analoog digitaal convertor tussen zetten ofzo!
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Je zult het signaal moeten digitaliseren voordat je het via de CAN bus kunt versturen, dat lijkt me nogal logisch.
Ik dacht mij te herinneren dat je ook een analoge waarde kon opvragen en doorsturen als een woord bijvoorbeeld! Kan iemand dit bevestigen? Indien wel digitaal analoog convertor welke stellen jullie dan voor want dit heb ik nog niet moeten toepassen!
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Ja, je kunt wel een analoge waarde doorsturen, en hoeveel bits je daarvoor gebruikt moet je lekker zelf weten. Maar waar denk je dat die bits vandaan komen?
Die ic's hebben een interne analoog digitaal convertor tegen een snelheid van 4mhz maar zijn deze sterk genoeg enzovoort, enzovoort! Dus indien iemand het zeker weet mag hij of zij altijd de info doorsturen
. Alvast bedankt mensen...
Daarbij controleer ik ofdat de data aan gekomen is, als dat niet zo is dan wordt deze nog een keer verstuurd.
Nu dacht ik altijd dat deze controle, en het eventeuul opnieuw zenden van deze data automatische ging bij een CAN bus...
Dus als er data verzonden wordt, en deze komt niet aan, wordt deze dan automatische nogmaals verzonden, of wordt er een of ander controle bitje geset, zodat je kan zien dat de data is aangekomen ?
Kan iemand hier iets over vertellen ?
Één veld van het CAN data frame is het bevestigingsveld (ACK-veld):
Dit veld bestaat uit een bevestigingsbit (acknowledge slot) en één bit bevestigingsafsluiting (acknowledge delimiter).
De zender maakt beide bits recessief 1. Als de controle, door de ontvanger uitgevoerd, positief is ( CRC klopt) dan maakt deze de bevestigingsbit dominant 0. De zender ziet dit en weet hierdoor dat minstens één ontvanger zijn bericht correct heeft ontvangen.
Info staat hier CANbus
die acknowledge zul je dan wel zelf moeten aanzetten of genereren trouwens: die is vaak niet aanwezig.
Overigens arbitrage is geregeld op bit niveau, dus het kiezen van de bericht identifier geeft tevens de prioriteit aan. als de bus in arbitrage is, kunnen de nodes niet zenden. Als de bus buiten arbitrage is wel. In het onwaarschijnlijke geval dat er 2 tegelijk beginnen te zenden, zal de bus arbitrage naar degene gaan met de hoogste prioriteit. (die trekt immers de lijn laag.
De andere node zal stoppen met zenden en vervolgens in luistermodus gaan.
als de bus vrij is, zal die node idd een hertransmissie doen.
Let dus goed op je bericht prioriteiten als je een beetje vol gaat lopen op je bus.
Overigens snap ik dan het bericht van drieske niet helemaal: de ontvanger zou een bit laag trekken?? Tja ik zend niet snel op een bus: ik ontvang liever... Maar lijkt mij gezien bovenstaand verhaal dus ERG vaag. De 1 heeft namelijk zover ik weet prioriteit boven de 0, bovendien staat het ding in listen modus..
Maar het verhaal zegt me ook helemaal niets...
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Ik dacht ook dat een 0 dominant was op de CAN bus, want de lagere adressen hebben een hogere prioriteit.